@one-grid-core/angular 0.1.0-beta.5 → 0.1.0-beta.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"one-grid-core-angular.mjs","sources":["../../../projects/one-grid/src/lib/helpers/one-column-def.helper.ts","../../../projects/one-grid/src/lib/helpers/one-validation.helper.ts","../../../projects/one-grid/src/lib/core/instants/one-row-node.class.ts","../../../projects/one-grid/src/lib/helpers/one-filter.helper.ts","../../../projects/one-grid/src/lib/helpers/one-cell.helper.ts","../../../projects/one-grid/src/lib/core/services/og-column.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-row.service.ts","../../../projects/one-grid/src/lib/core/pipes/cell-field-value-empty.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-value-getter.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-field-value.pipe.ts","../../../projects/one-grid/src/lib/core/services/one-grid-cell.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-event.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-selection.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-expansion.service.ts","../../../projects/one-grid/src/lib/core/instants/one-grid-api.class.ts","../../../projects/one-grid/src/lib/core/services/one-grid-tree-data.service.ts","../../../projects/one-grid/src/lib/core/models/constants/one-pagination.constant.ts","../../../projects/one-grid/src/lib/core/pipes/header-checkbox-disabled.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/header-checkbox-checked.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/header-checkbox-indeterminate.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox-header/one-grid-checkbox-header.component.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox-header/one-grid-checkbox-header.component.html","../../../projects/one-grid/src/lib/core/pipes/column-sort-state.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-header/one-grid-header.component.ts","../../../projects/one-grid/src/lib/components/one-grid-header/one-grid-header.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-editable.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox/one-grid-checkbox.component.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox/one-grid-checkbox.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-disable-resolver.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-row-action/one-grid-row-action.component.ts","../../../projects/one-grid/src/lib/components/one-grid-row-action/one-grid-row-action.component.html","../../../projects/one-grid/src/lib/components/one-grid-cell-group-renderer/one-grid-cell-group-renderer.component.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-group-renderer/one-grid-cell-group-renderer.component.html","../../../projects/one-grid/src/lib/core/directives/one-cell-input-validator.directive.ts","../../../projects/one-grid/src/lib/core/directives/one-cell-renderer-component.directive.ts","../../../projects/one-grid/src/lib/core/directives/one-cell-text-expand.directive.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-option-menu/one-grid-cell-option-menu.component.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-option-menu/one-grid-cell-option-menu.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-invalid.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-selected.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-action-button-enable.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-key.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-level-padding.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-state-renderer.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-body/one-grid-body.component.ts","../../../projects/one-grid/src/lib/components/one-grid-body/one-grid-body.component.html","../../../projects/one-grid/src/lib/components/one-grid-pagination/one-grid-pagination.component.ts","../../../projects/one-grid/src/lib/components/one-grid-pagination/one-grid-pagination.component.html","../../../projects/one-grid/src/lib/components/one-grid/one-grid.component.ts","../../../projects/one-grid/src/lib/components/one-grid/one-grid.component.html","../../../projects/one-grid/src/lib/components/one-grid-status/one-grid-status.component.ts","../../../projects/one-grid/src/lib/components/one-grid-status/one-grid-status.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-action-button-visible.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-number-value.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-field.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-state-group-renderer.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-currency/one-grid-cell-currency.component.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-currency/one-grid-cell-currency.component.html","../../../projects/one-grid/src/lib/one-grid.module.ts","../../../projects/one-grid/src/public-api.ts","../../../projects/one-grid/src/one-grid-core-angular.ts"],"sourcesContent":["import { OneCellRendererParams, OneColumnDef, OneValueGetterParams } from \"../core/models/one-column-def-types.model\";\n\n/**\n * Apply Default Column Definitions\n */\nexport function applyDefaultColumnDef<T>(columnDefs: OneColumnDef<T>[], defaultColumnDef: OneColumnDef<T>): OneColumnDef<T>[] {\n\n return columnDefs.map(colDef => ({\n ...defaultColumnDef,\n ...colDef\n }));\n}\n\n/**\n * One Column Params Resolver (Cell Renderer)\n */\nexport function resolveOneCellRendererParams<T>(prop: boolean | ((params: any) => boolean), params: OneCellRendererParams<T>): boolean {\n\n return typeof prop === 'function' ? prop(params) : !!prop;\n}\n\n/**\n * One Column Params Resolver (Generics)\n */\nexport function resolveOneColumDefParams<R>(prop: R | ((params: any) => R), params: any): R {\n\n return typeof prop === 'function' ? (prop as (p: any) => R)(params) : prop;\n}\n\n/**\n * One Column Params Resolver (Value Getter)\n */\nexport function resolveOneValueGetterParams<T, R>(prop: R | ((params: OneValueGetterParams<T>) => R), params: OneValueGetterParams<T>): R {\n\n return typeof prop === 'function' ? (prop as (p: OneValueGetterParams<T>) => R) (params): prop;\n}","\nimport { OneRowNode } from \"../core/instants/one-row-node.class\";\nimport { OneColumnDef } from \"../core/models/one-column-def-types.model\";\nimport { OneValidationRules, OneValidatorFn } from \"../core/models/one-validation.model\";\n\n/**\n * One Grid Validators\n */\nexport const Validators = {\n required: (message = 'This field is required'): OneValidatorFn => {\n\n return (value) => {\n\n if (value === null || value === undefined || value === '') {\n\n return message;\n }\n\n return null;\n };\n },\n minLength: (min: number, message?: string): OneValidatorFn => {\n\n return (value) => {\n\n if (value != null && value.length < min) {\n\n return message || `Minimum length is ${min} digits`;\n }\n\n return null;\n };\n },\n maxLength: (max: number, message?: string): OneValidatorFn => {\n\n return (value) => {\n\n if (value != null && value.length > max) {\n\n return message || `Maximum length is ${max} digits`;\n }\n\n return null;\n };\n },\n pattern: (regex: RegExp, message = 'Format is not valid'): OneValidatorFn => {\n\n return (value) => {\n\n if (value != null && !regex.test(value)) {\n\n return message;\n }\n\n return null;\n };\n },\n custom: (fn: (value: any, row?: any) => string | null): OneValidatorFn => fn,\n};\n\n/**\n * One Grid Validation Rules\n */\nexport const ValidationRules: OneValidationRules = {\n required: [\n Validators.required()\n ],\n title: [\n Validators.required('Title is required'),\n Validators.minLength(1, 'Title must be at least 1 digit'),\n Validators.maxLength(250, 'Code must be less than 36 digits'),\n ],\n code: [\n Validators.required(\"Code is required\"),\n Validators.minLength(1, 'Code must be at least 1 digit'),\n Validators.maxLength(36, 'Code must be less than 36 digits'),\n ],\n email: [\n Validators.required(),\n Validators.pattern(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/, 'Email format is invalid'),\n ],\n phone: [\n Validators.required('Phone number is required'),\n Validators.pattern(/^0(10|11|12|13|14|15|16|17|18|19|20|23|24|25|26|27|28|29)\\d{7}$/, 'Phone must be a valid pattern')\n ],\n datetime: [\n Validators.required('Datetime is required'),\n ]\n};\n\n/**\n * Helper fuction to return invalid cell on UI\n */\nexport function getCellError<T>(column: OneColumnDef<T>, node: OneRowNode, value: any, row: T): string | null {\n\n if (!column?.validationRules || column?.validationRules?.length === 0) return null;\n\n if (column?.autoGroupField) {\n\n if (column.editableLevels.includes(node.level)) {\n\n for (const ruleFn of column?.validationRules) {\n\n const error = ruleFn(value, row);\n\n if (error) return error;\n }\n }\n\n return null;\n \n } else {\n\n if (!node.group) {\n\n for (const ruleFn of column?.validationRules) {\n\n const error = ruleFn(value, row);\n\n if (error) return error;\n }\n }\n\n return null;\n }\n}\n","import { Type } from \"@angular/core\";\nimport { OneCellOptions, OneCellStates } from \"../models/one-column-def-types.model\";\nimport { OneRowNodeEventMap, OneRowNodeListener } from \"../models/one-row.model\";\nimport { OneCellRendererComponent } from \"../models/one-tree-data.model\";\n\nexport class OneRowNode<T = any, D = any> {\n\n public rowId: string = null;\n public rowIndex: number = null;\n public data: T = null;\n public level: number = null;\n \n public leaf: boolean = false;\n public leafGroup: boolean = false;\n public visible: boolean = false;\n public selected: boolean = false;\n public expandable: boolean = false;\n public expanded: boolean = false;\n public group: boolean = false;\n public submitted: boolean = false;\n\n public parent: OneRowNode<T> | null = null;\n public children: OneRowNode<T>[] | null = null;\n public editing: { [field: string]: boolean } = {};\n public cellStates: OneCellStates = {};\n public cellOptions: OneCellOptions = {};\n\n public detailRowData: D[] = null;\n public detailActive: boolean = false;\n public detailRowHeight: number = null;\n public detailRendererComponent?: Type<OneCellRendererComponent>;\n\n private listeners: Map<keyof OneRowNodeEventMap<T>, Set<Function>> = new Map();\n\n constructor(rowId: string, data: T, rowIndex: number) {\n\n this.rowId = rowId;\n this.data = data;\n this.rowIndex = rowIndex;\n }\n\n setDataValue(field: string, value: any) {\n\n this.data[field] = value;\n }\n\n setSelected(selected: boolean) {\n\n this.selected = selected;\n }\n\n setRowIndex(index: number) {\n\n this.rowIndex = index;\n }\n\n setCellStates(cellStates: OneCellStates) { \n\n this.cellStates = cellStates;\n }\n\n isSelected(): boolean {\n\n return this.selected;\n }\n\n isExpanded(): boolean {\n\n return this.expanded;\n }\n\n /**\n * Event System\n */\n on<K extends keyof OneRowNodeEventMap<T>>(event: K, listener: OneRowNodeListener<T, K>): () => void {\n\n if (!this.listeners.has(event)) {\n\n this.listeners.set(event, new Set());\n }\n\n this.listeners.get(event)!.add(listener);\n\n // Return unsubscribe fn\n return () => this.off(event, listener);\n }\n\n off<K extends keyof OneRowNodeEventMap<T>>(event: K, listener: OneRowNodeListener<T, K>): void {\n\n this.listeners.get(event)?.delete(listener);\n }\n\n emit<K extends keyof OneRowNodeEventMap<T>>(event: K, payload: OneRowNodeEventMap<T>[K]): void {\n\n this.listeners.get(event)?.forEach(cb => cb(payload));\n }\n\n /**\n * Mutators that fire events\n */\n setDetailRowData(detailRowData: D[]): void {\n\n const previousDetailRowData = this.detailRowData;\n\n this.detailRowData = detailRowData;\n\n this.emit('detailRowDataChanged', {\n node: this,\n detailRowData,\n previousDetailRowData,\n });\n\n this.emit('childrenChanged', {\n node: this,\n children: this.children,\n source: 'masterDetail',\n });\n }\n\n setExpanded(expanded: boolean): void {\n\n if (this.expanded === expanded) return; // skip if no change\n\n this.expanded = expanded;\n\n this.emit('expandedChanged', { node: this, expanded });\n }\n\n destroy(): void {\n\n this.listeners.clear(); // prevent memory leaks\n }\n}\n","import { OneRowNode } from \"../core/instants/one-row-node.class\";\nimport { OneFilterModel } from \"../core/models/one-filter.model\";\n\n/**\n * Recursively filters a tree and updates each node's UI state.\n *\n * Rules:\n * - A node is visible if it matches the filters or has a matching descendant.\n * - A node is expanded if it has a matching descendant.\n *\n * @returns True if the current node or any descendant matches.\n */\nexport function filterTreeNode<T = any>(node: OneRowNode<T>, filters: OneFilterModel[] | null, quick: string): boolean {\n\n // Check whether the current node matches all active filters.\n const selfMatch = matchesAdvancedFilters(node, filters) && matchesQuickFilter(node, quick);\n\n // Recursively determine whether any child matches.\n const childMatch = node.children?.some(child => filterTreeNode(child, filters, quick)) ?? false;\n\n // Keep the node visible when it or any descendant matches.\n node.visible = selfMatch || childMatch;\n\n // Expand parents to reveal matching descendants.\n node.expanded = childMatch;\n\n return node.visible;\n}\n\n/**\n * Apply advanced per-column filters\n */\nexport function matchesAdvancedFilters<T = any>(node: OneRowNode<T>, filters: OneFilterModel[] | null): boolean {\n\n if (!filters || filters.length === 0) return true;\n\n return filters.every(filter => {\n\n const val = (node.data[filter.field as keyof T] ?? '').toString().toLowerCase();\n\n const results = filter.conditions.map(condition => {\n\n const cmp = (condition.value ?? '').toString().toLowerCase();\n\n switch (condition.operator) {\n\n case 'equals': return val === cmp;\n\n case 'contains': return val.includes(cmp);\n\n case 'startsWith': return val.startsWith(cmp);\n\n case 'endsWith': return val.endsWith(cmp);\n\n case 'greaterThan': return +val > +cmp;\n\n case 'lessThan': return +val < +cmp;\n\n default: return true; // Unknown operator = ignore\n }\n });\n\n return filter.logicOperator === 'AND' ? results.every(Boolean) : results.some(Boolean);\n });\n}\n\n/**\n * Apply quick filter across all fields\n */\nexport function matchesQuickFilter<T = any>(node: OneRowNode<T>, quick: string): boolean {\n\n if (!quick) return true;\n\n return Object.values(node.data).some(value =>\n\n (value ?? '').toString().toLowerCase().includes(quick)\n );\n}\n","import { OneColumnDef } from \"../core/models/one-column-def-types.model\";\n\n/**\n * Generate Cell Field\n */\nexport function getCellField(rowIndex: number, field: string): string {\n\n return `${rowIndex}--${field}`;\n}\n\nexport function getCellKey(rowId: string, field: string): string {\n\n return `${rowId}--${field}`;\n}\n\n/**\n * Get Value From Data Field\n */\nexport function getFieldValue<T>(data: T, field: string): string {\n\n return field?.split('.')?.reduce((obj, key) => obj?.[key], data) as string;\n}\n\n/**\n * Resolve cell style (handles both static and function-based)\n * @param column \n * @param row \n * @returns \n */\nexport function resolveCellStyle(column: OneColumnDef, row: any): { [key: string]: string } {\n\n if (!column.cellStyle) return {};\n\n return typeof column.cellStyle === 'function'\n ? column.cellStyle(row)\n : column.cellStyle;\n}\n\n/**\n * Resolve cell class (handles both static and function-based)\n * @param column \n * @param row \n * @returns \n */\nexport function resolveCellClass(column: OneColumnDef, row: any): string | string[] {\n\n if (!column.cellClass) return '';\n\n return typeof column.cellClass === 'function'\n ? column.cellClass(row)\n : column.cellClass;\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OneCellRendererParams, OneColumnDef, OneGroupColumnDef } from '../models/one-column-def-types.model';\nimport lodash from 'lodash';\nimport { ColumnChangedEvent } from '../models/one-event-types.model';\n\n@Injectable()\nexport class OgColumnService {\n\n private defaultColumnDef: OneColumnDef = null;\n private columnDefs$ = new BehaviorSubject<OneColumnDef[]>([]);\n private groupColumnDefs$ = new BehaviorSubject<OneGroupColumnDef[]>([]);\n\n initColumnDefs(defaultColumnDef: OneColumnDef, columnDefs: OneColumnDef[], groupColumnDefs: OneGroupColumnDef[]): void {\n\n this.defaultColumnDef = defaultColumnDef;\n\n this.setGroupColumnDefs(groupColumnDefs);\n \n this.setColumnDefs(columnDefs);\n }\n\n getColumnState(): ColumnChangedEvent {\n\n const columns = this.columnDefs$.getValue();\n\n const groups = this.groupColumnDefs$.getValue();\n\n return { columns, groups };\n }\n\n setGroupColumnDefs(groupColumnDefs: OneGroupColumnDef[]): void {\n\n const groups = groupColumnDefs.map((group: OneGroupColumnDef) => this.resolveGroupPresentation(group));\n\n this.groupColumnDefs$.next(groups);\n }\n\n setColumnDefs(columnDefs: OneColumnDef[]): void {\n\n const columns = columnDefs.map((col: OneColumnDef) => {\n\n const column = {\n ...this.defaultColumnDef,\n ...col,\n id: col?.field ? col.field : lodash.uniqueId('col_'),\n };\n\n return this.resolveCellPresentation(column);\n });\n\n this.recalculateGroups(columns);\n\n this.columnDefs$.next(columns);\n }\n\n // Update single column\n updateColumnDef(id: string, changes: Partial<OneColumnDef>): void {\n\n const columns = this.getColumnState().columns;\n\n const updatedColumns = columns.map(col => col.id === id ? { ...col, ...changes } : col);\n\n this.recalculateGroups(updatedColumns);\n \n this.columnDefs$.next(updatedColumns);\n }\n\n // Reorder columns\n reorderColumnDefs(fromIndex: number, toIndex: number): void {\n\n const columns = lodash.clone(this.getColumnState().columns);\n\n const [moved] = columns.splice(fromIndex, 1);\n\n columns.splice(toIndex, 0, moved);\n\n this.columnDefs$.next(columns);\n }\n\n /**\n * Group Header Columns\n */\n private recalculateGroups(columnDefs: OneColumnDef[]) {\n\n if (this.groupColumnDefs$.getValue().length > 0) {\n\n const groups = this.groupColumnDefs$.value.map(group => ({\n ...group,\n width: columnDefs.filter(c => c.groupId === group.id).reduce((sum, col) => sum + (col.width ? col.width > col.maxWidth ? col.maxWidth : col.width < col.minWidth ? col.minWidth : col.width : col.minWidth), 0)\n }));\n\n this.groupColumnDefs$.next(groups);\n }\n }\n\n resolveGroupPresentation(col: OneGroupColumnDef, params?: OneCellRendererParams): OneGroupColumnDef {\n\n col._resolvedGroupClass = typeof col.groupClass === 'function' ? col.groupClass(params) : col.groupClass;\n col._resolvedGroupStyle = typeof col.groupStyle === 'function' ? col.groupStyle(params) : col.groupStyle;\n\n return col;\n }\n\n resolveCellPresentation(col: OneColumnDef, params?: OneCellRendererParams): OneColumnDef {\n\n col._resolvedHeaderClass = typeof col.headerClass === 'function' ? col.headerClass(params) : col.headerClass;\n col._resolvedHeaderStyle = typeof col.headerStyle === 'function' ? col.headerStyle(params) : col.headerStyle;\n\n col._resolvedCellClass = typeof col.cellClass === 'function' ? col.cellClass(params) : col.cellClass;\n col._resolvedCellStyle = typeof col.cellStyle === 'function' ? col.cellStyle(params) : col.cellStyle;\n\n return col;\n }\n}","import { Injectable } from '@angular/core';\nimport { OneGridGetRowIdParams } from '../models/one-grid-types.model';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable()\nexport class OneGridRowService {\n\n private _getRowId: (params: OneGridGetRowIdParams) => string = null;\n\n /**\n * Set Row Id Funciton\n */\n public setGetRowIdFn(getRowId: (params: OneGridGetRowIdParams) => string) {\n\n this._getRowId = getRowId;\n }\n\n /**\n * Generate Unique Row ID\n */\n public generateRowId(data: any, rowIndex: number): string {\n\n if (this._getRowId) {\n\n return this._getRowId({ data, rowIndex }) ?? uuidv4();\n }\n\n return uuidv4();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: false,\n name: 'cellFieldValueEmpty'\n})\nexport class CellFieldValueEmptyPipe<T> implements PipeTransform {\n\n transform(data: T, field: string): boolean {\n\n if (!data) {\n\n return true;\n }\n \n const value = field.split('.').reduce((obj: any, key: string) => obj?.[key], data);\n \n return value === null || value === undefined || value === '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { resolveOneValueGetterParams } from '../../helpers/one-column-def.helper';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport _ from 'lodash';\n\n@Pipe({\n standalone: false,\n name: 'cellValueGetter'\n})\nexport class CellValueGetterPipe<T = any> implements PipeTransform {\n\n transform(data: T, node: OneRowNode, column: OneColumnDef, context: any): string {\n\n return resolveOneValueGetterParams(column.valueGetter, {\n data,\n rowIndex: node.rowIndex,\n node: node,\n context: context\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getFieldValue } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellFieldValue'\n})\nexport class CellFieldValuePipe<T = any> implements PipeTransform {\n\n transform(data: T, field: string): string {\n\n const value = getFieldValue(data, field);\n\n if (value === null || value === undefined) {\n\n return null;\n }\n \n if (typeof value === 'string' && value.trim() === '') {\n\n return null;\n }\n\n return value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { OneCellState, OneCellStates, OneColumnDef } from '../models/one-column-def-types.model';\nimport { CellFieldValueEmptyPipe } from '../pipes/cell-field-value-empty.pipe';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { resolveOneCellRendererParams, resolveOneValueGetterParams } from '../../helpers/one-column-def.helper';\nimport { CellValueGetterPipe } from '../pipes/cell-value-getter.pipe';\nimport { CellFieldValuePipe } from '../pipes/cell-field-value.pipe';\n\n@Injectable()\nexport class OneGridCellService {\n\n private _cellFieldValueEmpty = new CellFieldValueEmptyPipe();\n private _cellValueGetter = new CellValueGetterPipe();\n private _cellFieldValue = new CellFieldValuePipe();\n private _columnDefs: OneColumnDef[] = [];\n private _context: any;\n\n public applyColumnDefs(columnDefs: OneColumnDef[], context: any) {\n\n this._columnDefs = columnDefs;\n this._context = context;\n }\n\n /**\n * Generate New Node States\n */\n public generateCellStates(node: OneRowNode): OneCellStates | null {\n\n if (!node) return null;\n\n const newStates: OneCellStates = {};\n\n for (const column of this._columnDefs) {\n\n const field = column.field;\n\n if (field !== '_oneRowNumber') {\n\n newStates[field] = this.generateCellState(node, column) ?? node.cellStates[field] ?? { type: 'none', value: '' };\n\n } else {\n\n newStates[field] = node.cellStates[column.field];\n }\n }\n\n return newStates;\n }\n\n /**\n * Generate New Node State Based on Column Field\n */\n public generateCellState(node: OneRowNode, column: OneColumnDef): OneCellState {\n\n const isField = column.field !== undefined || column.field !== '' || column.field !== null;\n const isEmpty = this._cellFieldValueEmpty.transform(node.data, column.field);\n const isGroup = node.group || node.leafGroup;\n const isAutoGroup = column?.autoGroupField;\n\n if (column && column.cellRenderer && !isGroup) {\n\n const value = column.cellRenderer({ node, columnDef: column });\n\n return { type: 'html', value: value }\n }\n\n // 1. Cell Group Placeholder\n if (isField && isEmpty && isGroup && isAutoGroup) {\n\n return { type: 'placeholder', value: column?.cellRendererParams?.placeholder ?? this._cellValueGetter.transform(node.data, node, column, this._context) ?? '' };\n }\n\n // 2. Cell Group Text Value\n if (isField && isGroup && isAutoGroup) {\n\n const value = column?.valueGetter ? this._cellValueGetter.transform(node.data, node, column, this._context) : this._cellFieldValue.transform(node.data, column.field);\n\n return { type: 'text', value: value ?? '' };\n }\n\n // 3. Cell Placeholder\n if (isField && isEmpty && !isGroup && !isAutoGroup) {\n\n const valueGetter = this._cellValueGetter.transform(node.data, node, column, this._context);\n\n if (valueGetter) {\n\n return { type: 'text', value: valueGetter };\n }\n\n const placeholder = column?.cellRendererParams?.placeholder ?? '';\n\n return { type: 'placeholder', value: placeholder };\n }\n\n // 4. Cell Text Value\n if (isField && !(isGroup || isAutoGroup)) {\n\n const value = column?.valueGetter ? this._cellValueGetter.transform(node.data, node, column, this._context) : this._cellFieldValue.transform(node.data, column.field);\n\n return { type: 'text', value: value ?? '' };\n }\n\n // 5. Default\n return { type: 'none', value: '' };\n }\n\n /**\n * One Column Def Params Resolver\n */\n public editableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.editable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public updatableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.updatable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public disableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.disable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public dragableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.dragable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public valueGetterFn = (column: OneColumnDef, node: OneRowNode) => resolveOneValueGetterParams(column.valueGetter, { data: node.data, rowIndex: node.rowIndex, node: node, context: this._context });\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { EventPayloadMap, EventType } from '../models/one-event-types.model';\n\n@Injectable()\nexport class OneGridEventService implements OnDestroy {\n\n private events$ = new Subject<{ type: EventType; payload: any }>();\n private subscriptions: Subscription[] = [];\n\n // Dispatch event\n dispatchEvent<K extends EventType>(type: K, payload: EventPayloadMap[K]): void {\n\n this.events$.next({ type, payload });\n }\n\n // Subscribe to event\n addEventListener<K extends EventType>(type: K, handler: (payload: EventPayloadMap[K]) => void): () => void {\n\n const subscription = this.events$\n .pipe(filter(e => e.type === type), map(e => e.payload as EventPayloadMap[K]))\n .subscribe(handler);\n\n // Track subscription for bulk cleanup\n this.subscriptions.push(subscription);\n\n // Return an unsubscribe function\n return () => subscription.unsubscribe();\n }\n\n // RxJS API\n eventStream<K extends EventType>(type: K): Observable<EventPayloadMap[K]> {\n\n return this.events$.pipe(filter(e => e.type === type), map(e => e.payload as EventPayloadMap[K]));\n }\n\n /**\n * Clear All Subscriptions\n */\n ngOnDestroy(): void {\n\n this.subscriptions.forEach(sub => sub.unsubscribe());\n\n this.subscriptions = [];\n\n this.events$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { OneCheckboxState, RowSelectionMode } from '../models/one-event-types.model';\n\n@Injectable()\nexport class OneGridSelectionService {\n\n private _selectedIds = new Set<string>();\n private _selectionMode: RowSelectionMode = null;\n\n public getSelectedIds(): Set<string> {\n\n return this._selectedIds;\n }\n\n public setSelectedIds(rowIds: string[]) {\n\n this._selectedIds = new Set(rowIds);\n }\n\n public getSelectionMode(): RowSelectionMode {\n\n return this._selectionMode;\n }\n\n public setSelectionMode(mode: RowSelectionMode) {\n\n this._selectionMode = mode;\n\n if (mode === 'single' && this._selectedIds.size > 1) {\n\n // keep only one if mode is single\n const first = this._selectedIds.values().next().value;\n\n this._selectedIds = new Set([first]);\n }\n }\n\n public toggleSelection(rowId: string, selected: boolean) {\n\n if (this._selectionMode === 'single') {\n\n this._selectedIds.clear();\n }\n\n selected ? this._selectedIds.add(rowId) : this._selectedIds.delete(rowId);\n }\n\n public toggleAllSelection(allIds: string[], selected: boolean) {\n\n selected ? this._selectedIds = new Set(allIds) : this._selectedIds.clear();\n }\n\n // Header Checkbox State\n public getSelectAllState(allIds: (string)[]): OneCheckboxState {\n\n if (this._selectedIds.size === 0) return 'unchecked';\n\n if (this._selectedIds.size === allIds.length) return 'checked';\n\n return 'indeterminate';\n }\n\n public selectAll(rowIds: string[]): void {\n\n this._selectedIds = new Set(rowIds);\n }\n\n public deselectAll(): void {\n\n this._selectedIds.clear();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class OneGridExpansionService {\n\n private _expandedIds = new Set<string>();\n private _collapsedIds = new Set<string>();\n\n getExpandedIds(): Set<string> {\n\n return this._expandedIds;\n }\n\n getCollapsedIds(): Set<string> {\n\n return this._collapsedIds;\n }\n\n toggleExpanded(rowId: string, expanded: boolean): void {\n\n if (expanded) {\n\n this._expandedIds.add(rowId);\n\n this._collapsedIds.delete(rowId);\n\n } else {\n\n this._expandedIds.delete(rowId);\n\n this._collapsedIds.add(rowId);\n }\n }\n\n isExpanded(rowId: string): boolean {\n\n return this._expandedIds.has(rowId);\n }\n\n isCollapsed(rowId: string): boolean {\n\n return this._collapsedIds.has(rowId);\n }\n\n clear(): void {\n\n this._expandedIds.clear();\n\n this._collapsedIds.clear();\n }\n}\n","import { OneCellRendererComponent } from '../models/one-tree-data.model';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from \"./one-row-node.class\";\nimport { OneGridType, OneSortModel } from '../models/one-grid-types.model';\nimport { OneGridEventService } from '../services/one-grid-event.service';\nimport { OneGridSelectionService } from '../services/one-grid-selection.service';\nimport { OneValidationResult } from '../models/one-validation.model';\nimport { OneFilterModel } from \"../models/one-filter.model\";\nimport { OneGridExpansionService } from '../services/one-grid-expansion.service';\nimport { OneDetailCellRendererParams, OneGetDetailRowDataParams } from \"../models/one-master-detail.model\";\nimport { OneGridRowService } from \"../services/one-grid-row.service\";\nimport { filterTreeNode } from \"../../helpers/one-filter.helper\";\nimport { getFieldValue } from \"../../helpers/one-cell.helper\";\nimport { OneGridCellService } from '../services/one-grid-cell.service';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Injectable, Type } from \"@angular/core\";\nimport { ColumnChangedEvent, RowSelectionMode } from \"../models/one-event-types.model\";\nimport { OneGroupColumnDef } from \"../models/one-column-def-types.model\";\nimport { OgColumnService } from \"../services/og-column.service\";\n\n@Injectable()\nexport class OneGridApi<T = any> {\n\n // Core Features\n public id: string;\n public context: any = null;\n public rowSelection: RowSelectionMode = null;\n public apiType: OneGridType = null;\n public rowNodes: OneRowNode<T>[] = [];\n public sortModel: OneSortModel<T>[] = [];\n\n\n private rowHeight: number = 26;\n private headerRowHeight: number = 32;\n private _currentIndex: number = 0;\n private _quickFilterValue: string = null;\n private _activeFilters: OneFilterModel[] = [];\n\n private _visibleRowNodes: OneRowNode<T>[] = [];\n private _originalRowNodes: Map<string, OneRowNode<T>> = new Map();\n private _nodeCleanupMap = new Map<string, Array<() => void>>(); // Cleanup registry (prevents memory leaks)\n private _destroyed: boolean = false;\n\n // Advanced Features\n private treeData: boolean = false;\n private treeDataChildrenField: string = null;\n private groupDefaultExpanded: number = 0;\n\n private masterDetail: boolean = false;\n private detailCellRendererParams: OneDetailCellRendererParams;\n private detailRendererComponent?: Type<OneCellRendererComponent>;\n\n // Helper Functions\n public getDetailRowData: (params: OneGetDetailRowDataParams) => void;\n\n constructor(\n private columnService: OgColumnService,\n private rowService: OneGridRowService,\n private cellService: OneGridCellService,\n private eventService: OneGridEventService,\n private selectionService: OneGridSelectionService,\n private expansionService: OneGridExpansionService\n ) { }\n\n init(\n gridApiType: OneGridType,\n rowSelection: RowSelectionMode,\n columnDefs: OneColumnDef<T>[],\n defaultColumnDef: OneColumnDef<T>,\n context: any,\n masterDetail: boolean,\n detailCellRendererParams: OneDetailCellRendererParams,\n detailRendererComponent: Type<OneCellRendererComponent>,\n treeData: boolean,\n groupColumnDefs: OneGroupColumnDef[]\n ) {\n\n this.id = uuidv4();\n this.apiType = gridApiType;\n this.rowSelection = rowSelection;\n this.context = context;\n this.masterDetail = masterDetail;\n this.detailCellRendererParams = detailCellRendererParams;\n this.detailRendererComponent = detailRendererComponent;\n this.treeData = treeData;\n\n this.selectionService.setSelectionMode(this.rowSelection);\n this.rowService.setGetRowIdFn(this.context?.componentParent?.getRowId ?? null);\n\n this.cellService.applyColumnDefs(columnDefs, context);\n this.columnService.initColumnDefs(defaultColumnDef, columnDefs, groupColumnDefs);\n\n const columnState = this.columnService.getColumnState();\n\n setTimeout(() => this.eventService.dispatchEvent('columnChanged', columnState as ColumnChangedEvent));\n }\n\n /**\n * Create Row Node & Clear All State IDS\n */\n public setRowData(rowData: T[]) {\n\n const validRowIds = new Set<string>();\n\n // Clear All State IDS\n this.selectionService.deselectAll();\n this.expansionService.clear();\n\n // Build New Row Nodes\n this.buildRowNodes(rowData, null, 0, validRowIds);\n\n // Apply Filter\n this.applyFilters();\n\n // Remove invalid nodes from map\n for (const rowId of this._originalRowNodes.keys()) {\n\n if (!validRowIds.has(rowId)) {\n\n this._originalRowNodes.delete(rowId);\n }\n }\n }\n\n /**\n * Create Row Nodes & Not Clear State IDS\n */\n public updateRowData(rowData: T[]) {\n\n const validRowIds = new Set<string>();\n\n // Build New Row Nodes\n this.buildRowNodes(rowData, null, 0, validRowIds);\n\n // Apply Filter\n this.applyFilters();\n\n // Remove invalid nodes from map\n for (const rowId of this._originalRowNodes.keys()) {\n\n if (!validRowIds.has(rowId)) {\n\n this._originalRowNodes.delete(rowId);\n }\n }\n }\n\n /**\n * Recursive Build Row Nodes (Optimized)\n */\n private buildRowNodes<T>(\n rowData: T[],\n parent: OneRowNode<T> | null = null,\n level: number = 0,\n validRowIds: Set<string> = new Set(),\n expandedIds: Set<string> = new Set(this.expansionService.getExpandedIds()),\n collapsedIds: Set<string> = new Set(this.expansionService.getCollapsedIds()),\n selectedIds: Set<string> = new Set(this.selectionService.getSelectedIds())\n ): OneRowNode[] {\n\n if (parent === null) {\n\n this.rowNodes = [];\n this._currentIndex = 0;\n }\n\n if (!rowData?.length) return [];\n\n const nodes: OneRowNode<T>[] = [];\n\n for (const data of rowData) {\n\n const rowId = this.rowService.generateRowId(data, this._currentIndex);\n const children = (data as any)[this.treeDataChildrenField] || null;\n\n let node: OneRowNode = this._originalRowNodes.get(rowId);\n\n validRowIds.add(rowId);\n\n if (node) {\n\n node.data = data;\n node.setRowIndex(this._currentIndex);\n\n } else {\n\n node = new OneRowNode<T>(rowId, data, this._currentIndex);\n node.level = level;\n node.parent = parent;\n node.detailRendererComponent = this.detailRendererComponent;\n\n this._originalRowNodes.set(rowId, node);\n\n if (this.masterDetail) {\n\n this.subscribeToDetailChanges(node);\n }\n }\n\n const childrenExist = children && children.length >= 0;\n\n node.group = this.masterDetail ? false : childrenExist;\n node.leaf = this.masterDetail ? true : !node.group;\n node.leafGroup = this.masterDetail ? false : (node.group && !childrenExist);\n node.expandable = this.masterDetail ? true : (node.group && !node.leafGroup);\n\n const defaultExpanded = node.expandable && (level < this.groupDefaultExpanded || this.groupDefaultExpanded === -1);\n\n node.setExpanded(expandedIds.has(rowId) ? true : collapsedIds.has(rowId) ? false : defaultExpanded);\n node.setSelected(selectedIds.has(rowId));\n node.setCellStates(this.cellService.generateCellStates(node));\n\n if (this.masterDetail && this.apiType === 'master') {\n\n this.getDetailRowData({ data, node: node, successCallback: (detailRowData) => node.setDetailRowData(detailRowData) });\n }\n\n this._currentIndex++;\n this.rowNodes.push(node);\n\n nodes.push(node);\n\n node.children = this.treeData && childrenExist ? this.buildRowNodes(children || [], node, level + 1, validRowIds, expandedIds, collapsedIds, selectedIds) : [];\n }\n\n return nodes;\n }\n\n /**\n * Filter Feature\n */\n private applyFilters(): void {\n\n const filters = this._activeFilters;\n\n const quick = this._quickFilterValue?.toLowerCase() ?? '';\n\n this.rowNodes.forEach(node => filterTreeNode(node, filters, quick));\n\n this.refreshVisibleNodes();\n }\n\n /**\n * Update Row Nodes Display\n */\n private refreshVisibleNodes(): void {\n\n if (this._destroyed) return;\n\n const visibleNodes: OneRowNode[] = [];\n\n let rowNumber = 1;\n\n const visibilityCache = new Map<string, boolean>();\n\n for (const node of this.rowNodes) {\n\n const parentVisible = node.parent ? visibilityCache.get(node.parent.rowId) : true;\n\n const isVisible = node.visible && parentVisible && (!node.parent || node.parent.expanded);\n\n visibilityCache.set(node.rowId, isVisible);\n\n if (isVisible) {\n\n node.cellStates['_oneRowNumber'] = { type: 'text', value: rowNumber++ };\n\n node.cellStates = { ...node.cellStates };\n\n visibleNodes.push(node);\n\n } else {\n\n node.cellStates['_oneRowNumber'] = { type: 'none', value: null };\n }\n }\n\n this._visibleRowNodes = [...visibleNodes];\n\n this.eventService.dispatchEvent('rowDataChanged', { nodes: visibleNodes });\n }\n\n public getVisibleRowNodes(): OneRowNode<T>[] {\n\n return this._visibleRowNodes;\n }\n\n /**\n * Sorting Model Feature\n */\n public onSortChanged(sortModel: OneSortModel<T>[]) {\n\n this.sortModel = sortModel;\n\n this.applySorting();\n\n this.eventService.dispatchEvent('sortChanged', { nodes: this.rowNodes });\n }\n\n private applySorting(): void {\n\n if (this.sortModel.length === 0) {\n\n this.rowNodes = [...this._originalRowNodes.values()];\n\n return;\n }\n\n this.rowNodes = [...this._originalRowNodes.values()].sort((a, b) => {\n\n for (const sortItem of this.sortModel) {\n\n const { colId, sort } = sortItem;\n const valA = getFieldValue(a.data, colId as string);\n const valB = getFieldValue(b.data, colId as string);\n const comparisonResult = this.compareValues(valA, valB, sort);\n\n if (comparisonResult !== 0) {\n\n return comparisonResult;\n }\n }\n return 0;\n });\n }\n\n private compareValues(valA: any, valB: any, sortDirection: 'asc' | 'desc'): number {\n\n if (valA === null && valB === null) return 0;\n if (valA === null) return sortDirection === 'asc' ? 1 : -1;\n if (valB === null) return sortDirection === 'asc' ? -1 : 1;\n\n if (typeof valA === 'string' && typeof valB === 'string') {\n\n const comparison = valA.localeCompare(valB, undefined, { numeric: true });\n return sortDirection === 'asc' ? comparison : -comparison;\n }\n\n if (valA < valB) return sortDirection === 'asc' ? -1 : 1;\n if (valA > valB) return sortDirection === 'asc' ? 1 : -1;\n return 0;\n }\n\n /**\n * Row Selection Feature (Optimized)\n */\n public selectAll(): void {\n\n const rowIds: string[] = [];\n\n this._originalRowNodes.forEach(node => {\n\n node.setSelected(true);\n\n node.cellStates = { ...node.cellStates };\n\n rowIds.push(node.rowId);\n });\n\n this.selectionService.selectAll(rowIds);\n\n this.eventService.dispatchEvent('selectionChanged', { allNodesNotSelected: false, allNodesSelected: true, selected: true, node: null });\n }\n\n /**\n * Deselect all nodes (optimized)\n */\n public deselectAll(): void {\n\n this._originalRowNodes.forEach(node => {\n\n node.setSelected(false);\n\n node.cellStates = { ...node.cellStates };\n });\n\n this.selectionService.deselectAll();\n\n if (this.selectionService.getSelectionMode() === 'multiple') {\n\n this.eventService.dispatchEvent('selectionChanged', {\n allNodesNotSelected: true,\n allNodesSelected: false,\n selected: false,\n node: null\n });\n }\n }\n\n public toggleSelection(rowId: string, selected: boolean): void {\n\n const node = this.getRowNodeById(rowId);\n\n if (node) {\n\n node.setSelected(selected);\n\n this.selectionService.toggleSelection(rowId, selected);\n\n this.eventService.dispatchEvent('selectionChanged', { node, data: node.data, selected });\n }\n }\n\n public setSelectedById(rowId: string) {\n\n const node = this.getRowNodeById(rowId);\n\n if (node) {\n\n if (this.selectionService.getSelectionMode() === 'single') {\n\n this.rowNodes.forEach(rowNode => rowNode.setSelected(rowNode.rowId === node.rowId));\n\n this._originalRowNodes.forEach(rowNode => rowNode.setSelected(rowNode.rowId === node.rowId));\n\n } else {\n\n node.setSelected(true);\n }\n\n this.selectionService.toggleSelection(rowId, true);\n\n this.eventService.dispatchEvent('selectionChanged', { node, selected: true });\n }\n }\n\n public setSelectedByIds(rowIds: string[], selected: boolean = true) {\n\n rowIds.forEach(rowId => {\n\n const node = this._originalRowNodes.get(rowId);\n\n if (node) {\n\n node.setSelected(selected);\n\n node.cellStates = { ...node.cellStates };\n\n this.selectionService.toggleSelection(rowId, selected);\n }\n });\n\n this.eventService.dispatchEvent('selectionChanged', { node: null });\n }\n\n /**\n * Get & Set Functions\n */\n public getAllRowNodes(): OneRowNode<T>[] {\n\n return this.rowNodes?.length > 0 ? [...this.rowNodes] : [];\n }\n\n public getRowDataSelected(): T[] {\n\n return this.rowNodes.filter(node => node.selected).map(node => ({ ...node.data }));\n }\n\n public getSelectedRowNodes(): OneRowNode<T>[] {\n\n const nodes = this.rowNodes.filter(node => node.selected);\n\n return nodes && nodes.length > 0 ? [...nodes] : [];\n }\n\n /**\n * Column filters\n */\n public getFilterModel(): OneFilterModel[] {\n\n return this._activeFilters;\n }\n\n public setFilterModel(model: OneFilterModel[]): void {\n\n this._activeFilters = model;\n\n this.applyFilters();\n }\n\n public filterActive(field: string): boolean {\n\n return this._activeFilters.some(f => f.field === field && f.conditions.length > 0);\n }\n\n /**\n * Quick filter\n */\n public setQuickFilter(value: string): void {\n\n this._quickFilterValue = (value || '').toLowerCase();\n\n this.applyFilters();\n }\n\n /**\n * Validation Feature\n */\n public validateRow<T>(row: T, columns: OneColumnDef<T>[]): Record<string, string> {\n\n const errors: Record<string, string> = {};\n\n columns.forEach(col => {\n\n // Only check columns with validationRule\n if (!col.validationRules || col.validationRules.length === 0) return;\n\n const rules = col.validationRules;\n\n for (const rule of rules) {\n\n const error = rule(row[col.field], row);\n\n if (error) {\n\n errors[col.field as string] = error;\n\n break; // stop at first error for this column\n }\n }\n });\n\n return errors;\n }\n\n /**\n * Validate all rows and return both errors and a flag indicating if there are any errors\n */\n public validateAllRows<T>(rowData: T[], columns: OneColumnDef<T>[]): OneValidationResult<T> {\n\n const allErrors = rowData.map(row => {\n\n const errors: Record<string, string> = {};\n\n columns.forEach(col => {\n\n if (!col.validationRules || col.validationRules.length === 0) return;\n\n for (const rule of col.validationRules) {\n\n const error = rule(row[col.field], row);\n\n if (error) {\n\n errors[col.field as string] = error;\n\n break;\n }\n }\n });\n\n return errors;\n });\n\n const hasErrors = allErrors.some(err => Object.keys(err).length > 0);\n\n return { errors: allErrors, valid: !hasErrors, invalid: hasErrors };\n }\n\n /** Traverse all nodes */\n public forEachNode(callback: (node: OneRowNode<T>, index: number) => void) {\n\n const visit = (nodes: OneRowNode<T>[]) => {\n\n nodes.forEach((node, index) => {\n\n callback(node, index);\n\n if (node?.children?.length) visit(node.children);\n });\n };\n\n visit(this.rowNodes);\n }\n\n /** Traverse only leaf nodes */\n public forEachLeafNode(callback: (node: OneRowNode<T>, index: number) => void) {\n\n let leafIndex = 0;\n\n const visit = (nodes: OneRowNode<T>[]) => {\n\n nodes.forEach(node => {\n\n if (node.leaf) {\n\n callback(node, leafIndex++);\n\n } else if (node.group && node?.children?.length) {\n\n visit(node.children);\n }\n });\n };\n\n visit(this.rowNodes);\n }\n\n public getRowNodeById(rowId: string): OneRowNode<T> {\n\n return this._originalRowNodes.get(rowId);\n }\n\n /**\n * Expand/collapse a node\n */\n public setTreeDataChildrenField(field: string) {\n\n this.treeDataChildrenField = field;\n }\n\n public setGroupDefaultExpanded(defaultExpanded: number) {\n\n this.groupDefaultExpanded = defaultExpanded;\n }\n\n public toggleExpandAll(expanded: boolean) {\n\n this.forEachNode(node => {\n\n node.setExpanded(expanded);\n\n this.expansionService.toggleExpanded(node.rowId, expanded)\n });\n\n this.refreshVisibleNodes();\n }\n\n public setExpandedById(rowId: string, expanded: boolean) {\n\n const node = this._originalRowNodes.get(rowId);\n\n if (node) {\n\n node.setExpanded(expanded);\n\n this.expansionService.toggleExpanded(rowId, expanded);\n }\n\n this.refreshVisibleNodes();\n }\n\n public setExpandedByIds(rowIds: string[], expanded: boolean) {\n\n if (rowIds && rowIds.length > 0) {\n\n for (let rowId of rowIds) {\n\n const node = this._originalRowNodes.get(rowId);\n\n if (node) {\n\n node.setExpanded(expanded);\n\n this.expansionService.toggleExpanded(rowId, expanded);\n }\n }\n\n this.refreshVisibleNodes();\n }\n }\n\n public getExpandedByIds(): string[] {\n\n return Array.from(this.expansionService.getExpandedIds());\n }\n\n /**\n * Master Detail Feature\n */\n public setDetailRowData(node: OneRowNode<T>, detailData: any[]) {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.setDetailRowData(detailData);\n }\n }\n\n public setGetDetailRowData(getDetailRowData: (params: OneGetDetailRowDataParams) => void) {\n\n this.getDetailRowData = getDetailRowData;\n }\n\n /**\n * Columns State\n */\n public getColumnState(): ColumnChangedEvent {\n\n return this.columnService.getColumnState();\n }\n\n public setColumnDefs(columnDefs: OneColumnDef<T>[]): void {\n\n this.columnService.setColumnDefs(columnDefs);\n\n const columnState = this.columnService.getColumnState();\n\n this.cellService.applyColumnDefs(columnState.columns, this.context);\n\n this.eventService.dispatchEvent('columnChanged', columnState);\n }\n\n public updateColumn(id: string, changes: Partial<OneColumnDef<T>>): void {\n\n this.columnService.updateColumnDef(id, changes);\n\n const columnState = this.columnService.getColumnState();\n\n this.cellService.applyColumnDefs(columnState.columns, this.context);\n\n this.eventService.dispatchEvent('columnChanged', columnState);\n }\n\n public reorderColumnDefs(fromIndex: number, toIndex: number): void {\n\n this.columnService.reorderColumnDefs(fromIndex, toIndex);\n\n const columnState = this.columnService.getColumnState();\n\n this.eventService.dispatchEvent('columnChanged', columnState);\n }\n\n /**\n * Update checkbox selection features\n */\n public setNodeAndChildrenSelected(node: OneRowNode, selected: boolean) {\n\n const rowIds = new Set<string>();\n\n const collect = (n: OneRowNode) => {\n\n rowIds.add(n.rowId);\n\n if (n.children && n.children.length) {\n\n n.children.forEach(child => collect(child));\n }\n };\n\n collect(node);\n\n this.setSelectedByIds(Array.from(rowIds), selected);\n }\n\n public updateNodeStates(node: OneRowNode) {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.cellStates = this.cellService.generateCellStates(rowNode);\n }\n }\n\n public updateCellState(node: OneRowNode, column: OneColumnDef): void {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.cellStates[column.field] = this.cellService.generateCellState(rowNode, column);\n }\n }\n\n public updateCellStates(node: OneRowNode): void {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.cellStates = this.cellService.generateCellStates(rowNode);\n }\n }\n\n /**\n * Handler that Reacts to Detail Changes\n */\n private subscribeToDetailChanges(node: OneRowNode): void {\n\n const unsubRowData = node.on('rowDataChanged', ({ node, data, previousData }) => {\n\n\n });\n\n // When detail data arrives\n const unsubDetail = node.on('detailRowDataChanged', ({ node, detailRowData, previousDetailRowData }) => {\n\n if (this.apiType === 'master') {\n\n this._resolvedDetailRowHeight(node);\n }\n });\n\n // When row expands\n const unsubExpand = node.on('expandedChanged', ({ node, expanded }) => {\n\n // if (!expanded) return;\n\n // // Only fetch if detail data not already loaded\n // if (!node.detailRowData) {\n\n // this.getDetailRowData({ data: node.data, node, successCallback: (detailRowData) => node.setDetailRowData(detailRowData) });\n // }\n });\n\n // // Cleanup when node is removed from grid\n this.registerNodeCleanup(node.rowId, [unsubDetail, unsubExpand]);\n }\n\n private registerNodeCleanup(rowId: string, unsubs: Array<() => void>): void {\n\n // Merge with any existing cleanups for this rowId\n const existing = this._nodeCleanupMap.get(rowId) ?? [];\n\n this._nodeCleanupMap.set(rowId, [...existing, ...unsubs]);\n }\n\n private cleanupNode(rowId: string): void {\n\n const cleanups = this._nodeCleanupMap.get(rowId);\n\n cleanups?.forEach(fn => fn());\n\n this._nodeCleanupMap.delete(rowId);\n }\n\n // Call this when rows are removed\n private pruneRemovedNodes(validRowIds: Set<string>): void {\n\n for (const [rowId, node] of this._originalRowNodes) {\n\n if (!validRowIds.has(rowId)) {\n\n this.cleanupNode(rowId); // unsubscribe listeners\n\n node.destroy(); // clear node's own listener map\n\n this._originalRowNodes.delete(rowId);\n }\n }\n }\n\n /**\n * Resolve Detail Row Height\n */\n private _resolvedDetailRowHeight(node: OneRowNode): void {\n\n const minRows = this.detailCellRendererParams.detailGridOptions.detailRowHeightOptions.minRows;\n const maxRows = this.detailCellRendererParams.detailGridOptions.detailRowHeightOptions.maxRows;\n\n const minHeight = (this.rowHeight * minRows) + this.headerRowHeight;\n const maxHeight = (this.rowHeight * maxRows) + this.headerRowHeight;\n\n const rows = node.detailRowData && node.detailRowData.length ? node.detailRowData.length : 0;\n\n node.detailRowHeight = rows <= minRows ? minHeight : rows >= maxRows ? maxHeight : (this.rowHeight * rows) + this.headerRowHeight;\n }\n\n /**\n * On Destroy\n */\n public destroy(): void {\n\n if (this._destroyed) return;\n\n this._destroyed = true;\n\n this.rowNodes.forEach(node => {\n node.children = [];\n node.parent = null;\n });\n\n this.rowNodes = [];\n this._originalRowNodes.clear();\n this._currentIndex = null;\n\n // Clear services\n if (this.selectionService) {\n this.selectionService.deselectAll();\n }\n this.selectionService = null as any;\n\n if (this.expansionService) {\n this.expansionService.clear();\n }\n this.expansionService = null as any;\n\n this.eventService = null as any;\n this.rowService = null as any;\n this.cellService = null as any;\n\n // Clear filters, sorting, context\n this._activeFilters = [];\n this._quickFilterValue = null;\n this.sortModel = [];\n\n // Clear master/detail/treeData\n this.masterDetail = false;\n this.treeData = false;\n this.treeDataChildrenField = '';\n this.groupDefaultExpanded = 0;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TreeNode } from '../models/one-tree-data.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OneGridTreeDataService {\n\n create<T>(tree: TreeNode<T>[], parentId: string | null, newNode: TreeNode<T>): TreeNode<T>[] {\n \n if (!parentId) {\n\n return [newNode, ...tree];\n }\n \n return tree.map(node => {\n\n if (node.id === parentId) {\n\n return { ...node, children: [newNode, ...(node.children || [])] };\n }\n \n if (node.children) {\n\n return { ...node, children: this.create(node.children, parentId, newNode) };\n }\n \n return node;\n });\n }\n \n update<T>(tree: TreeNode<T>[], nodeId: string, updatedData: Partial<T>): TreeNode<T>[] {\n \n return tree.map(node => {\n\n if (node.id === nodeId) {\n\n return { ...node, ...updatedData };\n }\n \n if (node.children) {\n\n return { ...node, children: this.update(node.children, nodeId, updatedData) };\n }\n \n return node;\n });\n }\n\n delete<T>(tree: TreeNode<T>[], nodeId: string): TreeNode<T>[] {\n\n return tree.map(node => {\n\n if (node.children && node.children.length > 0) {\n\n return { ...node, children: this.delete(node.children, nodeId) };\n }\n\n return node;\n\n }).filter(node => node.id !== nodeId);\n }\n\n \n find<T = any>(treeData: TreeNode<T>[], nodeId: string): TreeNode<T> | null {\n \n for (const node of treeData) {\n\n if (node.id === nodeId) {\n\n return node;\n }\n \n if (node.children) {\n\n const found = this.find(node.children, nodeId);\n\n if (found) return found;\n }\n }\n \n return null;\n }\n}\n","export const OnePageSizeOption = [25, 50, 100, 250];","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { RowSelectionMode } from '../models/one-event-types.model';\n\n@Pipe({\n standalone: false,\n name: 'headerCheckboxDisabled'\n})\nexport class HeaderCheckboxDisabledPipe implements PipeTransform {\n\n transform(rowNodes: OneRowNode[], selectionMode: RowSelectionMode, allowedEdit: boolean): boolean {\n\n return rowNodes?.length === 0 || selectionMode !== 'multiple' || !allowedEdit;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { OneCheckboxState, RowSelectionMode } from '../models/one-event-types.model';\n\n@Pipe({\n standalone: false,\n name: 'headerCheckboxChecked'\n})\nexport class HeaderCheckboxCheckedPipe implements PipeTransform {\n\n transform(rowNodes: OneRowNode[], selectionMode: RowSelectionMode, state: OneCheckboxState): boolean {\n\n return rowNodes?.length > 0 && selectionMode === 'multiple' && state === 'checked';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { OneCheckboxState, RowSelectionMode } from '../models/one-event-types.model';\n\n@Pipe({\n standalone: false,\n name: 'headerCheckboxIndeterminate'\n})\nexport class HeaderCheckboxIndeterminatePipe implements PipeTransform {\n\n transform(rowNodes: OneRowNode[], selectionMode: RowSelectionMode, state: OneCheckboxState): unknown {\n\n return rowNodes?.length > 0 && selectionMode === 'multiple' && state === 'indeterminate';\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { OneGridSelectionService } from '../../core/services/one-grid-selection.service';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport {\n OneCheckboxState, RowDataChangedEvent,\n RowSelectionMode,\n SelectionChangedEvent,\n} from '../../core/models/one-event-types.model'\n\n@Component({\n standalone: false,\n selector: 'one-grid-checkbox-header',\n templateUrl: './one-grid-checkbox-header.component.html',\n styleUrl: './one-grid-checkbox-header.component.scss',\n})\nexport class OneGridCheckboxHeaderComponent<T> implements OnInit {\n\n @Input() api!: OneGridApi<T>;\n @Input() allowedEdit: boolean = false;\n\n public state: OneCheckboxState = 'unchecked';\n public rowNodes: OneRowNode<T>[] = [];\n public selectionMode: RowSelectionMode;\n\n constructor(\n private eventService: OneGridEventService,\n private selectionService: OneGridSelectionService\n ) { }\n\n ngOnInit(): void {\n\n this.selectionMode = this.api.rowSelection;\n\n /**\n * Listen Row Node Selection Changed Event\n */\n this.eventService.addEventListener('selectionChanged', (payload: SelectionChangedEvent<T>) => {\n\n this.rowNodes = this.api.getAllRowNodes();\n\n const rowIds = this.rowNodes && this.rowNodes.length > 0 ? this.rowNodes.map((node: OneRowNode<T>) => node.rowId) : [];\n\n this.state = this.selectionService.getSelectAllState(rowIds);\n });\n\n /**\n * Listen Row Data Changed Event\n */\n this.eventService.addEventListener('rowDataChanged', (payload: RowDataChangedEvent<T>) => {\n\n this.rowNodes = this.api.getAllRowNodes();\n\n const rowIds: string[] = this.rowNodes && this.rowNodes.length > 0 ? this.rowNodes.map((node: OneRowNode<T>) => node.rowId) : [];\n\n this.state = this.selectionService.getSelectAllState(rowIds);\n });\n }\n\n /**\n * Toggle Selection Action\n */\n toggleSelectionAll(event: any): void {\n\n if (this.selectionMode === 'single') return;\n\n const checked: boolean = event.target.checked;\n\n if (this.rowNodes && this.rowNodes.length > 0) {\n\n if (checked) {\n\n this.api.selectAll();\n\n } else {\n\n this.api.deselectAll();\n }\n }\n }\n}\n","<div class=\"one-grid-checkbox\">\n <input\n [id]=\"api.id\"\n [type]=\"'checkbox'\"\n [class.disabled]=\"rowNodes | headerCheckboxDisabled:selectionMode:allowedEdit\"\n [checked]=\"rowNodes | headerCheckboxChecked:selectionMode:state\"\n [indeterminate]=\"rowNodes | headerCheckboxIndeterminate:selectionMode:state\"\n (change)=\"toggleSelectionAll($event)\" />\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneSortModel } from '../models/one-grid-types.model';\n\n@Pipe({\n standalone: false,\n name: 'columnSortState'\n})\nexport class ColumnSortStatePipe implements PipeTransform {\n\n transform(field: string, sortModel: OneSortModel[]): 'asc' | 'desc' | null {\n\n if (!sortModel || !field) return null;\n\n return sortModel.find(s => s.colId === field)?.sort ?? null;\n }\n}\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { OneColumnDef, OneGroupColumnDef } from '../../core/models/one-column-def-types.model';\nimport { Subject, Subscription } from 'rxjs';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneSortModel } from '../../core/models/one-grid-types.model';\nimport { ColumnChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\n\n@Component({\n standalone: false,\n selector: 'one-grid-header',\n templateUrl: './one-grid-header.component.html',\n styleUrl: './one-grid-header.component.scss'\n})\nexport class OneGridHeaderComponent<T> implements OnInit, OnDestroy {\n\n @Input() scrollLeft = 0;\n @Input() allowedEdit: boolean = false;\n @Input() enableGroupColumnDefs: boolean = false;\n @Input() api!: OneGridApi<T>;\n\n protected groupColumnDefs: OneGroupColumnDef[] = [];\n protected columnDefs: OneColumnDef<T>[] = [];\n\n private sortModel: OneSortModel<T>[] = [];\n private destroy$ = new Subject<void>();\n private subscriptions = new Subscription();\n private draggedIndex: number | null = null;\n\n // Track resize state\n private resizing = false;\n private resizeColumnIndex: number | null = null;\n private startX = 0;\n private startWidth = 0;\n\n constructor(\n private eventService: OneGridEventService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n\n // Listen Column Changed Event\n this.subscriptions.add(this.eventService.addEventListener('columnChanged', (payload: ColumnChangedEvent) => {\n\n const { groups, columns } = payload;\n\n if (groups) {\n\n this.groupColumnDefs = groups as OneGroupColumnDef[];\n }\n\n if (columns) {\n\n this.columnDefs = columns as OneColumnDef[];\n }\n\n // this.cdr.markForCheck();\n }));\n }\n\n onHeaderMenuOptionClick(columnDef: OneColumnDef<T>) {\n\n }\n\n onHeaderMenuSortClick(colId: keyof T) {\n\n const currentSort = this.sortModel.find(sort => sort.colId === colId)?.sort ?? null;\n\n const nextSort = this.cycleSort(currentSort);\n\n this.sortModel = nextSort ? [{ colId, sort: nextSort }] : [];\n\n this.api.onSortChanged(this.sortModel);\n }\n\n // Cycle Sorting Model\n private cycleSort(current: 'asc' | 'desc' | null): 'asc' | 'desc' | null {\n\n switch (current) {\n\n case null: return 'asc';\n\n case 'asc': return 'desc';\n\n case 'desc': return null;\n\n default: return null;\n }\n }\n\n onResizeStart(event: MouseEvent, columnIndex: number): void {\n\n // Prevent text selection and default behavior\n event.preventDefault();\n event.stopPropagation();\n\n // Store initial values\n this.resizing = true;\n this.resizeColumnIndex = columnIndex;\n this.startX = event.clientX;\n this.startWidth = this.columnDefs[columnIndex].width;\n\n // Add document-level listeners for drag and release\n document.addEventListener('mousemove', this.onResizeMove);\n document.addEventListener('mouseup', this.onResizeEnd);\n\n // Add a class to body to maintain cursor during drag\n document.body.style.cursor = 'col-resize';\n }\n\n // Arrow function to preserve 'this' context\n private onResizeMove = (event: MouseEvent): void => {\n\n if (!this.resizing || this.resizeColumnIndex === null) return;\n\n // Calculate how far the mouse has moved\n const deltaX = event.clientX - this.startX;\n\n // Calculate new width (with minimum of 50px)\n const newWidth = Math.max(50, this.startWidth + deltaX);\n\n // Update the column width\n this.api.updateColumn(this.columnDefs[this.resizeColumnIndex].id, { width: newWidth });\n }\n\n private onResizeEnd = (): void => {\n\n // Clean up\n this.resizing = false;\n this.resizeColumnIndex = null;\n document.body.style.cursor = '';\n\n // Remove document listeners\n document.removeEventListener('mousemove', this.onResizeMove);\n document.removeEventListener('mouseup', this.onResizeEnd);\n }\n\n // Track the dragged column index\n onDragColumnStart(event: DragEvent, index: number): void {\n\n this.draggedIndex = index;\n\n // Optional: Set drag image/effect\n if (event.dataTransfer) {\n\n event.dataTransfer.effectAllowed = 'move';\n }\n }\n\n onDragColumnOver(event: DragEvent, targetIndex: number): void {\n\n event.preventDefault();\n\n // Skip if dragging over itself or no drag in progress\n if (this.draggedIndex === null || this.draggedIndex === targetIndex) {\n\n return;\n }\n\n // IMMEDIATELY reorder columns\n this.api.reorderColumnDefs(this.draggedIndex, targetIndex);\n\n // Update draggedIndex to the new position\n this.draggedIndex = targetIndex;\n }\n\n onDragColumnEnd(event: DragEvent): void {\n\n this.draggedIndex = null;\n }\n\n onDropColumn(event: DragEvent): void {\n\n event.preventDefault();\n\n this.draggedIndex = null;\n }\n\n /**\n * Clear All Subscriptions\n */\n ngOnDestroy(): void {\n\n this.destroy$.complete();\n }\n}\n","<div class=\"one-grid-header\">\n @if (enableGroupColumnDefs) {\n <div class=\"one-group-header-row\" [style.transform]=\"'translateX(-' + scrollLeft + 'px)'\">\n <ng-container *ngTemplateOutlet=\"groupColumns; context: { groups: groupColumnDefs }\"></ng-container>\n </div>\n }\n <div class=\"one-grid-header-viewport\">\n <div class=\"one-header-row\" [style.transform]=\"'translateX(-' + scrollLeft + 'px)'\">\n <ng-container *ngTemplateOutlet=\"headerColumns; context: { columns: columnDefs }\"></ng-container>\n </div>\n </div>\n</div>\n\n<!-- Group Header Cell Template -->\n<ng-template #groupColumns let-groups=\"groups\">\n @for(group of groups; track group.id) {\n <div class=\"one-group-header-cell\"\n [style.width.px]=\"group.width\"\n [ngClass]=\"group._resolvedGroupClass\"\n [ngStyle]=\"group._resolvedGroupStyle\">\n <div class=\"one-group-header-cell-text\">\n {{ group.headerName }}\n </div>\n </div>\n }\n</ng-template>\n\n<!-- Header Cell Template -->\n<ng-template #headerColumns let-columns=\"columns\">\n @for (col of columns; let colIndex = $index; track col.id) {\n <div class=\"one-grid-header-column\"\n [attr.data-index]=\"colIndex\"\n [style.width.px]=\"col.width\"\n [style.min-width.px]=\"col.minWidth\"\n [style.max-width.px]=\"col.maxWidth\"\n [draggable]=\"col?.dragable\"\n (dragstart)=\"onDragColumnStart($event, colIndex)\"\n (dragover)=\"onDragColumnOver($event, colIndex)\"\n (dragend)=\"onDragColumnEnd($event)\"\n (drop)=\"onDropColumn($event)\">\n <div class=\"one-grid-header-cell\"\n [ngClass]=\"col._resolvedHeaderClass\"\n [ngStyle]=\"col._resolvedHeaderStyle\"\n >\n <span class=\"one-grid-header-cell-group\">\n @if (col?.headerCheckboxSelection) {\n <one-grid-checkbox-header\n [api]=\"api\"\n [allowedEdit]=\"allowedEdit\"\n />\n }\n\n {{ col?.headerName ?? '' }}\n </span>\n\n <!-- Og Resize Handler -->\n @if (col?.resizable) {\n <div class=\"og-resize-handle\" (mousedown)=\"onResizeStart($event, colIndex)\">\n <i class=\"bi bi-grip-vertical\"></i>\n </div>\n }\n\n <div class=\"one-grid-header-cell-group\">\n\n <!-- Sort Menu Button -->\n @if (col?.sortable) {\n <div class=\"one-grid-header-menu-button\" (click)=\"onHeaderMenuSortClick(col.field)\">\n\n @if ((col.field | columnSortState:api.sortModel) === 'asc') {\n <lucide-icon name=\"arrow-up-a-z\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n }\n @else if ((col.field | columnSortState:api.sortModel) === 'desc') {\n <lucide-icon name=\"arrow-down-z-a\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n }\n @else {\n <lucide-icon name=\"arrow-down-up\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n }\n </div>\n }\n\n <!-- Og Option Menu Button -->\n @if (col && !col.suppressHeaderMenuButton) {\n <div class=\"one-grid-header-menu-button\" (click)=\"onHeaderMenuOptionClick(col)\">\n <i class=\"bi bi-three-dots-vertical\"></i>\n </div>\n }\n </div>\n </div>\n </div>\n }\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneCellStates, OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n name: 'cellEditable',\n standalone: false\n})\nexport class CellEditablePipe implements PipeTransform {\n transform(\n cellStates: OneCellStates,\n column: OneColumnDef,\n node: OneRowNode,\n editable: (column: OneColumnDef, node: OneRowNode) => boolean,\n updatable: (column: OneColumnDef, node: OneRowNode) => boolean,\n allowedEdit: boolean\n ): boolean {\n if (cellStates) {\n return (\n editable(column, node) &&\n updatable(column, node) &&\n allowedEdit &&\n !(\n column?.cellRendererParams?.validateSelectedRowOnly && !node?.selected\n ) &&\n ((node?.leaf &&\n !(node?.group && node?.leafGroup) &&\n !column?.autoGroupField) ||\n (!node?.leaf &&\n (node?.group || node?.leafGroup) &&\n column?.autoGroupField &&\n column?.editableLevels?.includes(node.level)))\n )\n }\n\n return false\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridSelectionService } from '../../core/services/one-grid-selection.service';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneGridRowActionEvent } from '../../core/models/one-grid-types.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-checkbox',\n templateUrl: './one-grid-checkbox.component.html',\n styleUrl: './one-grid-checkbox.component.scss'\n})\nexport class OneGridCheckboxComponent<T> {\n\n @Input() node: OneRowNode<T>;\n @Input() allowedEdit: boolean = false;\n @Input() api!: OneGridApi<T>;\n @Output() onRowSelection = new EventEmitter<OneGridRowActionEvent<T>>();\n\n constructor(\n private selectionService: OneGridSelectionService,\n private eventService: OneGridEventService\n ) {}\n\n onToggleSelection(event: any) {\n\n const isChecked = event.target.checked;\n const { rowId, rowIndex, data } = this.node;\n const selectionMode = this.selectionService.getSelectionMode();\n\n if (selectionMode === 'single') {\n \n this.api.deselectAll();\n\n if (isChecked) {\n\n this.node.setSelected(true);\n }\n\n this.api.toggleSelection(rowId, isChecked);\n\n } else {\n\n // Multi-select mode\n this.selectionService.toggleSelection(rowId, isChecked);\n\n this.node.setSelected(isChecked);\n }\n\n this.node.cellStates = { ...this.node.cellStates };\n\n this.eventService.dispatchEvent('selectionChanged', { rowIndex, selected: isChecked, data, node: this.node });\n\n this.onRowSelection.emit({ rowIndex, selected: isChecked, data, node: this.node });\n }\n}\n","\n<div class=\"one-grid-checkbox\">\n <input type=\"checkbox\"\n [name]=\"node.rowId\"\n [class.disabled]=\"!(allowedEdit)\"\n [checked]=\"node.selected\"\n (change)=\"onToggleSelection($event)\"/>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { resolveOneCellRendererParams } from '../../helpers/one-column-def.helper';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\n\n@Pipe({\n standalone: false,\n name: 'cellDisableResolver'\n})\nexport class CellDisableResolverPipe implements PipeTransform {\n\n transform(node: OneRowNode, column: OneColumnDef, context: any, allowedEdit: boolean): boolean {\n\n if (!column || !node) return false;\n\n return resolveOneCellRendererParams(column.disable, {\n node,\n data: node.data,\n columnDef: column,\n rowIndex: node.rowIndex,\n context\n }) || !allowedEdit;\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridRowActionEvent, OneGridType } from '../../core/models/one-grid-types.model';\nimport { OneCellRendererParams, OneColumnDef } from '../../core/models/one-column-def-types.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-row-action',\n templateUrl: './one-grid-row-action.component.html',\n styleUrl: './one-grid-row-action.component.scss'\n})\nexport class OneGridRowActionComponent<T> implements OnInit {\n\n /**\n * Get Node & Cell Renderer From Parent Component\n */\n @Input({ required: true }) column: OneColumnDef<T>;\n @Input({ required: true }) node: OneRowNode<T>;\n @Input({ required: true }) allowedEdit: boolean = false;\n @Input() masterDetail: boolean = false;\n @Input() masterNode: OneRowNode<T> = null;\n @Input() cellRendererParams: OneCellRendererParams<T>;\n @Input() gridType: OneGridType = null;\n @Input() context: any = null;\n\n /**\n * Bind Event to Parent Component\n */\n @Output() onRowGotoDetail = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowAddNew = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowView = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLocation = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDocument = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCopy = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDelete = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowGotoList = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowEdit = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowPrint = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowHistory = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLanguage = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCellOption = new EventEmitter<OneGridRowActionEvent<T>>();\n\n protected detailActiveExcludeLevels: Set<number>;\n protected gotoDetailExcludeLevels: Set<number>;\n protected addNewExcludeLevels: Set<number>;\n\n ngOnInit(): void {\n\n this.detailActiveExcludeLevels = new Set(this.column.cellRendererParams?.detailActiveExcludeLevels ?? [])\n this.gotoDetailExcludeLevels = new Set(this.column.cellRendererParams?.gotoDetailExcludeLevels ?? [])\n this.addNewExcludeLevels = new Set(this.column.cellRendererParams?.addNewExcludeLevels ?? []);\n }\n\n /**\n * Trigger Invoke Click Event\n */\n invokeRowToggleDetailActiveExpand(node: OneRowNode): void {\n\n node.detailActive = !node.detailActive;\n }\n\n invokeRowActionGotoDetail(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowGotoDetail.emit(data);\n }\n\n invokeRowActionAddNew(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowAddNew.emit(data);\n }\n\n invokeRowActionView(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowView.emit(data);\n }\n\n invokeRowActionLocation(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowLocation.emit(data);\n }\n\n invokeRowActionDocument(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowDocument.emit(data);\n }\n\n invokeRowActionCopy(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowCopy.emit(data);\n }\n\n invokeRowActionDelete(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowDelete.emit(data);\n }\n\n invokeRowActionGotoList(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowGotoList.emit(data);\n }\n\n invokeRowActionEdit(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowEdit.emit(data);\n }\n\n invokeRowActionPrint(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowPrint.emit(data);\n }\n\n invokeRowActionHistory(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowHistory.emit(data);\n }\n\n invokeRowActionOption(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowOption.emit(data);\n }\n\n invokeRowActionLanguage(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowLanguage.emit(data);\n }\n\n invokeRowActionCellOption(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowCellOption.emit(data);\n }\n}\n","@if ((cellRendererParams && node?.leaf && !column?.autoGroupField && !(node.group && node.leafGroup)) || (column?.rowActionLevels?.includes(node.level) && column?.autoGroupField)) {\n <div class=\"btn-action-container\">\n\n <!-- Expansion Button Status -->\n @if ((cellRendererParams?.detailActiveButtonStatus == 1 && !(detailActiveExcludeLevels?.has(node.level)))) {\n <a\n class=\"me-2\"\n [attr.aria-label]=\"node.detailActive ? 'Collapse row' : 'Expand row'\"\n [title]=\"node.detailActive ? 'Collapse' : 'Expand'\"\n (click)=\"invokeRowToggleDetailActiveExpand(node)\">\n\n <i class=\"bi\" [ngClass]=\"{ 'bi-chevron-down': node.detailActive, 'bi-chevron-right': !node.detailActive }\"></i>\n </a>\n }\n\n <!-- Goto Detail Button Status -->\n @if ((cellRendererParams?.gotoDetailButtonStatus == 1 && !(gotoDetailExcludeLevels?.has(node.level))) && (!column?.hideActionButton || allowedEdit)) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionGotoDetail(node, column)\">\n\n <i class=\"bi bi-list-task\"></i>\n </button>\n }\n\n <!-- Add New Button Status -->\n @if ((cellRendererParams?.addNewButtonStatus == 1 && !(addNewExcludeLevels?.has(node.level))) && (!column?.hideActionButton || allowedEdit)) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"!allowedEdit\"\n (click)=\"invokeRowActionAddNew(node, column)\">\n\n <i class=\"bi bi-plus\"></i>\n </button>\n }\n\n <!-- View Button Status -->\n @if (cellRendererParams?.viewButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionView(node, column)\">\n\n <i class=\"bi bi-eye\"></i>\n </button>\n }\n @if (cellRendererParams?.locationButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionLocation(node, column)\">\n\n <i class=\"bi bi-geo-alt\"></i>\n </button>\n }\n\n <!-- Document Button Status -->\n @if (cellRendererParams?.documentButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionDocument(node, column)\">\n\n <i class=\"bi bi-file-earmark-text\"></i>\n </button>\n }\n\n <!-- Copy Button Status -->\n @if (cellRendererParams?.copyButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionCopy(node, column)\">\n\n <i class=\"bi bi-files\"></i>\n </button>\n }\n\n\n <!-- Delete Button Status -->\n @if (cellRendererParams?.deleteButtonStatus == 1 && (!column?.hideActionButton || allowedEdit)) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-danger\"\n [class.disabled]=\"!allowedEdit\"\n (click)=\"invokeRowActionDelete(node, column)\">\n\n <i class=\"bi bi-trash3\"></i>\n </button>\n }\n\n <!-- Goto List Button Status -->\n @if (cellRendererParams?.gotoListButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-success\"\n (click)=\"invokeRowActionGotoList(node, column)\">\n\n <i class=\"bi bi-list-ul\"></i>\n </button>\n }\n\n <!-- Edit Button Status -->\n @if (cellRendererParams?.editButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionEdit(node, column)\">\n\n <i class=\"bi bi-pencil\"></i>\n </button>\n }\n\n <!-- Print Button Status -->\n @if (cellRendererParams?.printButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionPrint(node, column)\">\n\n <i class=\"bi bi-printer\"></i>\n </button>\n }\n\n <!-- History Button Status -->\n @if (cellRendererParams?.historyButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionHistory(node, column)\">\n\n <i class=\"bi bi-clock-history\"></i>\n </button>\n }\n\n <!-- Option Button Status -->\n @if (cellRendererParams?.optionButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionOption(node, column)\">\n\n <i class=\"bi bi-three-dots-vertical\"></i>\n </button>\n }\n\n <!-- Language Button Status -->\n @if (cellRendererParams?.languageButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionLanguage(node, column)\">\n\n <i class=\"bi bi-translate\"></i>\n </button>\n }\n\n <!-- Cell Optoion Button Status (Context Menu) -->\n @if (cellRendererParams?.cellOptionButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary border-0 text-body\"\n [style.background]=\"'transparent'\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionCellOption(node, column)\">\n\n <i class=\"bi bi-three-dots-vertical\"></i>\n </button>\n }\n </div>\n}","import { Component, EventEmitter, Input, Output, Type } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { ExpansionChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneDetailCellRendererParams } from '../../core/models/one-master-detail.model';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-cell-group-renderer',\n templateUrl: './one-grid-cell-group-renderer.component.html',\n styleUrl: './one-grid-cell-group-renderer.component.scss'\n})\nexport class OneGridCellGroupRendererComponent<T> {\n\n @Input() node: OneRowNode<T>;\n @Input() masterDetail: boolean = false;\n @Input() detailCellRendererParams: OneDetailCellRendererParams;\n @Input() detailRendererComponent: Type<OneCellRendererComponent>;\n @Output() expansionChanged = new EventEmitter<ExpansionChangedEvent<T>>();\n\n invokeChangedClick() {\n\n // if (this.masterDetail && !this.node.expanded) {\n\n // this.detailCellRendererParams.getDetailRowData({ data: this.node.data, node: this.node, successCallback: (rows) => { this.node.setDetailRowData(rows) }});\n // }\n\n this.expansionChanged.emit({ rowIndex: this.node.rowIndex, data: this.node.data, node: this.node });\n }\n}\n","@if (node.expandable) {\n <span class=\"cell-group-renderer\" [style.padding-left.px]=\"6\" (click)=\"invokeChangedClick()\">\n @if (node.children?.length > 0 || masterDetail) {\n <i [class.node-expanded]=\"node.expanded\" class=\"bi bi-chevron-right expansion-icon\"></i>\n }\n </span>\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { OneCellValidationType } from '../models/one-column-def-types.model';\n\n@Directive({\n standalone: false,\n selector: '[oneCellInputValidator]'\n})\nexport class OneCellInputValidatorDirective {\n\n @Input() validationType?: OneCellValidationType;\n @Input() regex?: string = '';\n\n private readonly MAX_CODE_LENGTH: number = 36;\n private readonly KHMER_CHARACTER_RANGE = /[\\u1780-\\u17FF]/;\n\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: KeyboardEvent) {\n\n let isValid = false;\n const char = event.key;\n const inputElement = this.el.nativeElement;\n\n switch (this.validationType) {\n\n case 'disabled':\n event.preventDefault();\n return;\n\n case 'integer':\n isValid = /^\\d+$/.test(char);\n break;\n\n case 'code':\n isValid = /[a-zA-Z\\d]/.test(char);\n if (isValid) {\n event.preventDefault();\n if (inputElement.value.length < this.MAX_CODE_LENGTH) {\n inputElement.value += char.toUpperCase();\n }\n }\n return;\n\n case 'title':\n isValid = /^[a-zA-Z\\s\\d]+$/.test(char) || this.KHMER_CHARACTER_RANGE.test(char);\n break;\n\n case 'number':\n isValid = /^[0-9.]$/.test(char) && !(char === '.' && inputElement.value.includes('.'));\n break;\n\n case 'regex':\n isValid = this.regex ? new RegExp(this.regex).test(char) : false;\n break;\n\n default:\n isValid = true;\n }\n\n if (!isValid) {\n event.preventDefault();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n\n if (this.validationType === 'disabled') {\n\n event.preventDefault();\n }\n }\n}","import { ComponentRef, Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, Type, ViewContainerRef } from '@angular/core';\nimport { OneCellRendererParams } from '../models/one-column-def-types.model';\nimport { OneCellRendererComponent } from '../models/one-tree-data.model';\nimport { getFieldValue } from '../../helpers/one-cell.helper';\n\n@Directive({\n standalone: false,\n selector: '[oneCellRendererComponent]'\n})\nexport class OneCellRendererComponentDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input({ required: true }) cellRendererComponent!: Type<OneCellRendererComponent>;\n @Input({ required: true }) params: OneCellRendererParams;\n\n private compRef?: ComponentRef<OneCellRendererComponent>;\n private initialized = false;\n\n constructor(private vcr: ViewContainerRef) {}\n\n ngOnInit(): void {\n\n this.initialized = true;\n\n this.createOrUpdateComponent(true);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n if (!this.initialized) return;\n\n const componentChanged = changes['cellRendererComponent'];\n \n const paramsChanged = changes['params'];\n\n if (componentChanged) {\n\n this.destroyComponent();\n\n this.createOrUpdateComponent(true);\n\n } else if (paramsChanged) {\n\n this.updateComponentInputs();\n }\n }\n\n private createOrUpdateComponent(forceCreate = false): void {\n\n if (!this.cellRendererComponent) return;\n\n if (forceCreate || !this.compRef) {\n this.vcr.clear();\n this.compRef = this.vcr.createComponent(this.cellRendererComponent);\n }\n\n this.updateComponentInputs();\n }\n\n private updateComponentInputs(): void {\n\n if (!this.compRef?.instance) return;\n\n const instance = this.compRef.instance as OneCellRendererComponent;\n\n if (typeof instance.oneInit === 'function') {\n\n const newParams = { ...this.params };\n\n newParams.value = getFieldValue(this.params.data, this.params?.columnDef?.field) ?? null;\n\n instance.oneInit(newParams);\n\n } else {\n\n Object.assign(instance, this.params);\n }\n\n // Optional: call change detector if needed\n // if (this.compRef.changeDetectorRef) {\n\n // this.compRef.changeDetectorRef.detectChanges();\n // }\n }\n\n private destroyComponent(): void {\n\n if (this.compRef) {\n\n this.compRef.destroy();\n\n this.compRef = undefined;\n }\n }\n\n ngOnDestroy(): void {\n\n this.destroyComponent();\n }\n}","import { AfterViewChecked, AfterViewInit, Directive, ElementRef, HostListener, OnDestroy, Renderer2 } from '@angular/core';\n\n@Directive({\n standalone: false,\n selector: '[oneCellTextExpand]'\n})\nexport class OneCellTextExpandDirective implements AfterViewInit, AfterViewChecked, OnDestroy {\n\n private overflowing = false;\n private timer: any;\n private lastText: string | null = null;\n\n constructor(private cell: ElementRef<HTMLElement>, private renderer: Renderer2) {}\n\n ngAfterViewInit() {\n\n this.checkOverflow();\n\n this.lastText = this.cell.nativeElement.textContent;\n }\n\n ngAfterViewChecked() {\n\n const currentText = this.cell.nativeElement.textContent;\n\n if (this.lastText !== currentText) {\n\n this.lastText = currentText;\n\n this.checkOverflow();\n\n this.collapse();\n }\n }\n\n ngOnDestroy() {\n\n clearTimeout(this.timer);\n\n this.collapse();\n }\n\n private checkOverflow() {\n\n const cell = this.cell.nativeElement;\n\n this.overflowing = cell.scrollWidth > cell.clientWidth;\n }\n\n @HostListener('window:resize')\n onResize() {\n\n this.checkOverflow();\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n\n if (!this.overflowing) return;\n\n this.timer = setTimeout(() => this.expand(), 800);\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n\n clearTimeout(this.timer);\n\n this.collapse();\n }\n\n private expand() {\n\n const cell = this.cell.nativeElement;\n\n this.renderer.setStyle(cell, 'overflow', 'visible');\n this.renderer.setStyle(cell, 'text-overflow', 'unset');\n this.renderer.setStyle(cell, 'z-index', '1000');\n this.renderer.setStyle(cell, 'background', 'var(--ins-card-bg)');\n this.renderer.setStyle(cell, 'white-space', 'nowrap');\n this.renderer.setStyle(cell, 'transition', 'width 0.3s ease');\n this.renderer.setStyle(cell, 'padding', '4px 8px');\n this.renderer.setStyle(cell, 'border-radius', '4px');\n }\n\n private collapse() {\n\n const cell = this.cell.nativeElement;\n\n this.renderer.setStyle(cell, 'white-space', 'nowrap');\n this.renderer.setStyle(cell, 'overflow', 'hidden');\n this.renderer.setStyle(cell, 'text-overflow', 'ellipsis');\n this.renderer.removeStyle(cell, 'z-index');\n this.renderer.removeStyle(cell, 'background');\n this.renderer.removeStyle(cell, 'padding');\n this.renderer.removeStyle(cell, 'border-radius');\n }\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneColumnDef } from '../../core/models/one-column-def-types.model';\nimport { CellOptionMenuSelectedEvent, OneCellOptionMenu } from '../../core/models/one-event-types.model';\n\n@Component({\n selector: 'one-grid-cell-option-menu',\n standalone: false,\n templateUrl: './one-grid-cell-option-menu.component.html',\n styleUrl: './one-grid-cell-option-menu.component.scss',\n})\nexport class OneGridCellOptionMenuComponent {\n\n @Input() column: OneColumnDef = null;\n @Input() node: OneRowNode = null;\n @Input() options: OneCellOptionMenu[] = [];\n @Output() cellOptionMenuSelect = new EventEmitter<CellOptionMenuSelectedEvent>();\n @Output() cellOptionMenuClose = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef) {}\n\n // Click outside\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n\n const target = event.target as HTMLElement;\n\n if (!this.elementRef.nativeElement.contains(target)) {\n\n this.close();\n }\n }\n\n // Escape key\n @HostListener('document:keydown.escape')\n onEscape() {\n\n this.close();\n }\n\n // Scroll closes menu (prevents misalignment)\n @HostListener('document:scroll')\n onScroll() {\n\n this.close();\n }\n\n // Option selected\n onOptionSelected(option: any) {\n\n this.cellOptionMenuSelect.emit({\n column: this.column,\n node: this.node,\n option: option\n });\n this.close();\n }\n\n // Single close method\n private close() {\n\n this.node.cellOptions[this.column.field] = false;\n this.cellOptionMenuClose.emit();\n }\n}\n","<div class=\"cell-option-menu\" #menuEl>\n @for (opt of options; track opt.value) {\n <div class=\"cell-option-menu-item\" (click)=\"onOptionSelected(opt)\">\n <!-- <span [style.padding-right.px]=\"8\"><lucide-icon name=\"check\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon></span> -->\n <span>{{ opt.text }}</span> \n </div>\n }\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellError } from '../../helpers/one-validation.helper';\nimport { OneCellStates, OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n standalone: false,\n name: 'cellInvalid'\n})\nexport class CellInvalidPipe<T> implements PipeTransform {\n\n transform(cellStates: OneCellStates, value: any, column: OneColumnDef<T>, node: OneRowNode<T>, allowedEdit: boolean, submitted: boolean): boolean {\n\n if (!column.validationRules?.length) {\n\n return false;\n }\n\n return getCellError(column, node, value, node.data) !== null && !(node.editing[column.field]) && !(column?.cellRendererParams?.validateSelectedRowOnly && !node?.selected) && allowedEdit && submitted;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellKey } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellSelected'\n})\nexport class CellSelectedPipe implements PipeTransform {\n\n transform(selectedCells: Set<string>, rowId: string, field: string): boolean {\n\n if (!selectedCells) return false;\n\n return selectedCells.has(getCellKey(rowId, field));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneCellRendererParams } from '../models/one-column-def-types.model';\n\n@Pipe({\n standalone: false,\n name: 'cellActionButtonEnable'\n})\nexport class CellActionButtonEnablePipe<T> implements PipeTransform {\n\n transform(params: OneCellRendererParams<T> | null): boolean {\n\n if (!params) {\n \n return false;\n }\n\n const statusValues = Object.values(params);\n\n return statusValues.some(status => status === 1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellKey } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellKey'\n})\nexport class CellKeyPipe implements PipeTransform {\n\n transform(rowId?: string | null, field?: string | null): string {\n\n if (!rowId || !field) {\n\n return '';\n }\n\n return getCellKey(rowId, field);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n standalone: false,\n name: 'cellLevelPadding'\n})\nexport class CellLevelPaddingPipe implements PipeTransform {\n\n transform(level: number, factor: number): number {\n\n level += 1;\n \n return level * factor;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneCellStates } from '../models/one-column-def-types.model';\n\n@Pipe({\n standalone: false,\n name: 'cellStateRenderer'\n})\nexport class CellStateRendererPipe implements PipeTransform {\n\n transform(cellStates: OneCellStates | null | undefined, field: string): string {\n\n const value = cellStates?.[field]?.value;\n\n if (value === null || value === undefined) {\n\n return null;\n }\n \n if (typeof value === 'string' && value.trim() === '') {\n\n return null;\n }\n\n return value;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef, Type, ViewChild } from '@angular/core';\nimport { CellSelection, OneCellRendererParams, OneColumnDef } from '../../core/models/one-column-def-types.model';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { Subject, Subscription } from 'rxjs';\nimport { OneGridGetRowIdParams, OneGridReadyEvent, OneGridRowActionEvent, OneGridType } from '../../core/models/one-grid-types.model';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { CellOptionMenuSelectedEvent, ColumnChangedEvent, ExpansionChangedEvent, RowDataChangedEvent, SelectionChangedEvent, SortChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneDetailCellRendererParams } from '../../core/models/one-master-detail.model';\nimport { CellEditablePipe } from '../../core/pipes/cell-editable.pipe';\nimport { getCellKey, getFieldValue } from '../../helpers/one-cell.helper';\nimport { OneGridCellService } from '../../core/services/one-grid-cell.service';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { OgColumnService } from '../../core/services/og-column.service';\n\n@Component({\n standalone: false,\n selector: 'one-grid-body',\n templateUrl: './one-grid-body.component.html',\n styleUrl: './one-grid-body.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OneGridBodyComponent<T> implements OnInit, OnDestroy {\n\n /**\n * Core Properties\n */\n @ViewChild('bodyRef', { static: true }) bodyRef!: ElementRef;\n @Input({ required: true }) rowData: T[] = [];\n @Input() rowNumber: boolean;\n @Input() api!: OneGridApi<T>;\n @Input() pagination: boolean = false;\n @Input() allowedEdit: boolean = true;\n @Input() enableGroupColumnDefs: boolean = false;\n @Input() submitted: boolean = false;\n @Input() context: any = null;\n @Input() getRowId: (params: OneGridGetRowIdParams<T>) => string;\n @Input({ required: true }) gridCopy$!: Subject<ClipboardEvent>;\n @ViewChild(CdkVirtualScrollViewport) viewport!: CdkVirtualScrollViewport;\n\n protected columnDefs: OneColumnDef<T>[] = [];\n protected cellRenderer: boolean = false;\n\n /**\n * Master Detail Properties\n */\n @Input() gridType: OneGridType = 'simple';\n @Input() masterDetail: boolean = false;\n @Input() masterNode: OneRowNode<T> = null;\n // @Input() detailRowHeight: number = null;\n // @Input() detailRowAutoHeight: boolean = false;\n @Input() detailRowMaxHeight: number = null;\n @Input() detailCellRendererParams: OneDetailCellRendererParams;\n @Input() detailGridTemplate: TemplateRef<unknown> = null;\n @Input() detailRendererComponent: Type<OneCellRendererComponent>;\n\n /**\n * Tree Data Properties\n */\n @Input() treeData: boolean = false;\n @Input() treeDataChildrenField: string;\n @Input() autoGroupColumnDef: OneColumnDef<T>;\n @Input() groupDefaultExpanded: number = -1; // It's work with master detail also\n\n /**\n * Passing Row Action Events to Parent\n */\n @Output() onRowGotoDetail = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowAddNew = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowView = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCopy = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLocation = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDocument = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDelete = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowGotoList = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowEdit = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowPrint = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowHistory = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLanguage = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCellOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowSelection = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onShiftDoubleClick = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() rowCountChanged = new EventEmitter<number>();\n\n @Output() expansionChanged = new EventEmitter<ExpansionChangedEvent<T>>();\n @Output() bodyScroll = new EventEmitter<number>();\n @Output() cellOptionSelect = new EventEmitter<any>();\n\n /**\n * Selection Range Variables\n */\n protected rowWidth: number = 0;\n protected nodes: OneRowNode<T>[] = [];\n protected selectedCells = new Set<string>();\n private isMouseDown = false;\n private startCell: CellSelection = null;\n private lastScrollLeft = 0;\n private cellEditablePipe = new CellEditablePipe();\n private subscriptions = new Subscription();\n\n protected cellRendererParams: OneCellRendererParams = {\n gotoDetailButtonStatus: 1,\n addNewButtonStatus: 1,\n viewButtonStatus: 1,\n locationButtonStatus: 1,\n documentButtonStatus: 1,\n copyButtonStatus: 1,\n deleteButtonStatus: 1,\n gotoListButtonStatus: 1,\n optionButtonStatus: 1,\n languageButtonStatus: 1,\n editButtonStatus: 1,\n printButtonStatus: 1,\n historyButtonStatus: 1,\n }\n\n /**\n * Virtual Scroll Properties\n */\n protected itemSize: number = 30;\n protected minBufferPx: number = 200;\n protected maxBufferPx: number = 400;\n\n constructor(\n protected colService: OgColumnService,\n protected cellService: OneGridCellService,\n private eventService: OneGridEventService,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n\n /**\n * Listen Grid Copy Event\n */\n this.subscriptions.add(this.gridCopy$.subscribe((event: ClipboardEvent) => {\n\n this.onGridCopy(event);\n }));\n\n /**\n * Listen Column Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('columnChanged', (payload: ColumnChangedEvent) => {\n\n this.columnDefs = [...payload.columns] as OneColumnDef[];\n\n this.cellRenderer = this.columnDefs.some(col => col.cellRendererComponent);\n\n this.rowWidth = this.columnDefs.reduce((sum, col) => sum + (col.width ? col.width > col.maxWidth ? col.maxWidth : col.width < col.minWidth ? col.minWidth : col.width : col.minWidth), 0);\n\n this.cdr.markForCheck();\n }));\n\n /**\n * Listen Row Data Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('rowDataChanged', ({ nodes }: RowDataChangedEvent<T>) => {\n\n this.rowCountChanged.emit(nodes?.length ?? 0);\n\n setTimeout(() => {\n\n this.viewport?.checkViewportSize();\n\n this.setVirtualScroll(nodes?.length);\n\n if (this.masterDetail) {\n\n this.nodes = nodes.map((node: OneRowNode) => {\n\n if (node.leaf && this.detailRendererComponent) {\n\n node.detailRendererComponent = this.detailRendererComponent;\n }\n\n if (node.expanded) {\n\n this.api.setDetailRowData(node, [...node.detailRowData]);\n }\n\n return node;\n });\n\n } else {\n\n this.nodes = nodes as OneRowNode<T>[];\n }\n\n this.cdr.markForCheck();\n });\n }));\n\n\n /**\n * Listen Sort Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('sortChanged', ({ nodes }: SortChangedEvent) => {\n\n this.nodes = nodes as OneRowNode<T>[];\n\n this.cdr.markForCheck();\n }));\n\n /**\n * Listen Selection Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('selectionChanged', (payload: SelectionChangedEvent<T>) => {\n\n if (payload) {\n\n this.cdr.markForCheck();\n }\n }));\n }\n\n onGridReady(params: OneGridReadyEvent) {\n\n params.api.setRowData(this.masterNode?.detailRowData ?? []);\n }\n\n onBodyScroll(event: Event) {\n\n const scrollLeft = (event.target as HTMLElement).scrollLeft;\n\n if (scrollLeft !== this.lastScrollLeft) {\n\n this.lastScrollLeft = scrollLeft;\n\n this.bodyScroll.emit(scrollLeft);\n return;\n }\n }\n\n /**\n * Track Rendering Row Node By Row ID\n */\n trackByRowId(index: number, node: OneRowNode<T>): string {\n\n return node.rowId;\n }\n\n /**\n * Cell Selection Range Feature\n */\n startSelection(rowId: string, field: string) {\n\n this.isMouseDown = true;\n this.startCell = { rowId, field };\n this.selectedCells.clear();\n this.selectedCells = new Set(this.selectedCells).add(getCellKey(rowId, field));\n }\n\n extendSelection(rowId: string, field: string) {\n\n if (!this.isMouseDown || !this.startCell) return;\n\n const rows = this.nodes; // already sorted\n const startRowIndex = rows.findIndex(r => r.rowId === this.startCell!.rowId);\n const endRowIndex = rows.findIndex(r => r.rowId === rowId);\n\n if (startRowIndex === -1 || endRowIndex === -1) return;\n\n const colStartIndex = this.columnDefs.findIndex(c => c.field === this.startCell!.field);\n const colEndIndex = this.columnDefs.findIndex(c => c.field === field);\n\n if (colStartIndex === -1 || colEndIndex === -1) return;\n\n const rowStart = Math.min(startRowIndex, endRowIndex);\n const rowEnd = Math.max(startRowIndex, endRowIndex);\n const colStart = Math.min(colStartIndex, colEndIndex);\n const colEnd = Math.max(colStartIndex, colEndIndex);\n\n const next = new Set<string>();\n\n for (let r = rowStart; r <= rowEnd; r++) {\n for (let c = colStart; c <= colEnd; c++) {\n next.add(getCellKey(rows[r].rowId, this.columnDefs[c].field));\n }\n }\n\n this.selectedCells = next;\n }\n\n\n endSelection() {\n\n this.isMouseDown = false;\n this.startCell = null;\n }\n\n /**\n * Clear Cells Selected\n */\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n\n if (this.bodyRef?.nativeElement) {\n\n const clickedInside = this.bodyRef.nativeElement.contains(event.target);\n\n if (!clickedInside) {\n\n this.selectedCells.clear();\n }\n }\n }\n\n /**\n * Selection Range Event Hold Mouse Click\n */\n @HostListener('document:mouseup')\n onGlobalMouseUp() {\n\n this.endSelection();\n }\n\n /**\n * Listen Copy Clipboard Event\n */\n onGridCopy(event: ClipboardEvent) {\n\n event.preventDefault();\n\n if (this.selectedCells.size > 0) {\n\n const text = this.buildClipboardText();\n\n event.clipboardData?.setData('text/plain', text);\n\n this.selectedCells.forEach(cellId => {\n\n const cellElement = document.querySelector(`[data-cell-id=\"${cellId}\"]`);\n\n if (cellElement) {\n\n cellElement.classList.add('one-cell-copied');\n\n setTimeout(() => cellElement.classList.remove('one-cell-copied'), 400);\n }\n });\n }\n }\n\n copyToClipboard(value: string) {\n\n if (navigator.clipboard?.writeText) {\n\n navigator.clipboard.writeText(value);\n\n } else {\n\n // Fallback (Safari / older browsers)\n const textarea = document.createElement('textarea');\n textarea.value = value;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n }\n }\n\n /**\n * Build Copy Cell Text to Clipboard\n */\n private buildClipboardText(): string {\n\n if (!this.selectedCells.size) return '';\n\n // Parse selected cells\n const selected = Array.from(this.selectedCells).map(key => {\n\n const [rowId, field] = key.split('--');\n return { rowId, field };\n });\n\n // Resolve visual row indexes from displayedRows\n const rowIndexes = selected\n .map(s => this.nodes.findIndex(r => r.rowId === s.rowId))\n .filter(i => i !== -1);\n\n const colIndexes = selected\n .map(s => this.columnDefs.findIndex(c => c.field === s.field))\n .filter(i => i !== -1);\n\n if (!rowIndexes.length || !colIndexes.length) return '';\n\n const rowStart = Math.min(...rowIndexes);\n const rowEnd = Math.max(...rowIndexes);\n const colStart = Math.min(...colIndexes);\n const colEnd = Math.max(...colIndexes);\n\n const selectedFields = this.columnDefs\n .slice(colStart, colEnd + 1)\n .map(c => c.field);\n\n const clipboardLines: string[] = [];\n\n for (let r = rowStart; r <= rowEnd; r++) {\n\n const row = this.nodes[r];\n const line = selectedFields\n .map(field => {\n\n const key = `${row.rowId}--${field}`;\n\n if (!this.selectedCells.has(key)) {\n\n return '';\n }\n const value = getFieldValue(row.data, field);\n\n return value ?? '';\n\n }).join('\\t');\n\n clipboardLines.push(line);\n }\n\n return clipboardLines.join('\\n');\n }\n\n /**\n * Binding Events Row Action to Parent\n */\n invokeRowActionGotoDetail(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoDetail.emit(event);\n }\n\n invokeRowActionAddNew(event: OneGridRowActionEvent<T>) {\n\n this.onRowAddNew.emit(event);\n }\n\n invokeRowActionView(event: OneGridRowActionEvent<T>) {\n\n this.onRowView.emit(event);\n }\n\n invokeRowActionLocation(event: OneGridRowActionEvent<T>) {\n\n this.onRowLocation.emit(event);\n }\n\n invokeRowActionDocument(event: OneGridRowActionEvent<T>) {\n\n this.onRowDocument.emit(event);\n }\n\n invokeRowActionCopy(event: OneGridRowActionEvent<T>) {\n\n this.onRowCopy.emit(event);\n }\n\n invokeRowActionDelete(event: OneGridRowActionEvent<T>) {\n\n this.onRowDelete.emit(event);\n }\n\n invokeRowActionGotoList(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoList.emit(event);\n }\n\n invokeRowActionEdit(event: OneGridRowActionEvent<T>) {\n\n this.onRowEdit.emit(event);\n }\n\n invokeRowActionPrint(event: OneGridRowActionEvent<T>) {\n\n this.onRowPrint.emit(event);\n }\n\n invokeRowActionHistory(event: OneGridRowActionEvent<T>) {\n\n this.onRowHistory.emit(event);\n }\n\n invokeRowActionOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowOption.emit(event);\n }\n\n invokeRowActionLanguage(event: OneGridRowActionEvent<T>) {\n\n this.onRowLanguage.emit(event);\n }\n\n invokeRowActionCellOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowCellOption.emit(event);\n }\n\n invokeRowActionSelection(event: OneGridRowActionEvent<T>) {\n\n this.onRowSelection.emit(event);\n }\n\n invokeExpansionChangedClick(event: ExpansionChangedEvent): void {\n\n this.expansionChanged.emit(event);\n }\n\n cellOptionMenuSelected(event: CellOptionMenuSelectedEvent) {\n\n this.cellOptionSelect.emit(event);\n }\n\n /**\n * Special Events\n */\n private invokeShiftDoubleClick(node:OneRowNode, column: OneColumnDef): void {\n\n let event: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n event = { ...event, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onShiftDoubleClick.emit(event);\n }\n\n /**\n * Cell Edit Feature\n */\n startEdit(event: MouseEvent, node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n const target = event.target as HTMLElement;\n\n if (target.tagName.toLowerCase() === 'i') {\n\n return;\n }\n\n if (event.shiftKey) {\n\n this.invokeShiftDoubleClick(node, column);\n return;\n }\n\n if (!this.cellEditablePipe.transform(node.cellStates, column, node, this.cellService.editableFn, this.cellService.updatableFn, this.allowedEdit)) {\n\n this.selectedCells.clear();\n\n const cellKey = getCellKey(node.rowId, column.field);\n\n this.selectedCells.add(cellKey);\n\n return;\n }\n\n let rowNode: OneRowNode = this.api.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.editing[column.field] = true;\n\n setTimeout(() => {\n\n const input = document.querySelector<HTMLInputElement>(`[data-cell-id=\"${ getCellKey(node.rowId, column.field) }\"] input`);\n\n if (input) {\n\n input.focus();\n\n const value = input.value;\n\n if (value && [\"text\"].includes(input.type)) {\n\n input.setSelectionRange(value.length, value.length);\n }\n }\n }, 10);\n }\n }\n\n /**\n * Save Cell Edit Mode\n */\n stopEdit(node: OneRowNode<T>, column: OneColumnDef<T>, event: any) {\n\n let rowNode: OneRowNode = this.api.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n event.preventDefault();\n event.stopPropagation();\n\n const value = event.target.value ?? '';\n this.setCellValueByRowId(node.rowId, column, value);\n\n rowNode.cellStates = this.cellService.generateCellStates(rowNode);\n rowNode.editing[column.field] = false;\n\n this.eventService.dispatchEvent('cellStateChanged', {\n data: rowNode.data,\n node: rowNode,\n column: column\n });\n }\n }\n\n /**\n * Cancel Cell Edit Mode\n */\n cancelEdit(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let rowNode: OneRowNode = this.api.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.editing[column.field] = false;\n }\n }\n\n /**\n * Set Cell Value\n */\n setCellValueByRowId(rowId: string, column: OneColumnDef, value: any) {\n\n const node = this.api.getRowNodeById(rowId);\n\n if (node && column.field) {\n\n if (column?.cellRendererParams?.inputType !== 'number') {\n\n node.data[column.field] = value === '' ? null : value;\n\n } else {\n\n node.data[column.field] = value === '' ? null : Number(value);\n }\n }\n }\n\n /**\n * Virtual Scroll Properties\n */\n setVirtualScroll(items: number = 0): void {\n\n this.minBufferPx = this.itemSize * items * 1.5;\n\n this.maxBufferPx = this.minBufferPx * 2;\n }\n\n /**\n * Unsubscribe All Subscriptions\n */\n ngOnDestroy(): void {\n\n this.subscriptions.unsubscribe();\n }\n}\n","<div #bodyRef class=\"one-grid-body\">\n <cdk-virtual-scroll-viewport\n class=\"one-grid-body-viewport\"\n [itemSize]=\"itemSize\"\n [minBufferPx]=\"minBufferPx\"\n [maxBufferPx]=\"maxBufferPx\"\n (scroll)=\"onBodyScroll($event)\">\n\n <ng-container *cdkVirtualFor=\"let node of nodes; trackBy: trackByRowId;\">\n \n <div class=\"one-row\" [attr.data-row-id]=\"node.rowId\" [class.one-row-selected]=\"node.selected\">\n @for (col of columnDefs; track col.field;) {\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{ node, rowIndex: node.rowIndex, column: col }\"></ng-container>\n }\n </div>\n\n <!-- Custom Detail Component -->\n @if(node.leaf && node.detailActive && node?.detailRendererComponent) {\n <ng-container\n oneCellRendererComponent\n [cellRendererComponent]=\"node?.detailRendererComponent\"\n [params]=\"{ data: node.data, rowIndex: node.rowIndex, node: node, context: context }\">\n </ng-container>\n }\n\n <!-- Master Detail Grid (template provided by the parent one-grid to avoid a compile-time import cycle) -->\n @if (masterDetail && node.expanded && node?.detailRowData) {\n <div class=\"one-row-detail-container\" [attr.data-row-id]=\"node.rowId + '-detail'\">\n <ng-container\n [ngTemplateOutlet]=\"detailGridTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node }\">\n </ng-container>\n </div>\n }\n </ng-container>\n @if (!nodes?.length) {\n <div style=\"width: max-content; border-top: 1px solid transparent;\">\n <div [style.width.px]=\"rowWidth\"></div>\n </div>\n }\n </cdk-virtual-scroll-viewport>\n @if (!nodes?.length) {\n <span class=\"one-grid-empty-message\" style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\">No Rows to Show</span>\n }\n</div>\n\n<!-- Master Column Template -->\n<ng-template #cellTemplate let-node=\"node\" let-rowIndex=\"rowIndex\" let-column=\"column\">\n <div\n class=\"one-column\"\n [attr.data-cell-id]=\"node.rowId | cellKey:column.field\"\n [style.width.px]=\"column?.width\"\n [style.min-width.px]=\"column?.minWidth\"\n [style.max-width.px]=\"column?.maxWidth\"\n [class.one-column-border-top]=\"masterDetail && nodes?.length > 0 && nodes[node.rowIndex - 1]?.expanded\"\n [class.one-cell-selected]=\"selectedCells | cellSelected:node.rowId:column.field\"\n [class.one-cell-invalid]=\"node.cellStates | cellInvalid:node.data[column.field]:column:node:allowedEdit:submitted\"\n (dblclick)=\"startEdit($event, node, column)\"\n (mousedown)=\"startSelection(node.rowId, column.field)\"\n (mouseenter)=\"extendSelection(node.rowId, column.field)\"\n (mouseup)=\"endSelection()\">\n\n <!-- One Grid Cell Option -->\n @if (node.cellOptions[column.field]) {\n <one-grid-cell-option-menu\n #contextOptionMenuRef\n [node]=\"node\"\n [column]=\"column\"\n [options]=\"column.cellOptionMenu\"\n (cellOptionMenuSelect)=\"cellOptionMenuSelected($event)\"/>\n }\n\n <!-- Grid Cell Template -->\n @if(column?.cellRendererComponent) {\n <ng-container\n oneCellRendererComponent\n [cellRendererComponent]=\"column?.cellRendererComponent\"\n [params]=\"{ data: node.data, field: column.field, rowIndex: node.rowIndex, columnDef: column, node: node, context: context }\">\n </ng-container>\n }\n @else if (node.editing[column.field]) {\n <!-- Cell Editing Input -->\n <input class=\"one-cell-input\"\n name=\"{{ node.rowId + '' + column.field }}\"\n oneCellInputValidator\n [validationType]=\"column?.cellRendererParams?.inputType === 'number' ? 'number' : 'none'\"\n [placeholder]=\"column?.cellRendererParams?.placeholder\"\n [type]=\"column?.cellRendererParams?.inputType === 'number' ? 'text' : column?.cellRendererParams?.inputType\"\n [value]=\"node?.data[column?.field]\"\n [maxLength]=\"250\"\n (blur)=\"stopEdit(node, column, $event)\"\n (keydown.enter)=\"stopEdit(node, column, $event)\"\n (keydown.esc)=\"cancelEdit(node, column)\"\n />\n }\n @else if (column?.cellRenderer) {\n <div\n [ngStyle]=\"{ width: column.width + 'px' , position: 'relative' }\"\n [innerHTML]=\"node.cellStates | cellStateRenderer:column.field\"\n [class.editable-active]=\"node.cellStates | cellEditable:column:node:cellService.editableFn:cellService.updatableFn:allowedEdit\">\n </div>\n }\n @else {\n <div class=\"one-cell\"\n [class.align-content-left]=\"column?.alignContent === 'left'\"\n [class.align-content-center]=\"column?.alignContent === 'center'\"\n [class.align-content-right]=\"column?.alignContent === 'right'\"\n [ngClass]=\"colService.resolveCellPresentation(column, { node, data: node.data, columnDef: column })._resolvedCellClass\"\n [ngStyle]=\"colService.resolveCellPresentation(column, { node, data: node.data, columnDef: column })._resolvedCellStyle\"\n [style.padding-left.px]=\"column.autoGroupField && node.level | cellLevelPadding:24\"\n [class.one-cell-allowed-edit-active]=\"node.cellStates | cellEditable:column:node:cellService.editableFn:cellService.updatableFn:allowedEdit\">\n\n <!-- Cell Checkbox Selection -->\n @if (column?.checkboxSelection) {\n <one-grid-checkbox\n [node]=\"node\"\n [allowedEdit]=\"allowedEdit\"\n [api]=\"api\"\n (onRowSelection)=\"invokeRowActionSelection($event)\"\n />\n }\n\n <!-- Expand & Collapse Icon -->\n @if (((node?.group || detailRendererComponent) && column?.autoGroupField) || (masterDetail && node?.expandable && gridType === 'master' && column?.masterGroupField)) {\n <one-grid-cell-group-renderer\n [node]=\"node\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailRendererComponent]=\"detailRendererComponent\"\n (expansionChanged)=\"invokeExpansionChangedClick($event)\"\n />\n }\n\n @if(column?.cellRendererComponent) {\n <ng-container\n oneCellRendererComponent\n [cellRendererComponent]=\"column?.cellRendererComponent\"\n [params]=\"{ data: node.data, field: column.field, rowIndex: node.rowIndex, columnDef: column, node: node, context: context }\">\n </ng-container>\n }\n @else {\n <!-- Cell Value OR Placeholder -->\n <div oneCellTextExpand class=\"one-cell-text\" [class.one-cell-placeholder]=\"node.cellStates[column.field]?.type === 'placeholder'\">\n {{ (node.cellStates | cellStateRenderer:column.field) }}\n </div>\n }\n\n <!-- Cell Action Buttons -->\n @if (column.cellRendererParams | cellActionButtonEnable) {\n <one-grid-row-action\n [ngStyle]=\"{ marginLeft: 'auto' }\"\n [column]=\"column\"\n [node]=\"node\"\n [allowedEdit]=\"allowedEdit\"\n [masterNode]=\"masterNode\"\n [masterDetail]=\"masterDetail\"\n [gridType]=\"gridType\"\n [context]=\"context\"\n [cellRendererParams]=\"column?.cellRendererParams\"\n (onRowGotoDetail)=\"invokeRowActionGotoDetail($event)\"\n (onRowAddNew)=\"invokeRowActionAddNew($event)\"\n (onRowView)=\"invokeRowActionView($event)\"\n (onRowLocation)=\"invokeRowActionLocation($event)\"\n (onRowDocument)=\"invokeRowActionDocument($event)\"\n (onRowCopy)=\"invokeRowActionCopy($event)\"\n (onRowDelete)=\"invokeRowActionDelete($event)\"\n (onRowGotoList)=\"invokeRowActionGotoList($event)\"\n (onRowEdit)=\"invokeRowActionEdit($event)\"\n (onRowPrint)=\"invokeRowActionPrint($event)\"\n (onRowHistory)=\"invokeRowActionHistory($event)\"\n (onRowOption)=\"invokeRowActionOption($event)\"\n (onRowLanguage)=\"invokeRowActionLanguage($event)\"\n (onRowCellOption)=\"invokeRowActionCellOption($event)\"\n />\n }\n </div>\n }\n </div>\n</ng-template>\n","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OnePaginationParams } from '../../core/models/one-pagination-types.model';\nimport { OnePageSizeOption } from '../../core/models/constants/one-pagination.constant';\n\n@Component({\n standalone: false,\n selector: 'one-grid-pagination',\n templateUrl: './one-grid-pagination.component.html',\n styleUrl: './one-grid-pagination.component.scss'\n})\nexport class OneGridPaginationComponent implements AfterViewInit {\n\n @Input() paginate: OnePaginationParams = {\n total: 0,\n currentPage: 1,\n lastPage: 1,\n perPage: 25,\n firstRowIndex: 1,\n lastRowIndex: 1,\n };\n\n @Output() goToFirst = new EventEmitter();\n @Output() goToPrevious = new EventEmitter();\n @Output() goToNext = new EventEmitter();\n @Output() goToLast = new EventEmitter();\n @Output() pageSizeChange = new EventEmitter();\n \n public pageSize: number = OnePageSizeOption[0];\n public pageSizeOptions: number[] = OnePageSizeOption;\n\n ngAfterViewInit(): void {\n\n if (this.paginate?.pageSizeOptions) {\n\n this.pageSizeOptions = this.paginate.pageSizeOptions;\n }\n }\n\n goToFirstPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage > 1)) return;\n\n this.goToFirst.emit(this.paginate?.currentPage);\n }\n\n goToPreviousPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage > 1)) return;\n\n this.goToPrevious.emit(this.paginate?.currentPage);\n }\n\n goToNextPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage < this.paginate?.lastPage)) return;\n\n this.goToNext.emit(this.paginate?.currentPage);\n }\n\n goToLastPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage < this.paginate?.lastPage)) return;\n\n this.goToLast.emit(this.paginate?.currentPage);\n }\n\n onPageSizeChange(event: Event) {\n\n const select = event.target as HTMLSelectElement;\n\n const newSize = Number(select.value);\n\n if (newSize !== this.pageSize) {\n\n this.pageSize = newSize;\n\n this.pageSizeChange.emit(this.pageSize);\n }\n }\n}\n","<div class=\"one-grid-pagination\">\n <div class=\"one-pagination-row\">\n @if (paginate?.firstRowIndex > 0 && paginate?.lastRowIndex > 0 && paginate?.total > 0) {\n <div class=\"one-pagination-columns-group\">\n <div class=\"one-pagination-column\">\n <span>{{ paginate?.firstRowIndex }}</span>\n <span>-</span>\n <span>{{ paginate?.lastRowIndex }}</span>\n &nbsp;<span>/</span>&nbsp;\n <span>{{ paginate?.total }}</span>\n </div>\n </div>\n }\n <div class=\"one-pagination-columns-group\">\n <div class=\"one-pagination-column\">\n <button \n class=\"one-pagination-btn\"\n (click)=\"goToFirstPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage > 1)\">\n <lucide-icon name=\"chevron-first\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n <button\n class=\"one-pagination-btn\"\n (click)=\"goToPreviousPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage > 1)\">\n <lucide-icon name=\"chevron-left\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n </div>\n <div class=\"one-pagination-column\">\n &nbsp;{{ paginate?.currentPage }}<span>/</span>{{ paginate?.lastPage }}&nbsp;\n </div>\n <div class=\"one-pagination-column\">\n <button\n class=\"one-pagination-btn\"\n (click)=\"goToNextPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage < paginate?.lastPage)\">\n <lucide-icon name=\"chevron-right\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n <button\n class=\"one-pagination-btn\"\n (click)=\"goToLastPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage < paginate?.lastPage)\">\n <lucide-icon name=\"chevron-last\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n </div>\n <div class=\"one-pagination-columns-group\">\n <div class=\"one-pagination-column\">\n <select name=\"row-per-page\" [value]=\"pageSize\" (change)=\"onPageSizeChange($event)\">\n @for (size of pageSizeOptions; track $index) {\n <option [value]=\"size\">{{ size }} rows</option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, Type, ViewChild } from '@angular/core';\nimport { OneColumnDef, OneGroupColumnDef } from '../../core/models/one-column-def-types.model';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridReadyEvent, OneGridRowActionEvent, OneGridType } from '../../core/models/one-grid-types.model';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { OnePaginationParams } from '../../core/models/one-pagination-types.model';\nimport { OneGridSelectionService } from '../../core/services/one-grid-selection.service';\nimport { CellOptionMenuSelectedEvent, ExpansionChangedEvent, RowSelectionMode, SelectionChangedEvent } from '../../core/models/one-event-types.model';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { OneGridExpansionService } from '../../core/services/one-grid-expansion.service';\nimport { OneDetailCellRendererParams } from '../../core/models/one-master-detail.model';\nimport { OneGridRowService } from '../../core/services/one-grid-row.service';\nimport { OneGridCellService } from '../../core/services/one-grid-cell.service';\nimport { OgColumnService } from '../../core/services/og-column.service';\nimport _ from 'lodash';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid',\n templateUrl: './one-grid.component.html',\n styleUrl: './one-grid.component.scss',\n providers: [\n OneGridEventService,\n OneGridApi,\n OgColumnService,\n OneGridSelectionService,\n OneGridExpansionService,\n OneGridRowService,\n OneGridCellService\n ],\n})\nexport class OneGridComponent<T> implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n /**\n * Get General Data from Parent\n */\n @ViewChild('ogRef', { static: true }) ogRef!: ElementRef;\n @Input() rowNumber: boolean = false;\n @Input() allowedEdit: boolean = true;\n @Input() submitted: boolean = false;\n @Input() context: any = null;\n @Input() rowData: T[] = [];\n @Input() rowSelection: RowSelectionMode = null;\n\n @Input() enableGroupColumnDefs: boolean = false;\n @Input() groupColumnDefs: OneGroupColumnDef[] = [];\n\n @Input() defaultColumnDef: OneColumnDef<T> = {};\n @Input() columnDefs: OneColumnDef<T>[] = [];\n\n // RXJS Properties\n protected gridCopy$ = new Subject<ClipboardEvent>();\n\n /**\n * Master Detail Feature\n */\n @Input() gridType: OneGridType = 'master';\n @Input() masterDetail: boolean = false;\n @Input() masterNode: OneRowNode = null;\n @Input() detailCellRendererParams: OneDetailCellRendererParams;\n @Input() detailRendererComponent: Type<OneCellRendererComponent>;\n\n /**\n * Tree Data Feature\n */\n @Input() treeData: boolean = false;\n @Input() treeDataChildrenField: string = null;\n @Input() autoGroupColumnDef: OneColumnDef;\n @Input() groupDefaultExpanded: number = 0;\n\n /**\n * Bind Row Action Events & Data to Parent\n */\n @Output() onGridReady = new EventEmitter<OneGridReadyEvent<T>>();\n @Output() onRowGotoDetail = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowAddNew = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowView = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLocation = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDocument = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCopy = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDelete = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowGotoList = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowEdit = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowPrint = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowHistory = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLanguage = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowSelection = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onShiftDoubleClick = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() rowCountChanged = new EventEmitter<number>();\n\n @Output() selectionChanged = new EventEmitter<SelectionChangedEvent<T>>();\n @Output() expansionChanged = new EventEmitter<ExpansionChangedEvent<T>>();\n\n // For context menu option\n @Output() cellOptionSelect = new EventEmitter<CellOptionMenuSelectedEvent>();\n @Output() onRowCellOption = new EventEmitter<OneGridRowActionEvent<T>>();\n\n /**\n * Bind One Grid Pagination Feature\n */\n @Input() pagination: boolean = false;\n @Input() paginate: OnePaginationParams;\n @Output() goToFirst = new EventEmitter();\n @Output() goToPrevious = new EventEmitter();\n @Output() goToNext = new EventEmitter();\n @Output() goToLast = new EventEmitter();\n @Output() pageSizeChange = new EventEmitter<number>();\n\n /**\n * One Grid Properties\n */\n protected bodyScrollLeft: number = 0;\n private _oneRowNumberColumnDef: OneColumnDef = null;\n private subscriptions = new Subscription();\n\n constructor(\n protected api: OneGridApi,\n protected eventService: OneGridEventService,\n private elementRef: ElementRef,\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n if (changes['masterNode'] && changes['masterNode'].isFirstChange) {\n\n if (this.masterDetail && this.masterNode.expanded && this.gridType === 'detail') {\n\n setTimeout(() => this.api.setRowData([...this.masterNode.detailRowData]));\n }\n }\n\n if (changes[\"rowData\"] && !changes[\"rowData\"]?.firstChange) {\n\n this.treeData || this.masterDetail ? this.api.updateRowData(this.rowData) : this.api.setRowData(this.rowData);\n }\n }\n\n ngOnInit(): void {\n\n /**\n * Init Row Number Column Def\n */\n if (this.rowNumber) {\n\n this._oneRowNumberColumnDef = {\n groupId: this.columnDefs[0]?.groupId ?? null,\n field: '_oneRowNumber',\n headerName: 'Nº',\n resizable: true,\n headerStyle: {\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItem: 'center'\n },\n alignContent: 'right',\n cellClass: 'fw-bold',\n width: 60,\n minWidth: 40,\n maxWidth: 200\n }\n }\n\n /**\n * Initialize One Grid API\n */\n this.api.init(this.gridType, this.rowSelection, this.columnDefs, this.defaultColumnDef, this.context, this.masterDetail, this.detailCellRendererParams, this.detailRendererComponent, this.treeData, this.groupColumnDefs);\n\n /**\n * Setup Master Detail Configuration\n */\n if (this.masterDetail) {\n\n this.api.setGroupDefaultExpanded(this.groupDefaultExpanded);\n this.api.setGetDetailRowData(this.detailCellRendererParams?.getDetailRowData ?? null);\n\n if (this.rowNumber) {\n\n const columnDefs = _.concat(this._oneRowNumberColumnDef, this.columnDefs);\n\n setTimeout(() => this.api.setColumnDefs(columnDefs));\n }\n }\n\n /**\n * Setup Tree Data Configuration\n */\n if (this.treeData) {\n\n this.gridType = 'tree';\n\n const columnDefs = this.rowNumber ? _.concat(this._oneRowNumberColumnDef, this.autoGroupColumnDef, this.columnDefs) : _.concat(this.autoGroupColumnDef, this.columnDefs);\n\n this.api.setTreeDataChildrenField(this.treeDataChildrenField);\n this.api.setGroupDefaultExpanded(this.groupDefaultExpanded);\n\n setTimeout(() => this.api.setColumnDefs(columnDefs));\n }\n\n // Listen Selection Changed Event\n this.subscriptions.add(this.eventService.addEventListener('selectionChanged', (payload: SelectionChangedEvent<T>) => {\n\n this.selectionChanged.emit(payload);\n }));\n }\n\n ngAfterViewInit(): void {\n\n const headerViewport = this.elementRef.nativeElement.querySelector('.one-grid-header-column');\n const bodyViewport = this.elementRef.nativeElement.querySelector('.one-grid-body-viewport');\n\n // Listen Scroll Event Changed\n this.subscriptions.add(\n\n fromEvent(bodyViewport, 'scroll').subscribe(() => {\n\n if (headerViewport) {\n\n headerViewport.scrollLeft = bodyViewport.scrollLeft\n }\n })\n );\n\n /**\n * Emit Grid Ready Event\n */\n this.onGridReady.emit({ api: this.api });\n }\n\n /**\n * Handle Body Scroll Event\n */\n onBodyScroll(scrollLeft: number) {\n\n this.bodyScrollLeft = scrollLeft;\n }\n\n /**\n * Handle Ready Event of a nested Master Detail Grid\n */\n onDetailGridReady(params: OneGridReadyEvent) {\n\n params.api.setRowData(this.masterNode?.detailRowData ?? []);\n }\n\n /**\n * Passing copy event to grid body\n */\n onGridCopy(event: ClipboardEvent) {\n\n this.gridCopy$.next(event);\n }\n\n /**\n * Bind Row Action Events to Parent Component\n */\n invokeRowActionGotoDetail(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoDetail.emit(event);\n }\n\n invokeRowActionAddNew(event: OneGridRowActionEvent<T>) {\n\n this.onRowAddNew.emit(event);\n }\n\n invokeRowActionView(event: OneGridRowActionEvent<T>) {\n\n this.onRowView.emit(event);\n }\n\n invokeRowActionLocation(event: OneGridRowActionEvent<T>) {\n\n this.onRowLocation.emit(event);\n }\n\n invokeRowActionDocument(event: OneGridRowActionEvent<T>) {\n\n this.onRowDocument.emit(event);\n }\n\n invokeRowActionCopy(event: OneGridRowActionEvent<T>) {\n\n this.onRowCopy.emit(event);\n }\n\n invokeRowActionDelete(event: OneGridRowActionEvent<T>) {\n\n this.onRowDelete.emit(event);\n }\n\n invokeRowActionGotoList(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoList.emit(event);\n }\n\n invokeRowActionEdit(event: OneGridRowActionEvent<T>) {\n\n this.onRowEdit.emit(event);\n }\n\n invokeRowActionPrint(event: OneGridRowActionEvent<T>) {\n\n this.onRowPrint.emit(event);\n }\n\n invokeRowActionHistory(event: OneGridRowActionEvent<T>) {\n\n this.onRowHistory.emit(event);\n }\n\n invokeRowActionOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowOption.emit(event);\n }\n\n invokeRowActionLanguage(event: OneGridRowActionEvent<T>) {\n\n this.onRowLanguage.emit(event);\n }\n\n invokeRowActionCellOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowCellOption.emit(event);\n }\n\n invokeRowActionSelection(event: OneGridRowActionEvent<T>) {\n\n this.onRowSelection.emit(event);\n }\n\n invokeShiftDoubleClick(event: OneGridRowActionEvent<T>) {\n\n this.onShiftDoubleClick.emit(event);\n }\n\n invokeRowCountChanged(length: number) {\n\n this.rowCountChanged.emit(length);\n }\n\n cellOptionMenuSelected(event: CellOptionMenuSelectedEvent) {\n\n this.cellOptionSelect.emit(event);\n }\n\n /**\n * Bing Pagination Events to Parent Component\n */\n invokeGoToFirst() {\n\n this.goToFirst.emit();\n }\n\n invokeGoToPrevious() {\n\n this.goToPrevious.emit();\n }\n\n invokeGoToNext() {\n\n this.goToNext.emit();\n }\n\n invokeGoToLast() {\n\n this.goToLast.emit();\n }\n\n invokePageSizeChange(pageSize: number) {\n\n this.pageSizeChange.emit(pageSize);\n }\n\n invokeExpansionChangedClick(event: ExpansionChangedEvent<T>) {\n\n this.expansionChanged.emit(event);\n }\n\n /**\n * Handle Unsubscribe All Event Listenders\n */\n ngOnDestroy(): void {\n\n this.rowData = [];\n\n this.api.destroy();\n\n this.subscriptions.unsubscribe();\n }\n}\n","<div #ogRef class=\"one-grid\" (copy)=\"onGridCopy($event)\" tabindex=\"0\">\n \n <!-- Headers -->\n <one-grid-header\n [api]=\"api\"\n [enableGroupColumnDefs]=\"enableGroupColumnDefs\"\n [allowedEdit]=\"allowedEdit\"\n [scrollLeft]=\"bodyScrollLeft\"\n />\n\n <!-- Body -->\n <one-grid-body\n [gridCopy$]=\"gridCopy$\"\n [rowData]=\"rowData\"\n [api]=\"api\"\n [rowNumber]=\"rowNumber\"\n [pagination]=\"pagination\"\n [allowedEdit]=\"allowedEdit\"\n [submitted]=\"submitted\"\n [context]=\"context\"\n [treeData]=\"treeData\"\n [gridType]=\"gridType\"\n [masterDetail]=\"masterDetail\"\n [masterNode]=\"masterNode\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailRendererComponent]=\"detailRendererComponent\"\n [detailGridTemplate]=\"detailGridTpl\"\n [treeDataChildrenField]=\"treeDataChildrenField\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [groupDefaultExpanded]=\"groupDefaultExpanded\"\n (expansionChanged)=\"invokeExpansionChangedClick($event)\"\n (onRowGotoDetail)=\"invokeRowActionGotoDetail($event)\"\n (onRowAddNew)=\"invokeRowActionAddNew($event)\"\n (onRowView)=\"invokeRowActionView($event)\"\n (onRowLocation)=\"invokeRowActionLocation($event)\"\n (onRowDocument)=\"invokeRowActionDocument($event)\"\n (onRowCopy)=\"invokeRowActionCopy($event)\"\n (onRowDelete)=\"invokeRowActionDelete($event)\"\n (onRowGotoList)=\"invokeRowActionGotoList($event)\"\n (onRowEdit)=\"invokeRowActionEdit($event)\"\n (onRowPrint)=\"invokeRowActionPrint($event)\"\n (onRowHistory)=\"invokeRowActionHistory($event)\"\n (onRowOption)=\"invokeRowActionOption($event)\"\n (onRowLanguage)=\"invokeRowActionLanguage($event)\"\n (onRowCellOption)=\"invokeRowActionCellOption($event)\"\n (onRowSelection)=\"invokeRowActionSelection($event)\"\n (onShiftDoubleClick)=\"invokeShiftDoubleClick($event)\"\n (rowCountChanged)=\"invokeRowCountChanged($event)\"\n (cellOptionSelect)=\"cellOptionMenuSelected($event)\"\n (bodyScroll)=\"onBodyScroll($event)\"\n />\n \n <!-- Pagination -->\n @if (pagination) {\n <one-grid-pagination\n [paginate]=\"paginate\"\n (goToFirst)=\"invokeGoToFirst()\"\n (goToLast)=\"invokeGoToLast()\"\n (goToPrevious)=\"invokeGoToPrevious()\"\n (goToNext)=\"invokeGoToNext()\"\n (pageSizeChange)=\"invokePageSizeChange($event)\"\n />\n }\n\n <!-- Master Detail Grid template, rendered inside one-grid-body via ngTemplateOutlet.\n Declared here (self-reference) so one-grid-body's template does not need to\n import one-grid, which would create an unsupported compile-time cycle. -->\n <ng-template #detailGridTpl let-node=\"node\">\n <one-grid\n [style.height.px]=\"node.detailRowHeight\"\n [gridType]=\"'detail'\"\n [masterNode]=\"node\"\n [masterDetail]=\"masterDetail\"\n [defaultColumnDef]=\"detailCellRendererParams.detailGridOptions.defaultColumnDef\"\n [columnDefs]=\"detailCellRendererParams.detailGridOptions.columnDefs\"\n [rowData]=\"node?.detailRowData\"\n [rowNumber]=\"detailCellRendererParams.detailGridOptions?.rowNumber\"\n [allowedEdit]=\"allowedEdit\"\n [submitted]=\"submitted\"\n [context]=\"context\"\n (expansionChanged)=\"invokeExpansionChangedClick($event)\"\n (onRowGotoDetail)=\"invokeRowActionGotoDetail($event)\"\n (onRowAddNew)=\"invokeRowActionAddNew($event)\"\n (onRowView)=\"invokeRowActionView($event)\"\n (onRowLocation)=\"invokeRowActionLocation($event)\"\n (onRowDocument)=\"invokeRowActionDocument($event)\"\n (onRowCopy)=\"invokeRowActionCopy($event)\"\n (onRowDelete)=\"invokeRowActionDelete($event)\"\n (onRowGotoList)=\"invokeRowActionGotoList($event)\"\n (onRowEdit)=\"invokeRowActionEdit($event)\"\n (onRowPrint)=\"invokeRowActionPrint($event)\"\n (onRowHistory)=\"invokeRowActionHistory($event)\"\n (onRowOption)=\"invokeRowActionOption($event)\"\n (onRowLanguage)=\"invokeRowActionLanguage($event)\"\n (onRowCellOption)=\"invokeRowActionCellOption($event)\"\n (onGridReady)=\"onDetailGridReady($event)\"\n />\n </ng-template>\n</div>","import { Component } from '@angular/core';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\nimport { OneCellRendererParams } from '../../core/models/one-column-def-types.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-status',\n templateUrl: './one-grid-status.component.html',\n styleUrl: './one-grid-status.component.scss',\n})\nexport class OneGridStatusComponent implements OneCellRendererComponent {\n\n protected params!: OneCellRendererParams;\n protected value = '';\n protected label = 0;\n protected type: 'enableStatus' | 'activeStatus' | 'operationActiveStatus' | null = null;\n\n oneInit(params: OneCellRendererParams): void {\n\n this.params = params;\n this.label = params?.value ?? 0;\n\n this.type = this.getType(params.columnDef.field);\n this.value = this.getLabel(this.type, this.label);\n }\n\n refresh(params: OneCellRendererParams): boolean {\n\n return false;\n }\n\n private getType(field: string): 'enableStatus' | 'activeStatus' | 'operationActiveStatus' | null {\n\n return field === 'enableStatus' || field === 'activeStatus' || field === 'operationActiveStatus' ? field : null;\n }\n\n private getLabel(type: 'enableStatus' | 'activeStatus' | 'operationActiveStatus' | null, status: number): string {\n\n if (!type) return 'N/A';\n\n const labels = { enableStatus: ['Disabled', 'Enabled'], activeStatus: ['Inactive', 'Active'], operationActiveStatus: ['Inactive', 'Active'] } as const;\n\n return labels[type][status === 1 ? 1 : 0];\n }\n}\n","<span class=\"one-cell-status\"\n [style.width.px]=\"params.columnDef?.width\"\n [style.min-width.px]=\"params.columnDef?.minWidth\"\n [style.max-width.px]=\"params.columnDef?.maxWidth\"\n >\n <span class=\"one-cell-status-body\" [ngClass]=\"label === 1 ? 'one-success-bg' : 'one-warning-bg'\">\n {{ value }}\n </span>\n</span>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n standalone: false,\n name: 'cellActionButtonVisible'\n})\nexport class CellActionButtonVisiblePipe implements PipeTransform {\n\n transform(column: OneColumnDef, node: OneRowNode): boolean {\n\n return (node?.leaf && !(node?.group && node?.leafGroup) && !column?.autoGroupField) || (!node?.leaf && (node?.group || node?.leafGroup) && column?.autoGroupField && column?.editableLevels?.includes(node.level));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: false,\n name: 'cellNumberValue'\n})\nexport class CellNumberValuePipe implements PipeTransform {\n\n transform(value: any): number | undefined {\n\n if (value === null || value === undefined) return undefined;\n \n return Number(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellField } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellField'\n})\nexport class CellFieldPipe implements PipeTransform {\n\n transform(rowIndex: number, field: string): string {\n\n if (rowIndex === null || rowIndex === undefined || !field) return '';\n \n return getCellField(rowIndex, field);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { CellFieldValuePipe } from './cell-field-value.pipe';\n\n@Pipe({\n standalone: false,\n name: 'cellStateGroupRenderer'\n})\nexport class CellStateGroupRendererPipe<T> implements PipeTransform {\n\n private _cellFieldValue = new CellFieldValuePipe();\n\n transform(value: string, data: T, column: OneColumnDef): string {\n\n return value ? this._cellFieldValue.transform(data, column.field) : column?.cellRendererParams?.placeholder ?? '';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CellStateChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneCellRendererParams, OneColumnDef } from '../../core/models/one-column-def-types.model';\nimport { OneGridCellService } from '../../core/services/one-grid-cell.service';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { getCellField } from '../../helpers/one-cell.helper';\nimport { CellEditablePipe } from '../../core/pipes/cell-editable.pipe';\n\n@Component({\n standalone: false,\n selector: 'app-one-grid-cell-currency',\n templateUrl: './one-grid-cell-currency.component.html',\n styleUrl: './one-grid-cell-currency.component.scss'\n})\nexport class OneGridCellCurrencyComponent {\n \n value: string = '';\n result: any;\n params!: OneCellRendererParams;\n @Input() allowedEdit: boolean = false;\n\n getCellField = getCellField;\n private unsubscribe?: () => void;\n private cellEditablePipe = new CellEditablePipe();\n\n constructor(\n private cellService: OneGridCellService,\n private eventService: OneGridEventService\n ) { }\n\n oneInit(params: OneCellRendererParams): void {\n\n this.params = params;\n this.value = params.data[params.columnDef.field];\n this.result = this.value;\n this.allowedEdit = params.context.componentParent.allowedEdit || false;\n\n this.unsubscribe = this.eventService.addEventListener('cellStateChanged', (payload: CellStateChangedEvent<any>) => {\n if (this.params.node.rowId === payload.node.rowId) {\n\n this.result = this.cellService.generateCellState(this.params.node, this.params.columnDef).value;\n }\n });\n }\n\n refresh(params: OneCellRendererParams): boolean {\n // Update params and values when grid data refreshes\n this.params = params;\n this.value = params.data[params.columnDef.field];\n this.result = this.value;\n this.allowedEdit = params.context.componentParent.allowedEdit || false;\n\n return true;\n }\n\n get isEditable(): boolean {\n if (!this.params.node || !this.params.columnDef) return false;\n\n return this.cellEditablePipe.transform(\n this.params.node.cellStates,\n this.params.columnDef,\n this.params.node,\n this.cellService.editableFn,\n this.cellService.updatableFn,\n this.allowedEdit\n );\n }\n\n startEdit(node: OneRowNode<any>, column: OneColumnDef<any>) {\n\n if (!this.isEditable) {\n return;\n }\n\n if (node) {\n\n node.editing[column.field] = true;\n\n setTimeout(() => {\n\n const input = document.querySelector<HTMLInputElement>(`[data-cell-id=\"${getCellField(node.rowIndex, column.field)}\"] input`);\n\n if (input) {\n\n input.focus();\n\n const value = input.value;\n\n if (value && [\"text\"].includes(input.type)) {\n\n input.setSelectionRange(value.length, value.length);\n }\n }\n }, 10);\n }\n }\n\n stopEdit(node: OneRowNode<any>, column: OneColumnDef<any>, event: any) {\n\n if (node) {\n\n node.data[column.field] = event.target.value === '' ? null : event.target.value;\n\n node.cellStates = this.cellService.generateCellStates(node);\n\n node.editing[column.field] = false;\n\n this.eventService.dispatchEvent('cellStateChanged', {\n data: { ...node.data },\n node: node,\n column: column\n });\n }\n }\n\n cancelEdit(node: OneRowNode<any>, column: OneColumnDef<any>) {\n\n if (node) {\n\n node.editing[column.field] = false;\n }\n }\n\n ngOnDestroy(): void {\n\n this.unsubscribe?.();\n }\n}\n","<div class=\"cell-wrapper\"\n [class.editable]=\"isEditable\"\n [attr.data-cell-id]=\"getCellField(params.node?.rowIndex, params.columnDef?.field)\"\n [style.min-width.px]=\"params.columnDef?.minWidth\"\n [style.max-width.px]=\"params.columnDef?.maxWidth\">\n\n @if (params.node?.editing?.[params.columnDef?.field]) {\n <input class=\"one-cell-input\"\n name=\"{{ params.node?.rowIndex }}_{{ params.columnDef?.field }}\"\n oneCellInputValidator\n validationType=\"number\"\n [placeholder]=\"params.columnDef?.cellRendererParams?.placeholder || ''\"\n type=\"text\"\n [(ngModel)]=\"value\"\n [maxLength]=\"250\"\n (blur)=\"stopEdit(params.node, params.columnDef, $event)\"\n (keydown.enter)=\"stopEdit(params.node, params.columnDef, $event)\"\n (keydown.esc)=\"cancelEdit(params.node, params.columnDef)\" />\n }\n @else {\n <div class=\"d-flex justify-content-between px-2 pt-1\"\n [class.one-cell-allowed-edit-active]=\"isEditable\"\n (dblclick)=\"startEdit(params.node, params.columnDef)\">\n <span class=\"currency-code\" style=\"font-weight: bold;\">{{ this.params?.data?.currency?.currencyCode || 'USD' }}</span>\n <span class=\"amount-value\">\n {{ result | number:(this.params?.field === 'amount' ? '1.3-3' : '1.2-2') }}\n </span>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OneGridComponent } from './components/one-grid/one-grid.component';\nimport { OneGridHeaderComponent } from './components/one-grid-header/one-grid-header.component';\nimport { OneGridBodyComponent } from './components/one-grid-body/one-grid-body.component';\nimport { OneGridCheckboxComponent } from './components/one-grid-checkbox/one-grid-checkbox.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { OneGridRowActionComponent } from './components/one-grid-row-action/one-grid-row-action.component';\nimport { OneGridPaginationComponent } from './components/one-grid-pagination/one-grid-pagination.component';\nimport { OneGridCheckboxHeaderComponent } from './components/one-grid-checkbox-header/one-grid-checkbox-header.component';\nimport { OneGridStatusComponent } from './components/one-grid-status/one-grid-status.component';\nimport { CellFieldValueEmptyPipe } from './core/pipes/cell-field-value-empty.pipe';\nimport { CellValueGetterPipe } from './core/pipes/cell-value-getter.pipe';\nimport { CellFieldValuePipe } from './core/pipes/cell-field-value.pipe';\nimport { OneGridCellGroupRendererComponent } from './components/one-grid-cell-group-renderer/one-grid-cell-group-renderer.component';\nimport { CellActionButtonVisiblePipe } from './core/pipes/cell-action-button-visible.pipe';\nimport { CellEditablePipe } from './core/pipes/cell-editable.pipe';\nimport { CellInvalidPipe } from './core/pipes/cell-invalid.pipe';\nimport { CellSelectedPipe } from './core/pipes/cell-selected.pipe';\nimport { CellActionButtonEnablePipe } from './core/pipes/cell-action-button-enable.pipe';\nimport { CellNumberValuePipe } from './core/pipes/cell-number-value.pipe';\nimport { CellDisableResolverPipe } from './core/pipes/cell-disable-resolver.pipe';\nimport { CellFieldPipe } from './core/pipes/cell-field.pipe';\nimport { CellLevelPaddingPipe } from './core/pipes/cell-level-padding.pipe';\nimport { ColumnSortStatePipe } from './core/pipes/column-sort-state.pipe';\nimport { HeaderCheckboxDisabledPipe } from './core/pipes/header-checkbox-disabled.pipe';\nimport { HeaderCheckboxCheckedPipe } from './core/pipes/header-checkbox-checked.pipe';\nimport { HeaderCheckboxIndeterminatePipe } from './core/pipes/header-checkbox-indeterminate.pipe';\nimport { CellStateRendererPipe } from './core/pipes/cell-state-renderer.pipe';\nimport { CellStateGroupRendererPipe } from './core/pipes/cell-state-group-renderer.pipe';\nimport { OneCellInputValidatorDirective } from './core/directives/one-cell-input-validator.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { NgbHighlight, NgbTypeahead } from '@ng-bootstrap/ng-bootstrap';\nimport { OneCellRendererComponentDirective } from './core/directives/one-cell-renderer-component.directive';\nimport { OneCellTextExpandDirective } from './core/directives/one-cell-text-expand.directive';\nimport { CdkDragPlaceholder } from \"@angular/cdk/drag-drop\";\nimport { OneGridCellCurrencyComponent } from './components/one-grid-cell-currency/one-grid-cell-currency.component';\nimport { LucideAngularModule, icons } from 'lucide-angular';\nimport { CellKeyPipe } from './core/pipes/cell-key.pipe';\nimport { OneGridCellOptionMenuComponent } from './components/one-grid-cell-option-menu/one-grid-cell-option-menu.component';\n\n@NgModule({\n declarations: [\n OneGridComponent,\n OneGridHeaderComponent,\n OneGridBodyComponent,\n OneGridCheckboxComponent,\n OneGridCheckboxHeaderComponent,\n OneGridRowActionComponent,\n OneGridPaginationComponent,\n OneGridStatusComponent,\n OneGridCellGroupRendererComponent,\n CellFieldValueEmptyPipe,\n CellValueGetterPipe,\n CellFieldValuePipe,\n CellActionButtonVisiblePipe,\n CellEditablePipe,\n CellInvalidPipe,\n CellSelectedPipe,\n CellActionButtonEnablePipe,\n CellNumberValuePipe,\n CellDisableResolverPipe,\n CellFieldPipe,\n CellKeyPipe,\n CellLevelPaddingPipe,\n ColumnSortStatePipe,\n HeaderCheckboxDisabledPipe,\n HeaderCheckboxCheckedPipe,\n HeaderCheckboxIndeterminatePipe,\n CellStateRendererPipe,\n CellStateGroupRendererPipe,\n OneCellInputValidatorDirective,\n OneCellRendererComponentDirective,\n OneCellTextExpandDirective,\n OneGridCellCurrencyComponent,\n OneGridCellOptionMenuComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ScrollingModule,\n NgbTypeahead,\n NgbHighlight,\n ReactiveFormsModule,\n CdkDragPlaceholder,\n LucideAngularModule.pick(icons),\n ],\n exports: [OneGridComponent]\n})\nexport class OneGridModule { }\n","/*\n * Public API Surface of one-grid\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["lodash","uuidv4","i1.OgColumnService","i2.OneGridRowService","i3.OneGridCellService","i4.OneGridEventService","i5.OneGridSelectionService","i6.OneGridExpansionService","i1.OneGridEventService","i2.OneGridSelectionService","i3.HeaderCheckboxDisabledPipe","i4.HeaderCheckboxCheckedPipe","i5.HeaderCheckboxIndeterminatePipe","i4.OneGridCheckboxHeaderComponent","i5.ColumnSortStatePipe","i1.OneGridSelectionService","i2.OneGridEventService","i1","i2.CellDisableResolverPipe","i2.OneGridCellService","i3.OneGridEventService","i4","i6.OneGridCheckboxComponent","i7.OneGridRowActionComponent","i8.OneGridCellGroupRendererComponent","i9.OneCellInputValidatorDirective","i10.OneCellRendererComponentDirective","i11.OneCellTextExpandDirective","i12.OneGridCellOptionMenuComponent","i13.CellEditablePipe","i14.CellInvalidPipe","i15.CellSelectedPipe","i16.CellActionButtonEnablePipe","i17.CellKeyPipe","i18.CellLevelPaddingPipe","i19.CellStateRendererPipe","i2","i1.OneGridApi","i3.OneGridHeaderComponent","i4.OneGridBodyComponent","i5.OneGridPaginationComponent","i1.OneGridCellService","i3","i4.OneCellInputValidatorDirective","i5"],"mappings":"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"}
1
+ {"version":3,"file":"one-grid-core-angular.mjs","sources":["../../../projects/one-grid/src/lib/helpers/one-column-def.helper.ts","../../../projects/one-grid/src/lib/helpers/one-validation.helper.ts","../../../projects/one-grid/src/lib/core/instants/one-row-node.class.ts","../../../projects/one-grid/src/lib/helpers/one-filter.helper.ts","../../../projects/one-grid/src/lib/helpers/one-cell.helper.ts","../../../projects/one-grid/src/lib/core/services/og-column.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-row.service.ts","../../../projects/one-grid/src/lib/core/pipes/cell-field-value-empty.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-value-getter.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-field-value.pipe.ts","../../../projects/one-grid/src/lib/core/services/one-grid-cell.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-event.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-selection.service.ts","../../../projects/one-grid/src/lib/core/services/one-grid-expansion.service.ts","../../../projects/one-grid/src/lib/core/instants/one-grid-api.class.ts","../../../projects/one-grid/src/lib/core/services/one-grid-tree-data.service.ts","../../../projects/one-grid/src/lib/core/models/constants/one-pagination.constant.ts","../../../projects/one-grid/src/lib/core/pipes/header-checkbox-disabled.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/header-checkbox-checked.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/header-checkbox-indeterminate.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox-header/one-grid-checkbox-header.component.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox-header/one-grid-checkbox-header.component.html","../../../projects/one-grid/src/lib/core/pipes/column-sort-state.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-header/one-grid-header.component.ts","../../../projects/one-grid/src/lib/components/one-grid-header/one-grid-header.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-editable.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox/one-grid-checkbox.component.ts","../../../projects/one-grid/src/lib/components/one-grid-checkbox/one-grid-checkbox.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-disable-resolver.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-row-action/one-grid-row-action.component.ts","../../../projects/one-grid/src/lib/components/one-grid-row-action/one-grid-row-action.component.html","../../../projects/one-grid/src/lib/components/one-grid-cell-group-renderer/one-grid-cell-group-renderer.component.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-group-renderer/one-grid-cell-group-renderer.component.html","../../../projects/one-grid/src/lib/core/directives/one-cell-input-validator.directive.ts","../../../projects/one-grid/src/lib/core/directives/one-cell-renderer-component.directive.ts","../../../projects/one-grid/src/lib/core/directives/one-cell-text-expand.directive.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-option-menu/one-grid-cell-option-menu.component.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-option-menu/one-grid-cell-option-menu.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-invalid.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-selected.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-action-button-enable.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-key.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-level-padding.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-state-renderer.pipe.ts","../../../projects/one-grid/src/lib/components/one-grid-body/one-grid-body.component.ts","../../../projects/one-grid/src/lib/components/one-grid-body/one-grid-body.component.html","../../../projects/one-grid/src/lib/components/one-grid-pagination/one-grid-pagination.component.ts","../../../projects/one-grid/src/lib/components/one-grid-pagination/one-grid-pagination.component.html","../../../projects/one-grid/src/lib/components/one-grid/one-grid.component.ts","../../../projects/one-grid/src/lib/components/one-grid/one-grid.component.html","../../../projects/one-grid/src/lib/components/one-grid-status/one-grid-status.component.ts","../../../projects/one-grid/src/lib/components/one-grid-status/one-grid-status.component.html","../../../projects/one-grid/src/lib/components/one-grid-cell-currency/one-grid-cell-currency.component.ts","../../../projects/one-grid/src/lib/components/one-grid-cell-currency/one-grid-cell-currency.component.html","../../../projects/one-grid/src/lib/core/pipes/cell-action-button-visible.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-number-value.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-field.pipe.ts","../../../projects/one-grid/src/lib/core/pipes/cell-state-group-renderer.pipe.ts","../../../projects/one-grid/src/lib/one-grid.module.ts","../../../projects/one-grid/src/public-api.ts","../../../projects/one-grid/src/one-grid-core-angular.ts"],"sourcesContent":["import { OneCellRendererParams, OneColumnDef, OneValueGetterParams } from \"../core/models/one-column-def-types.model\";\n\n/**\n * Apply Default Column Definitions\n */\nexport function applyDefaultColumnDef<T>(columnDefs: OneColumnDef<T>[], defaultColumnDef: OneColumnDef<T>): OneColumnDef<T>[] {\n\n return columnDefs.map(colDef => ({\n ...defaultColumnDef,\n ...colDef\n }));\n}\n\n/**\n * One Column Params Resolver (Cell Renderer)\n */\nexport function resolveOneCellRendererParams<T>(prop: boolean | ((params: any) => boolean), params: OneCellRendererParams<T>): boolean {\n\n return typeof prop === 'function' ? prop(params) : !!prop;\n}\n\n/**\n * One Column Params Resolver (Generics)\n */\nexport function resolveOneColumDefParams<R>(prop: R | ((params: any) => R), params: any): R {\n\n return typeof prop === 'function' ? (prop as (p: any) => R)(params) : prop;\n}\n\n/**\n * One Column Params Resolver (Value Getter)\n */\nexport function resolveOneValueGetterParams<T, R>(prop: R | ((params: OneValueGetterParams<T>) => R), params: OneValueGetterParams<T>): R {\n\n return typeof prop === 'function' ? (prop as (p: OneValueGetterParams<T>) => R) (params): prop;\n}","\nimport { OneRowNode } from \"../core/instants/one-row-node.class\";\nimport { OneColumnDef } from \"../core/models/one-column-def-types.model\";\nimport { OneValidationRules, OneValidatorFn } from \"../core/models/one-validation.model\";\n\n/**\n * One Grid Validators\n */\nexport const Validators = {\n required: (message = 'This field is required'): OneValidatorFn => {\n\n return (value) => {\n\n if (value === null || value === undefined || value === '') {\n\n return message;\n }\n\n return null;\n };\n },\n minLength: (min: number, message?: string): OneValidatorFn => {\n\n return (value) => {\n\n if (value != null && value.length < min) {\n\n return message || `Minimum length is ${min} digits`;\n }\n\n return null;\n };\n },\n maxLength: (max: number, message?: string): OneValidatorFn => {\n\n return (value) => {\n\n if (value != null && value.length > max) {\n\n return message || `Maximum length is ${max} digits`;\n }\n\n return null;\n };\n },\n pattern: (regex: RegExp, message = 'Format is not valid'): OneValidatorFn => {\n\n return (value) => {\n\n if (value != null && !regex.test(value)) {\n\n return message;\n }\n\n return null;\n };\n },\n custom: (fn: (value: any, row?: any) => string | null): OneValidatorFn => fn,\n};\n\n/**\n * One Grid Validation Rules\n */\nexport const ValidationRules: OneValidationRules = {\n required: [\n Validators.required()\n ],\n title: [\n Validators.required('Title is required'),\n Validators.minLength(1, 'Title must be at least 1 digit'),\n Validators.maxLength(250, 'Code must be less than 36 digits'),\n ],\n code: [\n Validators.required(\"Code is required\"),\n Validators.minLength(1, 'Code must be at least 1 digit'),\n Validators.maxLength(36, 'Code must be less than 36 digits'),\n ],\n email: [\n Validators.required(),\n Validators.pattern(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/, 'Email format is invalid'),\n ],\n phone: [\n Validators.required('Phone number is required'),\n Validators.pattern(/^0(10|11|12|13|14|15|16|17|18|19|20|23|24|25|26|27|28|29)\\d{7}$/, 'Phone must be a valid pattern')\n ],\n datetime: [\n Validators.required('Datetime is required'),\n ]\n};\n\n/**\n * Helper fuction to return invalid cell on UI\n */\nexport function getCellError<T>(column: OneColumnDef<T>, node: OneRowNode, value: any, row: T): string | null {\n\n if (!column?.validationRules || column?.validationRules?.length === 0) return null;\n\n if (column?.autoGroupField) {\n\n if (column.editableLevels.includes(node.level)) {\n\n for (const ruleFn of column?.validationRules) {\n\n const error = ruleFn(value, row);\n\n if (error) return error;\n }\n }\n\n return null;\n \n } else {\n\n if (!node.group) {\n\n for (const ruleFn of column?.validationRules) {\n\n const error = ruleFn(value, row);\n\n if (error) return error;\n }\n }\n\n return null;\n }\n}\n","import { Type } from \"@angular/core\";\nimport { OneCellOptions, OneCellStates } from \"../models/one-column-def-types.model\";\nimport { OneRowNodeEventMap, OneRowNodeListener } from \"../models/one-row.model\";\nimport { OneCellRendererComponent } from \"../models/one-tree-data.model\";\n\nexport class OneRowNode<T = any, D = any> {\n\n public rowId: string = null;\n public rowIndex: number = null;\n public data: T = null;\n public level: number = null;\n \n public leaf: boolean = false;\n public leafGroup: boolean = false;\n public visible: boolean = false;\n public selected: boolean = false;\n public expandable: boolean = false;\n public expanded: boolean = false;\n public group: boolean = false;\n public submitted: boolean = false;\n\n public parent: OneRowNode<T> | null = null;\n public children: OneRowNode<T>[] | null = null;\n public editing: { [field: string]: boolean } = {};\n public cellStates: OneCellStates = {};\n public cellOptions: OneCellOptions = {};\n\n public detailRowData: D[] = null;\n public detailActive: boolean = false;\n public detailRowHeight: number = null;\n public detailRendererComponent?: Type<OneCellRendererComponent>;\n\n private listeners: Map<keyof OneRowNodeEventMap<T>, Set<Function>> = new Map();\n\n constructor(rowId: string, data: T, rowIndex: number) {\n\n this.rowId = rowId;\n this.data = data;\n this.rowIndex = rowIndex;\n }\n\n setDataValue(field: string, value: any) {\n\n this.data[field] = value;\n }\n\n setSelected(selected: boolean) {\n\n this.selected = selected;\n }\n\n setRowIndex(index: number) {\n\n this.rowIndex = index;\n }\n\n setCellStates(cellStates: OneCellStates) { \n\n this.cellStates = cellStates;\n }\n\n isSelected(): boolean {\n\n return this.selected;\n }\n\n isExpanded(): boolean {\n\n return this.expanded;\n }\n\n /**\n * Event System\n */\n on<K extends keyof OneRowNodeEventMap<T>>(event: K, listener: OneRowNodeListener<T, K>): () => void {\n\n if (!this.listeners.has(event)) {\n\n this.listeners.set(event, new Set());\n }\n\n this.listeners.get(event)!.add(listener);\n\n // Return unsubscribe fn\n return () => this.off(event, listener);\n }\n\n off<K extends keyof OneRowNodeEventMap<T>>(event: K, listener: OneRowNodeListener<T, K>): void {\n\n this.listeners.get(event)?.delete(listener);\n }\n\n emit<K extends keyof OneRowNodeEventMap<T>>(event: K, payload: OneRowNodeEventMap<T>[K]): void {\n\n this.listeners.get(event)?.forEach(cb => cb(payload));\n }\n\n /**\n * Mutators that fire events\n */\n setDetailRowData(detailRowData: D[]): void {\n\n const previousDetailRowData = this.detailRowData;\n\n this.detailRowData = detailRowData;\n\n this.emit('detailRowDataChanged', {\n node: this,\n detailRowData,\n previousDetailRowData,\n });\n\n this.emit('childrenChanged', {\n node: this,\n children: this.children,\n source: 'masterDetail',\n });\n }\n\n setExpanded(expanded: boolean): void {\n\n if (this.expanded === expanded) return; // skip if no change\n\n this.expanded = expanded;\n\n this.emit('expandedChanged', { node: this, expanded });\n }\n\n destroy(): void {\n\n this.listeners.clear(); // prevent memory leaks\n }\n}\n","import { OneRowNode } from \"../core/instants/one-row-node.class\";\nimport { OneFilterModel } from \"../core/models/one-filter.model\";\n\n/**\n * Recursively filters a tree and updates each node's UI state.\n *\n * Rules:\n * - A node is visible if it matches the filters or has a matching descendant.\n * - A node is expanded if it has a matching descendant.\n *\n * @returns True if the current node or any descendant matches.\n */\nexport function filterTreeNode<T = any>(node: OneRowNode<T>, filters: OneFilterModel[] | null, quick: string): boolean {\n\n // Check whether the current node matches all active filters.\n const selfMatch = matchesAdvancedFilters(node, filters) && matchesQuickFilter(node, quick);\n\n // Recursively determine whether any child matches.\n const childMatch = node.children?.some(child => filterTreeNode(child, filters, quick)) ?? false;\n\n // Keep the node visible when it or any descendant matches.\n node.visible = selfMatch || childMatch;\n\n // Expand parents to reveal matching descendants.\n node.expanded = childMatch;\n\n return node.visible;\n}\n\n/**\n * Apply advanced per-column filters\n */\nexport function matchesAdvancedFilters<T = any>(node: OneRowNode<T>, filters: OneFilterModel[] | null): boolean {\n\n if (!filters || filters.length === 0) return true;\n\n return filters.every(filter => {\n\n const val = (node.data[filter.field as keyof T] ?? '').toString().toLowerCase();\n\n const results = filter.conditions.map(condition => {\n\n const cmp = (condition.value ?? '').toString().toLowerCase();\n\n switch (condition.operator) {\n\n case 'equals': return val === cmp;\n\n case 'contains': return val.includes(cmp);\n\n case 'startsWith': return val.startsWith(cmp);\n\n case 'endsWith': return val.endsWith(cmp);\n\n case 'greaterThan': return +val > +cmp;\n\n case 'lessThan': return +val < +cmp;\n\n default: return true; // Unknown operator = ignore\n }\n });\n\n return filter.logicOperator === 'AND' ? results.every(Boolean) : results.some(Boolean);\n });\n}\n\n/**\n * Apply quick filter across all fields\n */\nexport function matchesQuickFilter<T = any>(node: OneRowNode<T>, quick: string): boolean {\n\n if (!quick) return true;\n\n return Object.values(node.data).some(value =>\n\n (value ?? '').toString().toLowerCase().includes(quick)\n );\n}\n","import { OneColumnDef } from \"../core/models/one-column-def-types.model\";\n\n/**\n * Generate Cell Field\n */\nexport function getCellField(rowIndex: number, field: string): string {\n\n return `${rowIndex}--${field}`;\n}\n\nexport function getCellKey(rowId: string, field: string): string {\n\n return `${rowId}--${field}`;\n}\n\n/**\n * Get Value From Data Field\n */\nexport function getFieldValue<T>(data: T, field: string): string {\n\n return field?.split('.')?.reduce((obj, key) => obj?.[key], data) as string;\n}\n\n/**\n * Resolve cell style (handles both static and function-based)\n * @param column \n * @param row \n * @returns \n */\nexport function resolveCellStyle(column: OneColumnDef, row: any): { [key: string]: string } {\n\n if (!column.cellStyle) return {};\n\n return typeof column.cellStyle === 'function'\n ? column.cellStyle(row)\n : column.cellStyle;\n}\n\n/**\n * Resolve cell class (handles both static and function-based)\n * @param column \n * @param row \n * @returns \n */\nexport function resolveCellClass(column: OneColumnDef, row: any): string | string[] {\n\n if (!column.cellClass) return '';\n\n return typeof column.cellClass === 'function'\n ? column.cellClass(row)\n : column.cellClass;\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OneCellRendererParams, OneColumnDef, OneGroupColumnDef } from '../models/one-column-def-types.model';\nimport lodash from 'lodash';\nimport { ColumnChangedEvent } from '../models/one-event-types.model';\n\n@Injectable()\nexport class OgColumnService {\n\n private defaultColumnDef: OneColumnDef = null;\n private columnDefs$ = new BehaviorSubject<OneColumnDef[]>([]);\n private groupColumnDefs$ = new BehaviorSubject<OneGroupColumnDef[]>([]);\n\n initColumnDefs(defaultColumnDef: OneColumnDef, columnDefs: OneColumnDef[], groupColumnDefs: OneGroupColumnDef[]): void {\n\n this.defaultColumnDef = defaultColumnDef;\n\n this.setGroupColumnDefs(groupColumnDefs);\n \n this.setColumnDefs(columnDefs);\n }\n\n getColumnState(): ColumnChangedEvent {\n\n const columns = this.columnDefs$.getValue();\n\n const groups = this.groupColumnDefs$.getValue();\n\n return { columns, groups };\n }\n\n setGroupColumnDefs(groupColumnDefs: OneGroupColumnDef[]): void {\n\n const groups = groupColumnDefs.map((group: OneGroupColumnDef) => this.resolveGroupPresentation(group));\n\n this.groupColumnDefs$.next(groups);\n }\n\n setColumnDefs(columnDefs: OneColumnDef[]): void {\n\n const columns = columnDefs.map((col: OneColumnDef) => {\n\n const column = {\n ...this.defaultColumnDef,\n ...col,\n id: col?.field ? col.field : lodash.uniqueId('col_'),\n };\n\n return this.resolveCellPresentation(column);\n });\n\n this.recalculateGroups(columns);\n\n this.columnDefs$.next(columns);\n }\n\n // Update single column\n updateColumnDef(id: string, changes: Partial<OneColumnDef>): void {\n\n const columns = this.getColumnState().columns;\n\n const updatedColumns = columns.map(col => col.id === id ? { ...col, ...changes } : col);\n\n this.recalculateGroups(updatedColumns);\n \n this.columnDefs$.next(updatedColumns);\n }\n\n // Reorder columns\n reorderColumnDefs(fromIndex: number, toIndex: number): void {\n\n const columns = lodash.clone(this.getColumnState().columns);\n\n const [moved] = columns.splice(fromIndex, 1);\n\n columns.splice(toIndex, 0, moved);\n\n this.columnDefs$.next(columns);\n }\n\n /**\n * Group Header Columns\n */\n private recalculateGroups(columnDefs: OneColumnDef[]) {\n\n if (this.groupColumnDefs$.getValue().length > 0) {\n\n const groups = this.groupColumnDefs$.value.map(group => ({\n ...group,\n width: columnDefs.filter(c => c.groupId === group.id).reduce((sum, col) => sum + (col.width ? col.width > col.maxWidth ? col.maxWidth : col.width < col.minWidth ? col.minWidth : col.width : col.minWidth), 0)\n }));\n\n this.groupColumnDefs$.next(groups);\n }\n }\n\n resolveGroupPresentation(col: OneGroupColumnDef, params?: OneCellRendererParams): OneGroupColumnDef {\n\n col._resolvedGroupClass = typeof col.groupClass === 'function' ? col.groupClass(params) : col.groupClass;\n col._resolvedGroupStyle = typeof col.groupStyle === 'function' ? col.groupStyle(params) : col.groupStyle;\n\n return col;\n }\n\n resolveCellPresentation(col: OneColumnDef, params?: OneCellRendererParams): OneColumnDef {\n\n col._resolvedHeaderClass = typeof col.headerClass === 'function' ? col.headerClass(params) : col.headerClass;\n col._resolvedHeaderStyle = typeof col.headerStyle === 'function' ? col.headerStyle(params) : col.headerStyle;\n\n col._resolvedCellClass = typeof col.cellClass === 'function' ? col.cellClass(params) : col.cellClass;\n col._resolvedCellStyle = typeof col.cellStyle === 'function' ? col.cellStyle(params) : col.cellStyle;\n\n return col;\n }\n}","import { Injectable } from '@angular/core';\nimport { OneGridGetRowIdParams } from '../models/one-grid-types.model';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable()\nexport class OneGridRowService {\n\n private _getRowId: (params: OneGridGetRowIdParams) => string = null;\n\n /**\n * Set Row Id Funciton\n */\n public setGetRowIdFn(getRowId: (params: OneGridGetRowIdParams) => string) {\n\n this._getRowId = getRowId;\n }\n\n /**\n * Generate Unique Row ID\n */\n public generateRowId(data: any, rowIndex: number): string {\n\n if (this._getRowId) {\n\n return this._getRowId({ data, rowIndex }) ?? uuidv4();\n }\n\n return uuidv4();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: false,\n name: 'cellFieldValueEmpty'\n})\nexport class CellFieldValueEmptyPipe<T> implements PipeTransform {\n\n transform(data: T, field: string): boolean {\n\n if (!data) {\n\n return true;\n }\n \n const value = field.split('.').reduce((obj: any, key: string) => obj?.[key], data);\n \n return value === null || value === undefined || value === '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { resolveOneValueGetterParams } from '../../helpers/one-column-def.helper';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport _ from 'lodash';\n\n@Pipe({\n standalone: false,\n name: 'cellValueGetter'\n})\nexport class CellValueGetterPipe<T = any> implements PipeTransform {\n\n transform(data: T, node: OneRowNode, column: OneColumnDef, context: any): string {\n\n return resolveOneValueGetterParams(column.valueGetter, {\n data,\n rowIndex: node.rowIndex,\n node: node,\n context: context\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getFieldValue } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellFieldValue'\n})\nexport class CellFieldValuePipe<T = any> implements PipeTransform {\n\n transform(data: T, field: string): string {\n\n const value = getFieldValue(data, field);\n\n if (value === null || value === undefined) {\n\n return null;\n }\n \n if (typeof value === 'string' && value.trim() === '') {\n\n return null;\n }\n\n return value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { OneCellState, OneCellStates, OneColumnDef } from '../models/one-column-def-types.model';\nimport { CellFieldValueEmptyPipe } from '../pipes/cell-field-value-empty.pipe';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { resolveOneCellRendererParams, resolveOneValueGetterParams } from '../../helpers/one-column-def.helper';\nimport { CellValueGetterPipe } from '../pipes/cell-value-getter.pipe';\nimport { CellFieldValuePipe } from '../pipes/cell-field-value.pipe';\n\n@Injectable()\nexport class OneGridCellService {\n\n private _cellFieldValueEmpty = new CellFieldValueEmptyPipe();\n private _cellValueGetter = new CellValueGetterPipe();\n private _cellFieldValue = new CellFieldValuePipe();\n private _columnDefs: OneColumnDef[] = [];\n private _context: any;\n\n public applyColumnDefs(columnDefs: OneColumnDef[], context: any) {\n\n this._columnDefs = columnDefs;\n this._context = context;\n }\n\n /**\n * Generate New Node States\n */\n public generateCellStates(node: OneRowNode): OneCellStates | null {\n\n if (!node) return null;\n\n const newStates: OneCellStates = {};\n\n for (const column of this._columnDefs) {\n\n const field = column.field;\n\n if (field !== '_oneRowNumber') {\n\n newStates[field] = this.generateCellState(node, column) ?? node.cellStates[field] ?? { type: 'none', value: '' };\n\n } else {\n\n newStates[field] = node.cellStates[column.field];\n }\n }\n\n return newStates;\n }\n\n /**\n * Generate New Node State Based on Column Field\n */\n public generateCellState(node: OneRowNode, column: OneColumnDef): OneCellState {\n\n const isField = column.field !== undefined || column.field !== '' || column.field !== null;\n const isEmpty = this._cellFieldValueEmpty.transform(node.data, column.field);\n const isGroup = node.group || node.leafGroup;\n const isAutoGroup = column?.autoGroupField;\n\n if (column && column.cellRenderer && !isGroup) {\n\n const value = column.cellRenderer({ node, columnDef: column });\n\n return { type: 'html', value: value }\n }\n\n // 1. Cell Group Placeholder\n if (isField && isEmpty && isGroup && isAutoGroup) {\n\n return { type: 'placeholder', value: column?.cellRendererParams?.placeholder ?? this._cellValueGetter.transform(node.data, node, column, this._context) ?? '' };\n }\n\n // 2. Cell Group Text Value\n if (isField && isGroup && isAutoGroup) {\n\n const value = column?.valueGetter ? this._cellValueGetter.transform(node.data, node, column, this._context) : this._cellFieldValue.transform(node.data, column.field);\n\n return { type: 'text', value: value ?? '' };\n }\n\n // 3. Cell Placeholder\n if (isField && isEmpty && !isGroup && !isAutoGroup) {\n\n const valueGetter = this._cellValueGetter.transform(node.data, node, column, this._context);\n\n if (valueGetter) {\n\n return { type: 'text', value: valueGetter };\n }\n\n const placeholder = column?.cellRendererParams?.placeholder ?? '';\n\n return { type: 'placeholder', value: placeholder };\n }\n\n // 4. Cell Text Value\n if (isField && !(isGroup || isAutoGroup)) {\n\n const value = column?.valueGetter ? this._cellValueGetter.transform(node.data, node, column, this._context) : this._cellFieldValue.transform(node.data, column.field);\n\n return { type: 'text', value: value ?? '' };\n }\n\n // 5. Default\n return { type: 'none', value: '' };\n }\n\n /**\n * One Column Def Params Resolver\n */\n public editableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.editable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public updatableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.updatable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public disableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.disable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public dragableFn = (column: OneColumnDef, node: OneRowNode) => resolveOneCellRendererParams(column.dragable, { node, data: node.data, columnDef: column, rowIndex: node.rowIndex, context: this._context });\n\n public valueGetterFn = (column: OneColumnDef, node: OneRowNode) => resolveOneValueGetterParams(column.valueGetter, { data: node.data, rowIndex: node.rowIndex, node: node, context: this._context });\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { EventPayloadMap, EventType } from '../models/one-event-types.model';\n\n@Injectable()\nexport class OneGridEventService implements OnDestroy {\n\n private events$ = new Subject<{ type: EventType; payload: any }>();\n private subscriptions: Subscription[] = [];\n\n // Dispatch event\n dispatchEvent<K extends EventType>(type: K, payload: EventPayloadMap[K]): void {\n\n this.events$.next({ type, payload });\n }\n\n // Subscribe to event\n addEventListener<K extends EventType>(type: K, handler: (payload: EventPayloadMap[K]) => void): () => void {\n\n const subscription = this.events$\n .pipe(filter(e => e.type === type), map(e => e.payload as EventPayloadMap[K]))\n .subscribe(handler);\n\n // Track subscription for bulk cleanup\n this.subscriptions.push(subscription);\n\n // Return an unsubscribe function\n return () => subscription.unsubscribe();\n }\n\n // RxJS API\n eventStream<K extends EventType>(type: K): Observable<EventPayloadMap[K]> {\n\n return this.events$.pipe(filter(e => e.type === type), map(e => e.payload as EventPayloadMap[K]));\n }\n\n /**\n * Clear All Subscriptions\n */\n ngOnDestroy(): void {\n\n this.subscriptions.forEach(sub => sub.unsubscribe());\n\n this.subscriptions = [];\n\n this.events$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { OneCheckboxState, RowSelectionMode } from '../models/one-event-types.model';\n\n@Injectable()\nexport class OneGridSelectionService {\n\n private _selectedIds = new Set<string>();\n private _selectionMode: RowSelectionMode = null;\n\n public getSelectedIds(): Set<string> {\n\n return this._selectedIds;\n }\n\n public setSelectedIds(rowIds: string[]) {\n\n this._selectedIds = new Set(rowIds);\n }\n\n public getSelectionMode(): RowSelectionMode {\n\n return this._selectionMode;\n }\n\n public setSelectionMode(mode: RowSelectionMode) {\n\n this._selectionMode = mode;\n\n if (mode === 'single' && this._selectedIds.size > 1) {\n\n // keep only one if mode is single\n const first = this._selectedIds.values().next().value;\n\n this._selectedIds = new Set([first]);\n }\n }\n\n public toggleSelection(rowId: string, selected: boolean) {\n\n if (this._selectionMode === 'single') {\n\n this._selectedIds.clear();\n }\n\n selected ? this._selectedIds.add(rowId) : this._selectedIds.delete(rowId);\n }\n\n public toggleAllSelection(allIds: string[], selected: boolean) {\n\n selected ? this._selectedIds = new Set(allIds) : this._selectedIds.clear();\n }\n\n // Header Checkbox State\n public getSelectAllState(allIds: (string)[]): OneCheckboxState {\n\n if (this._selectedIds.size === 0) return 'unchecked';\n\n if (this._selectedIds.size === allIds.length) return 'checked';\n\n return 'indeterminate';\n }\n\n public selectAll(rowIds: string[]): void {\n\n this._selectedIds = new Set(rowIds);\n }\n\n public deselectAll(): void {\n\n this._selectedIds.clear();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class OneGridExpansionService {\n\n private _expandedIds = new Set<string>();\n private _collapsedIds = new Set<string>();\n\n getExpandedIds(): Set<string> {\n\n return this._expandedIds;\n }\n\n getCollapsedIds(): Set<string> {\n\n return this._collapsedIds;\n }\n\n toggleExpanded(rowId: string, expanded: boolean): void {\n\n if (expanded) {\n\n this._expandedIds.add(rowId);\n\n this._collapsedIds.delete(rowId);\n\n } else {\n\n this._expandedIds.delete(rowId);\n\n this._collapsedIds.add(rowId);\n }\n }\n\n isExpanded(rowId: string): boolean {\n\n return this._expandedIds.has(rowId);\n }\n\n isCollapsed(rowId: string): boolean {\n\n return this._collapsedIds.has(rowId);\n }\n\n clear(): void {\n\n this._expandedIds.clear();\n\n this._collapsedIds.clear();\n }\n}\n","import { OneCellRendererComponent } from '../models/one-tree-data.model';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from \"./one-row-node.class\";\nimport { OneGridType, OneSortModel } from '../models/one-grid-types.model';\nimport { OneGridEventService } from '../services/one-grid-event.service';\nimport { OneGridSelectionService } from '../services/one-grid-selection.service';\nimport { OneValidationResult } from '../models/one-validation.model';\nimport { OneFilterModel } from \"../models/one-filter.model\";\nimport { OneGridExpansionService } from '../services/one-grid-expansion.service';\nimport { OneDetailCellRendererParams, OneGetDetailRowDataParams } from \"../models/one-master-detail.model\";\nimport { OneGridRowService } from \"../services/one-grid-row.service\";\nimport { filterTreeNode } from \"../../helpers/one-filter.helper\";\nimport { getFieldValue } from \"../../helpers/one-cell.helper\";\nimport { OneGridCellService } from '../services/one-grid-cell.service';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Injectable, Type } from \"@angular/core\";\nimport { ColumnChangedEvent, RowSelectionMode } from \"../models/one-event-types.model\";\nimport { OneGroupColumnDef } from \"../models/one-column-def-types.model\";\nimport { OgColumnService } from \"../services/og-column.service\";\n\n@Injectable()\nexport class OneGridApi<T = any> {\n\n // Core Features\n public id: string;\n public context: any = null;\n public rowSelection: RowSelectionMode = null;\n public apiType: OneGridType = null;\n public rowNodes: OneRowNode<T>[] = [];\n public sortModel: OneSortModel<T>[] = [];\n\n\n private rowHeight: number = 26;\n private headerRowHeight: number = 32;\n private _currentIndex: number = 0;\n private _quickFilterValue: string = null;\n private _activeFilters: OneFilterModel[] = [];\n\n private _visibleRowNodes: OneRowNode<T>[] = [];\n private _originalRowNodes: Map<string, OneRowNode<T>> = new Map();\n private _nodeCleanupMap = new Map<string, Array<() => void>>(); // Cleanup registry (prevents memory leaks)\n private _destroyed: boolean = false;\n\n // Advanced Features\n private treeData: boolean = false;\n private treeDataChildrenField: string = null;\n private groupDefaultExpanded: number = 0;\n\n private masterDetail: boolean = false;\n private detailCellRendererParams: OneDetailCellRendererParams;\n private detailRendererComponent?: Type<OneCellRendererComponent>;\n\n // Helper Functions\n public getDetailRowData: (params: OneGetDetailRowDataParams) => void;\n\n constructor(\n private columnService: OgColumnService,\n private rowService: OneGridRowService,\n private cellService: OneGridCellService,\n private eventService: OneGridEventService,\n private selectionService: OneGridSelectionService,\n private expansionService: OneGridExpansionService\n ) { }\n\n init(\n gridApiType: OneGridType,\n rowSelection: RowSelectionMode,\n columnDefs: OneColumnDef<T>[],\n defaultColumnDef: OneColumnDef<T>,\n context: any,\n masterDetail: boolean,\n detailCellRendererParams: OneDetailCellRendererParams,\n detailRendererComponent: Type<OneCellRendererComponent>,\n treeData: boolean,\n groupColumnDefs: OneGroupColumnDef[]\n ) {\n\n this.id = uuidv4();\n this.apiType = gridApiType;\n this.rowSelection = rowSelection;\n this.context = context;\n this.masterDetail = masterDetail;\n this.detailCellRendererParams = detailCellRendererParams;\n this.detailRendererComponent = detailRendererComponent;\n this.treeData = treeData;\n\n this.selectionService.setSelectionMode(this.rowSelection);\n this.rowService.setGetRowIdFn(this.context?.componentParent?.getRowId ?? null);\n\n this.cellService.applyColumnDefs(columnDefs, context);\n this.columnService.initColumnDefs(defaultColumnDef, columnDefs, groupColumnDefs);\n\n const columnState = this.columnService.getColumnState();\n\n setTimeout(() => this.eventService.dispatchEvent('columnChanged', columnState as ColumnChangedEvent));\n }\n\n /**\n * Create Row Node & Clear All State IDS\n */\n public setRowData(rowData: T[]) {\n\n const validRowIds = new Set<string>();\n\n // Clear All State IDS\n this.selectionService.deselectAll();\n this.expansionService.clear();\n\n // Build New Row Nodes\n this.buildRowNodes(rowData, null, 0, validRowIds);\n\n // Apply Filter\n this.applyFilters();\n\n // Remove invalid nodes from map\n for (const rowId of this._originalRowNodes.keys()) {\n\n if (!validRowIds.has(rowId)) {\n\n this._originalRowNodes.delete(rowId);\n }\n }\n }\n\n /**\n * Create Row Nodes & Not Clear State IDS\n */\n public updateRowData(rowData: T[]) {\n\n const validRowIds = new Set<string>();\n\n // Build New Row Nodes\n this.buildRowNodes(rowData, null, 0, validRowIds);\n\n // Apply Filter\n this.applyFilters();\n\n // Remove invalid nodes from map\n for (const rowId of this._originalRowNodes.keys()) {\n\n if (!validRowIds.has(rowId)) {\n\n this._originalRowNodes.delete(rowId);\n }\n }\n }\n\n /**\n * Recursive Build Row Nodes (Optimized)\n */\n private buildRowNodes<T>(\n rowData: T[],\n parent: OneRowNode<T> | null = null,\n level: number = 0,\n validRowIds: Set<string> = new Set(),\n expandedIds: Set<string> = new Set(this.expansionService.getExpandedIds()),\n collapsedIds: Set<string> = new Set(this.expansionService.getCollapsedIds()),\n selectedIds: Set<string> = new Set(this.selectionService.getSelectedIds())\n ): OneRowNode[] {\n\n if (parent === null) {\n\n this.rowNodes = [];\n this._currentIndex = 0;\n }\n\n if (!rowData?.length) return [];\n\n const nodes: OneRowNode<T>[] = [];\n\n for (const data of rowData) {\n\n const rowId = this.rowService.generateRowId(data, this._currentIndex);\n const children = (data as any)[this.treeDataChildrenField] || null;\n\n let node: OneRowNode = this._originalRowNodes.get(rowId);\n\n validRowIds.add(rowId);\n\n if (node) {\n\n node.data = data;\n node.setRowIndex(this._currentIndex);\n\n } else {\n\n node = new OneRowNode<T>(rowId, data, this._currentIndex);\n node.level = level;\n node.parent = parent;\n node.detailRendererComponent = this.detailRendererComponent;\n\n this._originalRowNodes.set(rowId, node);\n\n if (this.masterDetail) {\n\n this.subscribeToDetailChanges(node);\n }\n }\n\n const childrenExist = children && children.length >= 0;\n\n node.group = this.masterDetail ? false : childrenExist;\n node.leaf = this.masterDetail ? true : !node.group;\n node.leafGroup = this.masterDetail ? false : (node.group && !childrenExist);\n node.expandable = this.masterDetail ? true : (node.group && !node.leafGroup);\n\n const defaultExpanded = node.expandable && (level < this.groupDefaultExpanded || this.groupDefaultExpanded === -1);\n\n node.setExpanded(expandedIds.has(rowId) ? true : collapsedIds.has(rowId) ? false : defaultExpanded);\n node.setSelected(selectedIds.has(rowId));\n node.setCellStates(this.cellService.generateCellStates(node));\n\n if (this.masterDetail && this.apiType === 'master') {\n\n this.getDetailRowData({ data, node: node, successCallback: (detailRowData) => node.setDetailRowData(detailRowData) });\n }\n\n this._currentIndex++;\n this.rowNodes.push(node);\n\n nodes.push(node);\n\n node.children = this.treeData && childrenExist ? this.buildRowNodes(children || [], node, level + 1, validRowIds, expandedIds, collapsedIds, selectedIds) : [];\n }\n\n return nodes;\n }\n\n /**\n * Filter Feature\n */\n private applyFilters(): void {\n\n const filters = this._activeFilters;\n\n const quick = this._quickFilterValue?.toLowerCase() ?? '';\n\n this.rowNodes.forEach(node => filterTreeNode(node, filters, quick));\n\n this.refreshVisibleNodes();\n }\n\n /**\n * Update Row Nodes Display\n */\n private refreshVisibleNodes(): void {\n\n if (this._destroyed) return;\n\n const visibleNodes: OneRowNode[] = [];\n\n let rowNumber = 1;\n\n const visibilityCache = new Map<string, boolean>();\n\n for (const node of this.rowNodes) {\n\n const parentVisible = node.parent ? visibilityCache.get(node.parent.rowId) : true;\n\n const isVisible = node.visible && parentVisible && (!node.parent || node.parent.expanded);\n\n visibilityCache.set(node.rowId, isVisible);\n\n if (isVisible) {\n\n node.cellStates['_oneRowNumber'] = { type: 'text', value: rowNumber++ };\n\n node.cellStates = { ...node.cellStates };\n\n visibleNodes.push(node);\n\n } else {\n\n node.cellStates['_oneRowNumber'] = { type: 'none', value: null };\n }\n }\n\n this._visibleRowNodes = [...visibleNodes];\n\n this.eventService.dispatchEvent('rowDataChanged', { nodes: visibleNodes });\n }\n\n public getVisibleRowNodes(): OneRowNode<T>[] {\n\n return this._visibleRowNodes;\n }\n\n /**\n * Sorting Model Feature\n */\n public onSortChanged(sortModel: OneSortModel<T>[]) {\n\n this.sortModel = sortModel;\n\n this.applySorting();\n\n this.eventService.dispatchEvent('sortChanged', { nodes: this.rowNodes });\n }\n\n private applySorting(): void {\n\n if (this.sortModel.length === 0) {\n\n this.rowNodes = [...this._originalRowNodes.values()];\n\n return;\n }\n\n this.rowNodes = [...this._originalRowNodes.values()].sort((a, b) => {\n\n for (const sortItem of this.sortModel) {\n\n const { colId, sort } = sortItem;\n const valA = getFieldValue(a.data, colId as string);\n const valB = getFieldValue(b.data, colId as string);\n const comparisonResult = this.compareValues(valA, valB, sort);\n\n if (comparisonResult !== 0) {\n\n return comparisonResult;\n }\n }\n return 0;\n });\n }\n\n private compareValues(valA: any, valB: any, sortDirection: 'asc' | 'desc'): number {\n\n if (valA === null && valB === null) return 0;\n if (valA === null) return sortDirection === 'asc' ? 1 : -1;\n if (valB === null) return sortDirection === 'asc' ? -1 : 1;\n\n if (typeof valA === 'string' && typeof valB === 'string') {\n\n const comparison = valA.localeCompare(valB, undefined, { numeric: true });\n return sortDirection === 'asc' ? comparison : -comparison;\n }\n\n if (valA < valB) return sortDirection === 'asc' ? -1 : 1;\n if (valA > valB) return sortDirection === 'asc' ? 1 : -1;\n return 0;\n }\n\n /**\n * Row Selection Feature (Optimized)\n */\n public selectAll(): void {\n\n const rowIds: string[] = [];\n\n this._originalRowNodes.forEach(node => {\n\n node.setSelected(true);\n\n node.cellStates = { ...node.cellStates };\n\n rowIds.push(node.rowId);\n });\n\n this.selectionService.selectAll(rowIds);\n\n this.eventService.dispatchEvent('selectionChanged', { allNodesNotSelected: false, allNodesSelected: true, selected: true, node: null });\n }\n\n /**\n * Deselect all nodes (optimized)\n */\n public deselectAll(): void {\n\n this._originalRowNodes.forEach(node => {\n\n node.setSelected(false);\n\n node.cellStates = { ...node.cellStates };\n });\n\n this.selectionService.deselectAll();\n\n if (this.selectionService.getSelectionMode() === 'multiple') {\n\n this.eventService.dispatchEvent('selectionChanged', {\n allNodesNotSelected: true,\n allNodesSelected: false,\n selected: false,\n node: null\n });\n }\n }\n\n public toggleSelection(rowId: string, selected: boolean): void {\n\n const node = this.getRowNodeById(rowId);\n\n if (node) {\n\n node.setSelected(selected);\n\n this.selectionService.toggleSelection(rowId, selected);\n\n this.eventService.dispatchEvent('selectionChanged', { node, data: node.data, selected });\n }\n }\n\n public setSelectedById(rowId: string) {\n\n const node = this.getRowNodeById(rowId);\n\n if (node) {\n\n if (this.selectionService.getSelectionMode() === 'single') {\n\n this.rowNodes.forEach(rowNode => rowNode.setSelected(rowNode.rowId === node.rowId));\n\n this._originalRowNodes.forEach(rowNode => rowNode.setSelected(rowNode.rowId === node.rowId));\n\n } else {\n\n node.setSelected(true);\n }\n\n this.selectionService.toggleSelection(rowId, true);\n\n this.eventService.dispatchEvent('selectionChanged', { node, selected: true });\n }\n }\n\n public setSelectedByIds(rowIds: string[], selected: boolean = true) {\n\n rowIds.forEach(rowId => {\n\n const node = this._originalRowNodes.get(rowId);\n\n if (node) {\n\n node.setSelected(selected);\n\n node.cellStates = { ...node.cellStates };\n\n this.selectionService.toggleSelection(rowId, selected);\n }\n });\n\n this.eventService.dispatchEvent('selectionChanged', { node: null });\n }\n\n /**\n * Get & Set Functions\n */\n public getAllRowNodes(): OneRowNode<T>[] {\n\n return this.rowNodes?.length > 0 ? [...this.rowNodes] : [];\n }\n\n public getRowDataSelected(): T[] {\n\n return this.rowNodes.filter(node => node.selected).map(node => ({ ...node.data }));\n }\n\n public getSelectedRowNodes(): OneRowNode<T>[] {\n\n const nodes = this.rowNodes.filter(node => node.selected);\n\n return nodes && nodes.length > 0 ? [...nodes] : [];\n }\n\n /**\n * Column filters\n */\n public getFilterModel(): OneFilterModel[] {\n\n return this._activeFilters;\n }\n\n public setFilterModel(model: OneFilterModel[]): void {\n\n this._activeFilters = model;\n\n this.applyFilters();\n }\n\n public filterActive(field: string): boolean {\n\n return this._activeFilters.some(f => f.field === field && f.conditions.length > 0);\n }\n\n /**\n * Quick filter\n */\n public setQuickFilter(value: string): void {\n\n this._quickFilterValue = (value || '').toLowerCase();\n\n this.applyFilters();\n }\n\n /**\n * Validation Feature\n */\n public validateRow<T>(row: T, columns: OneColumnDef<T>[]): Record<string, string> {\n\n const errors: Record<string, string> = {};\n\n columns.forEach(col => {\n\n // Only check columns with validationRule\n if (!col.validationRules || col.validationRules.length === 0) return;\n\n const rules = col.validationRules;\n\n for (const rule of rules) {\n\n const error = rule(row[col.field], row);\n\n if (error) {\n\n errors[col.field as string] = error;\n\n break; // stop at first error for this column\n }\n }\n });\n\n return errors;\n }\n\n /**\n * Validate all rows and return both errors and a flag indicating if there are any errors\n */\n public validateAllRows<T>(rowData: T[], columns: OneColumnDef<T>[]): OneValidationResult<T> {\n\n const allErrors = rowData.map(row => {\n\n const errors: Record<string, string> = {};\n\n columns.forEach(col => {\n\n if (!col.validationRules || col.validationRules.length === 0) return;\n\n for (const rule of col.validationRules) {\n\n const error = rule(row[col.field], row);\n\n if (error) {\n\n errors[col.field as string] = error;\n\n break;\n }\n }\n });\n\n return errors;\n });\n\n const hasErrors = allErrors.some(err => Object.keys(err).length > 0);\n\n return { errors: allErrors, valid: !hasErrors, invalid: hasErrors };\n }\n\n /** Traverse all nodes */\n public forEachNode(callback: (node: OneRowNode<T>, index: number) => void) {\n\n const visit = (nodes: OneRowNode<T>[]) => {\n\n nodes.forEach((node, index) => {\n\n callback(node, index);\n\n if (node?.children?.length) visit(node.children);\n });\n };\n\n visit(this.rowNodes);\n }\n\n /** Traverse only leaf nodes */\n public forEachLeafNode(callback: (node: OneRowNode<T>, index: number) => void) {\n\n let leafIndex = 0;\n\n const visit = (nodes: OneRowNode<T>[]) => {\n\n nodes.forEach(node => {\n\n if (node.leaf) {\n\n callback(node, leafIndex++);\n\n } else if (node.group && node?.children?.length) {\n\n visit(node.children);\n }\n });\n };\n\n visit(this.rowNodes);\n }\n\n public getRowNodeById(rowId: string): OneRowNode<T> {\n\n return this._originalRowNodes.get(rowId);\n }\n\n /**\n * Expand/collapse a node\n */\n public setTreeDataChildrenField(field: string) {\n\n this.treeDataChildrenField = field;\n }\n\n public setGroupDefaultExpanded(defaultExpanded: number) {\n\n this.groupDefaultExpanded = defaultExpanded;\n }\n\n public toggleExpandAll(expanded: boolean) {\n\n this.forEachNode(node => {\n\n node.setExpanded(expanded);\n\n this.expansionService.toggleExpanded(node.rowId, expanded)\n });\n\n this.refreshVisibleNodes();\n }\n\n public setExpandedById(rowId: string, expanded: boolean) {\n\n const node = this._originalRowNodes.get(rowId);\n\n if (node) {\n\n node.setExpanded(expanded);\n\n this.expansionService.toggleExpanded(rowId, expanded);\n }\n\n this.refreshVisibleNodes();\n }\n\n public setExpandedByIds(rowIds: string[], expanded: boolean) {\n\n if (rowIds && rowIds.length > 0) {\n\n for (let rowId of rowIds) {\n\n const node = this._originalRowNodes.get(rowId);\n\n if (node) {\n\n node.setExpanded(expanded);\n\n this.expansionService.toggleExpanded(rowId, expanded);\n }\n }\n\n this.refreshVisibleNodes();\n }\n }\n\n public getExpandedByIds(): string[] {\n\n return Array.from(this.expansionService.getExpandedIds());\n }\n\n /**\n * Master Detail Feature\n */\n public setDetailRowData(node: OneRowNode<T>, detailData: any[]) {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.setDetailRowData(detailData);\n }\n }\n\n public setGetDetailRowData(getDetailRowData: (params: OneGetDetailRowDataParams) => void) {\n\n this.getDetailRowData = getDetailRowData;\n }\n\n /**\n * Columns State\n */\n public getColumnState(): ColumnChangedEvent {\n\n return this.columnService.getColumnState();\n }\n\n public setColumnDefs(columnDefs: OneColumnDef<T>[]): void {\n\n this.columnService.setColumnDefs(columnDefs);\n\n const columnState = this.columnService.getColumnState();\n\n this.cellService.applyColumnDefs(columnState.columns, this.context);\n\n this.eventService.dispatchEvent('columnChanged', columnState);\n }\n\n public updateColumn(id: string, changes: Partial<OneColumnDef<T>>): void {\n\n this.columnService.updateColumnDef(id, changes);\n\n const columnState = this.columnService.getColumnState();\n\n this.cellService.applyColumnDefs(columnState.columns, this.context);\n\n this.eventService.dispatchEvent('columnChanged', columnState);\n }\n\n public reorderColumnDefs(fromIndex: number, toIndex: number): void {\n\n this.columnService.reorderColumnDefs(fromIndex, toIndex);\n\n const columnState = this.columnService.getColumnState();\n\n this.eventService.dispatchEvent('columnChanged', columnState);\n }\n\n /**\n * Update checkbox selection features\n */\n public setNodeAndChildrenSelected(node: OneRowNode, selected: boolean) {\n\n const rowIds = new Set<string>();\n\n const collect = (n: OneRowNode) => {\n\n rowIds.add(n.rowId);\n\n if (n.children && n.children.length) {\n\n n.children.forEach(child => collect(child));\n }\n };\n\n collect(node);\n\n this.setSelectedByIds(Array.from(rowIds), selected);\n }\n\n public updateNodeStates(node: OneRowNode) {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.cellStates = this.cellService.generateCellStates(rowNode);\n }\n }\n\n public updateCellState(node: OneRowNode, column: OneColumnDef): void {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.cellStates[column.field] = this.cellService.generateCellState(rowNode, column);\n }\n }\n\n public updateCellStates(node: OneRowNode): void {\n\n const rowNode = this.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.cellStates = this.cellService.generateCellStates(rowNode);\n }\n }\n\n /**\n * Handler that Reacts to Detail Changes\n */\n private subscribeToDetailChanges(node: OneRowNode): void {\n\n const unsubRowData = node.on('rowDataChanged', ({ node, data, previousData }) => {\n\n\n });\n\n // When detail data arrives\n const unsubDetail = node.on('detailRowDataChanged', ({ node, detailRowData, previousDetailRowData }) => {\n\n if (this.apiType === 'master') {\n\n this._resolvedDetailRowHeight(node);\n }\n });\n\n // When row expands\n const unsubExpand = node.on('expandedChanged', ({ node, expanded }) => {\n\n // if (!expanded) return;\n\n // // Only fetch if detail data not already loaded\n // if (!node.detailRowData) {\n\n // this.getDetailRowData({ data: node.data, node, successCallback: (detailRowData) => node.setDetailRowData(detailRowData) });\n // }\n });\n\n // // Cleanup when node is removed from grid\n this.registerNodeCleanup(node.rowId, [unsubDetail, unsubExpand]);\n }\n\n private registerNodeCleanup(rowId: string, unsubs: Array<() => void>): void {\n\n // Merge with any existing cleanups for this rowId\n const existing = this._nodeCleanupMap.get(rowId) ?? [];\n\n this._nodeCleanupMap.set(rowId, [...existing, ...unsubs]);\n }\n\n private cleanupNode(rowId: string): void {\n\n const cleanups = this._nodeCleanupMap.get(rowId);\n\n cleanups?.forEach(fn => fn());\n\n this._nodeCleanupMap.delete(rowId);\n }\n\n // Call this when rows are removed\n private pruneRemovedNodes(validRowIds: Set<string>): void {\n\n for (const [rowId, node] of this._originalRowNodes) {\n\n if (!validRowIds.has(rowId)) {\n\n this.cleanupNode(rowId); // unsubscribe listeners\n\n node.destroy(); // clear node's own listener map\n\n this._originalRowNodes.delete(rowId);\n }\n }\n }\n\n /**\n * Resolve Detail Row Height\n */\n private _resolvedDetailRowHeight(node: OneRowNode): void {\n\n const minRows = this.detailCellRendererParams.detailGridOptions.detailRowHeightOptions.minRows;\n const maxRows = this.detailCellRendererParams.detailGridOptions.detailRowHeightOptions.maxRows;\n\n const minHeight = (this.rowHeight * minRows) + this.headerRowHeight;\n const maxHeight = (this.rowHeight * maxRows) + this.headerRowHeight;\n\n const rows = node.detailRowData && node.detailRowData.length ? node.detailRowData.length : 0;\n\n node.detailRowHeight = rows <= minRows ? minHeight : rows >= maxRows ? maxHeight : (this.rowHeight * rows) + this.headerRowHeight;\n }\n\n /**\n * On Destroy\n */\n public destroy(): void {\n\n if (this._destroyed) return;\n\n this._destroyed = true;\n\n this.rowNodes.forEach(node => {\n node.children = [];\n node.parent = null;\n });\n\n this.rowNodes = [];\n this._originalRowNodes.clear();\n this._currentIndex = null;\n\n // Clear services\n if (this.selectionService) {\n this.selectionService.deselectAll();\n }\n this.selectionService = null as any;\n\n if (this.expansionService) {\n this.expansionService.clear();\n }\n this.expansionService = null as any;\n\n this.eventService = null as any;\n this.rowService = null as any;\n this.cellService = null as any;\n\n // Clear filters, sorting, context\n this._activeFilters = [];\n this._quickFilterValue = null;\n this.sortModel = [];\n\n // Clear master/detail/treeData\n this.masterDetail = false;\n this.treeData = false;\n this.treeDataChildrenField = '';\n this.groupDefaultExpanded = 0;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TreeNode } from '../models/one-tree-data.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OneGridTreeDataService {\n\n create<T>(tree: TreeNode<T>[], parentId: string | null, newNode: TreeNode<T>): TreeNode<T>[] {\n \n if (!parentId) {\n\n return [newNode, ...tree];\n }\n \n return tree.map(node => {\n\n if (node.id === parentId) {\n\n return { ...node, children: [newNode, ...(node.children || [])] };\n }\n \n if (node.children) {\n\n return { ...node, children: this.create(node.children, parentId, newNode) };\n }\n \n return node;\n });\n }\n \n update<T>(tree: TreeNode<T>[], nodeId: string, updatedData: Partial<T>): TreeNode<T>[] {\n \n return tree.map(node => {\n\n if (node.id === nodeId) {\n\n return { ...node, ...updatedData };\n }\n \n if (node.children) {\n\n return { ...node, children: this.update(node.children, nodeId, updatedData) };\n }\n \n return node;\n });\n }\n\n delete<T>(tree: TreeNode<T>[], nodeId: string): TreeNode<T>[] {\n\n return tree.map(node => {\n\n if (node.children && node.children.length > 0) {\n\n return { ...node, children: this.delete(node.children, nodeId) };\n }\n\n return node;\n\n }).filter(node => node.id !== nodeId);\n }\n\n \n find<T = any>(treeData: TreeNode<T>[], nodeId: string): TreeNode<T> | null {\n \n for (const node of treeData) {\n\n if (node.id === nodeId) {\n\n return node;\n }\n \n if (node.children) {\n\n const found = this.find(node.children, nodeId);\n\n if (found) return found;\n }\n }\n \n return null;\n }\n}\n","export const OnePageSizeOption = [25, 50, 100, 250];","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { RowSelectionMode } from '../models/one-event-types.model';\n\n@Pipe({\n standalone: false,\n name: 'headerCheckboxDisabled'\n})\nexport class HeaderCheckboxDisabledPipe implements PipeTransform {\n\n transform(rowNodes: OneRowNode[], selectionMode: RowSelectionMode, allowedEdit: boolean): boolean {\n\n return rowNodes?.length === 0 || selectionMode !== 'multiple' || !allowedEdit;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { OneCheckboxState, RowSelectionMode } from '../models/one-event-types.model';\n\n@Pipe({\n standalone: false,\n name: 'headerCheckboxChecked'\n})\nexport class HeaderCheckboxCheckedPipe implements PipeTransform {\n\n transform(rowNodes: OneRowNode[], selectionMode: RowSelectionMode, state: OneCheckboxState): boolean {\n\n return rowNodes?.length > 0 && selectionMode === 'multiple' && state === 'checked';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { OneCheckboxState, RowSelectionMode } from '../models/one-event-types.model';\n\n@Pipe({\n standalone: false,\n name: 'headerCheckboxIndeterminate'\n})\nexport class HeaderCheckboxIndeterminatePipe implements PipeTransform {\n\n transform(rowNodes: OneRowNode[], selectionMode: RowSelectionMode, state: OneCheckboxState): unknown {\n\n return rowNodes?.length > 0 && selectionMode === 'multiple' && state === 'indeterminate';\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { OneGridSelectionService } from '../../core/services/one-grid-selection.service';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport {\n OneCheckboxState, RowDataChangedEvent,\n RowSelectionMode,\n SelectionChangedEvent,\n} from '../../core/models/one-event-types.model'\n\n@Component({\n standalone: false,\n selector: 'one-grid-checkbox-header',\n templateUrl: './one-grid-checkbox-header.component.html',\n styleUrl: './one-grid-checkbox-header.component.scss',\n})\nexport class OneGridCheckboxHeaderComponent<T> implements OnInit {\n\n @Input() api!: OneGridApi<T>;\n @Input() allowedEdit: boolean = false;\n\n public state: OneCheckboxState = 'unchecked';\n public rowNodes: OneRowNode<T>[] = [];\n public selectionMode: RowSelectionMode;\n\n constructor(\n private eventService: OneGridEventService,\n private selectionService: OneGridSelectionService\n ) { }\n\n ngOnInit(): void {\n\n this.selectionMode = this.api.rowSelection;\n\n /**\n * Listen Row Node Selection Changed Event\n */\n this.eventService.addEventListener('selectionChanged', (payload: SelectionChangedEvent<T>) => {\n\n this.rowNodes = this.api.getAllRowNodes();\n\n const rowIds = this.rowNodes && this.rowNodes.length > 0 ? this.rowNodes.map((node: OneRowNode<T>) => node.rowId) : [];\n\n this.state = this.selectionService.getSelectAllState(rowIds);\n });\n\n /**\n * Listen Row Data Changed Event\n */\n this.eventService.addEventListener('rowDataChanged', (payload: RowDataChangedEvent<T>) => {\n\n this.rowNodes = this.api.getAllRowNodes();\n\n const rowIds: string[] = this.rowNodes && this.rowNodes.length > 0 ? this.rowNodes.map((node: OneRowNode<T>) => node.rowId) : [];\n\n this.state = this.selectionService.getSelectAllState(rowIds);\n });\n }\n\n /**\n * Toggle Selection Action\n */\n toggleSelectionAll(event: any): void {\n\n if (this.selectionMode === 'single') return;\n\n const checked: boolean = event.target.checked;\n\n if (this.rowNodes && this.rowNodes.length > 0) {\n\n if (checked) {\n\n this.api.selectAll();\n\n } else {\n\n this.api.deselectAll();\n }\n }\n }\n}\n","<div class=\"one-grid-checkbox\">\n <input\n [id]=\"api.id\"\n [type]=\"'checkbox'\"\n [class.disabled]=\"rowNodes | headerCheckboxDisabled:selectionMode:allowedEdit\"\n [checked]=\"rowNodes | headerCheckboxChecked:selectionMode:state\"\n [indeterminate]=\"rowNodes | headerCheckboxIndeterminate:selectionMode:state\"\n (change)=\"toggleSelectionAll($event)\" />\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneSortModel } from '../models/one-grid-types.model';\n\n@Pipe({\n standalone: false,\n name: 'columnSortState'\n})\nexport class ColumnSortStatePipe implements PipeTransform {\n\n transform(field: string, sortModel: OneSortModel[]): 'asc' | 'desc' | null {\n\n if (!sortModel || !field) return null;\n\n return sortModel.find(s => s.colId === field)?.sort ?? null;\n }\n}\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { OneColumnDef, OneGroupColumnDef } from '../../core/models/one-column-def-types.model';\nimport { Subject, Subscription } from 'rxjs';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneSortModel } from '../../core/models/one-grid-types.model';\nimport { ColumnChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\n\n@Component({\n standalone: false,\n selector: 'one-grid-header',\n templateUrl: './one-grid-header.component.html',\n styleUrl: './one-grid-header.component.scss'\n})\nexport class OneGridHeaderComponent<T> implements OnInit, OnDestroy {\n\n @Input() scrollLeft = 0;\n @Input() allowedEdit: boolean = false;\n @Input() enableGroupColumnDefs: boolean = false;\n @Input() api!: OneGridApi<T>;\n\n protected groupColumnDefs: OneGroupColumnDef[] = [];\n protected columnDefs: OneColumnDef<T>[] = [];\n\n private sortModel: OneSortModel<T>[] = [];\n private destroy$ = new Subject<void>();\n private subscriptions = new Subscription();\n private draggedIndex: number | null = null;\n\n // Track resize state\n private resizing = false;\n private resizeColumnIndex: number | null = null;\n private startX = 0;\n private startWidth = 0;\n\n constructor(\n private eventService: OneGridEventService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n\n // Listen Column Changed Event\n this.subscriptions.add(this.eventService.addEventListener('columnChanged', (payload: ColumnChangedEvent) => {\n\n const { groups, columns } = payload;\n\n if (groups) {\n\n this.groupColumnDefs = groups as OneGroupColumnDef[];\n }\n\n if (columns) {\n\n this.columnDefs = columns as OneColumnDef[];\n }\n\n // this.cdr.markForCheck();\n }));\n }\n\n onHeaderMenuOptionClick(columnDef: OneColumnDef<T>) {\n\n }\n\n onHeaderMenuSortClick(colId: keyof T) {\n\n const currentSort = this.sortModel.find(sort => sort.colId === colId)?.sort ?? null;\n\n const nextSort = this.cycleSort(currentSort);\n\n this.sortModel = nextSort ? [{ colId, sort: nextSort }] : [];\n\n this.api.onSortChanged(this.sortModel);\n }\n\n // Cycle Sorting Model\n private cycleSort(current: 'asc' | 'desc' | null): 'asc' | 'desc' | null {\n\n switch (current) {\n\n case null: return 'asc';\n\n case 'asc': return 'desc';\n\n case 'desc': return null;\n\n default: return null;\n }\n }\n\n onResizeStart(event: MouseEvent, columnIndex: number): void {\n\n // Prevent text selection and default behavior\n event.preventDefault();\n event.stopPropagation();\n\n // Store initial values\n this.resizing = true;\n this.resizeColumnIndex = columnIndex;\n this.startX = event.clientX;\n this.startWidth = this.columnDefs[columnIndex].width;\n\n // Add document-level listeners for drag and release\n document.addEventListener('mousemove', this.onResizeMove);\n document.addEventListener('mouseup', this.onResizeEnd);\n\n // Add a class to body to maintain cursor during drag\n document.body.style.cursor = 'col-resize';\n }\n\n // Arrow function to preserve 'this' context\n private onResizeMove = (event: MouseEvent): void => {\n\n if (!this.resizing || this.resizeColumnIndex === null) return;\n\n // Calculate how far the mouse has moved\n const deltaX = event.clientX - this.startX;\n\n // Calculate new width (with minimum of 50px)\n const newWidth = Math.max(50, this.startWidth + deltaX);\n\n // Update the column width\n this.api.updateColumn(this.columnDefs[this.resizeColumnIndex].id, { width: newWidth });\n }\n\n private onResizeEnd = (): void => {\n\n // Clean up\n this.resizing = false;\n this.resizeColumnIndex = null;\n document.body.style.cursor = '';\n\n // Remove document listeners\n document.removeEventListener('mousemove', this.onResizeMove);\n document.removeEventListener('mouseup', this.onResizeEnd);\n }\n\n // Track the dragged column index\n onDragColumnStart(event: DragEvent, index: number): void {\n\n this.draggedIndex = index;\n\n // Optional: Set drag image/effect\n if (event.dataTransfer) {\n\n event.dataTransfer.effectAllowed = 'move';\n }\n }\n\n onDragColumnOver(event: DragEvent, targetIndex: number): void {\n\n event.preventDefault();\n\n // Skip if dragging over itself or no drag in progress\n if (this.draggedIndex === null || this.draggedIndex === targetIndex) {\n\n return;\n }\n\n // IMMEDIATELY reorder columns\n this.api.reorderColumnDefs(this.draggedIndex, targetIndex);\n\n // Update draggedIndex to the new position\n this.draggedIndex = targetIndex;\n }\n\n onDragColumnEnd(event: DragEvent): void {\n\n this.draggedIndex = null;\n }\n\n onDropColumn(event: DragEvent): void {\n\n event.preventDefault();\n\n this.draggedIndex = null;\n }\n\n /**\n * Clear All Subscriptions\n */\n ngOnDestroy(): void {\n\n this.destroy$.complete();\n }\n}\n","<div class=\"one-grid-header\">\n @if (enableGroupColumnDefs) {\n <div class=\"one-group-header-row\" [style.transform]=\"'translateX(-' + scrollLeft + 'px)'\">\n <ng-container *ngTemplateOutlet=\"groupColumns; context: { groups: groupColumnDefs }\"></ng-container>\n </div>\n }\n <div class=\"one-grid-header-viewport\">\n <div class=\"one-header-row\" [style.transform]=\"'translateX(-' + scrollLeft + 'px)'\">\n <ng-container *ngTemplateOutlet=\"headerColumns; context: { columns: columnDefs }\"></ng-container>\n </div>\n </div>\n</div>\n\n<!-- Group Header Cell Template -->\n<ng-template #groupColumns let-groups=\"groups\">\n @for(group of groups; track group.id) {\n <div class=\"one-group-header-cell\"\n [style.width.px]=\"group.width\"\n [ngClass]=\"group._resolvedGroupClass\"\n [ngStyle]=\"group._resolvedGroupStyle\">\n <div class=\"one-group-header-cell-text\">\n {{ group.headerName }}\n </div>\n </div>\n }\n</ng-template>\n\n<!-- Header Cell Template -->\n<ng-template #headerColumns let-columns=\"columns\">\n @for (col of columns; let colIndex = $index; track col.id) {\n <div class=\"one-grid-header-column\"\n [attr.data-index]=\"colIndex\"\n [style.width.px]=\"col.width\"\n [style.min-width.px]=\"col.minWidth\"\n [style.max-width.px]=\"col.maxWidth\"\n [draggable]=\"col?.dragable\"\n (dragstart)=\"onDragColumnStart($event, colIndex)\"\n (dragover)=\"onDragColumnOver($event, colIndex)\"\n (dragend)=\"onDragColumnEnd($event)\"\n (drop)=\"onDropColumn($event)\">\n <div class=\"one-grid-header-cell\"\n [ngClass]=\"col._resolvedHeaderClass\"\n [ngStyle]=\"col._resolvedHeaderStyle\"\n >\n <span class=\"one-grid-header-cell-group\">\n @if (col?.headerCheckboxSelection) {\n <one-grid-checkbox-header\n [api]=\"api\"\n [allowedEdit]=\"allowedEdit\"\n />\n }\n\n {{ col?.headerName ?? '' }}\n </span>\n\n <!-- Og Resize Handler -->\n @if (col?.resizable) {\n <div class=\"og-resize-handle\" (mousedown)=\"onResizeStart($event, colIndex)\">\n <i class=\"bi bi-grip-vertical\"></i>\n </div>\n }\n\n <div class=\"one-grid-header-cell-group\">\n\n <!-- Sort Menu Button -->\n @if (col?.sortable) {\n <div class=\"one-grid-header-menu-button\" (click)=\"onHeaderMenuSortClick(col.field)\">\n\n @if ((col.field | columnSortState:api.sortModel) === 'asc') {\n <lucide-icon name=\"arrow-up-a-z\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n }\n @else if ((col.field | columnSortState:api.sortModel) === 'desc') {\n <lucide-icon name=\"arrow-down-z-a\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n }\n @else {\n <lucide-icon name=\"arrow-down-up\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n }\n </div>\n }\n\n <!-- Og Option Menu Button -->\n @if (col && !col.suppressHeaderMenuButton) {\n <div class=\"one-grid-header-menu-button\" (click)=\"onHeaderMenuOptionClick(col)\">\n <i class=\"bi bi-three-dots-vertical\"></i>\n </div>\n }\n </div>\n </div>\n </div>\n }\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneCellStates, OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n name: 'cellEditable',\n standalone: false\n})\nexport class CellEditablePipe implements PipeTransform {\n transform(\n cellStates: OneCellStates,\n column: OneColumnDef,\n node: OneRowNode,\n editable: (column: OneColumnDef, node: OneRowNode) => boolean,\n updatable: (column: OneColumnDef, node: OneRowNode) => boolean,\n allowedEdit: boolean\n ): boolean {\n if (cellStates) {\n return (\n editable(column, node) &&\n updatable(column, node) &&\n allowedEdit &&\n !(\n column?.cellRendererParams?.validateSelectedRowOnly && !node?.selected\n ) &&\n ((node?.leaf &&\n !(node?.group && node?.leafGroup) &&\n !column?.autoGroupField) ||\n (!node?.leaf &&\n (node?.group || node?.leafGroup) &&\n column?.autoGroupField &&\n column?.editableLevels?.includes(node.level)))\n )\n }\n\n return false\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridSelectionService } from '../../core/services/one-grid-selection.service';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneGridRowActionEvent } from '../../core/models/one-grid-types.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-checkbox',\n templateUrl: './one-grid-checkbox.component.html',\n styleUrl: './one-grid-checkbox.component.scss'\n})\nexport class OneGridCheckboxComponent<T> {\n\n @Input() node: OneRowNode<T>;\n @Input() allowedEdit: boolean = false;\n @Input() api!: OneGridApi<T>;\n @Output() onRowSelection = new EventEmitter<OneGridRowActionEvent<T>>();\n\n constructor(\n private selectionService: OneGridSelectionService,\n private eventService: OneGridEventService\n ) {}\n\n onToggleSelection(event: any) {\n\n const isChecked = event.target.checked;\n const { rowId, rowIndex, data } = this.node;\n const selectionMode = this.selectionService.getSelectionMode();\n\n if (selectionMode === 'single') {\n \n this.api.deselectAll();\n\n if (isChecked) {\n\n this.node.setSelected(true);\n }\n\n this.api.toggleSelection(rowId, isChecked);\n\n } else {\n\n // Multi-select mode\n this.selectionService.toggleSelection(rowId, isChecked);\n\n this.node.setSelected(isChecked);\n }\n\n this.node.cellStates = { ...this.node.cellStates };\n\n this.eventService.dispatchEvent('selectionChanged', { rowIndex, selected: isChecked, data, node: this.node });\n\n this.onRowSelection.emit({ rowIndex, selected: isChecked, data, node: this.node });\n }\n}\n","\n<div class=\"one-grid-checkbox\">\n <input type=\"checkbox\"\n [name]=\"node.rowId\"\n [class.disabled]=\"!(allowedEdit)\"\n [checked]=\"node.selected\"\n (change)=\"onToggleSelection($event)\"/>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\nimport { resolveOneCellRendererParams } from '../../helpers/one-column-def.helper';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\n\n@Pipe({\n standalone: false,\n name: 'cellDisableResolver'\n})\nexport class CellDisableResolverPipe implements PipeTransform {\n\n transform(node: OneRowNode, column: OneColumnDef, context: any, allowedEdit: boolean): boolean {\n\n if (!column || !node) return false;\n\n return resolveOneCellRendererParams(column.disable, {\n node,\n data: node.data,\n columnDef: column,\n rowIndex: node.rowIndex,\n context\n }) || !allowedEdit;\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridRowActionEvent, OneGridType } from '../../core/models/one-grid-types.model';\nimport { OneCellRendererParams, OneColumnDef } from '../../core/models/one-column-def-types.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-row-action',\n templateUrl: './one-grid-row-action.component.html',\n styleUrl: './one-grid-row-action.component.scss'\n})\nexport class OneGridRowActionComponent<T> implements OnInit {\n\n /**\n * Get Node & Cell Renderer From Parent Component\n */\n @Input({ required: true }) column: OneColumnDef<T>;\n @Input({ required: true }) node: OneRowNode<T>;\n @Input({ required: true }) allowedEdit: boolean = false;\n @Input() masterDetail: boolean = false;\n @Input() masterNode: OneRowNode<T> = null;\n @Input() cellRendererParams: OneCellRendererParams<T>;\n @Input() gridType: OneGridType = null;\n @Input() context: any = null;\n\n /**\n * Bind Event to Parent Component\n */\n @Output() onRowGotoDetail = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowAddNew = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowView = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLocation = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDocument = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCopy = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDelete = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowGotoList = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowEdit = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowPrint = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowHistory = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLanguage = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCellOption = new EventEmitter<OneGridRowActionEvent<T>>();\n\n protected detailActiveExcludeLevels: Set<number>;\n protected gotoDetailExcludeLevels: Set<number>;\n protected addNewExcludeLevels: Set<number>;\n\n ngOnInit(): void {\n\n this.detailActiveExcludeLevels = new Set(this.column.cellRendererParams?.detailActiveExcludeLevels ?? [])\n this.gotoDetailExcludeLevels = new Set(this.column.cellRendererParams?.gotoDetailExcludeLevels ?? [])\n this.addNewExcludeLevels = new Set(this.column.cellRendererParams?.addNewExcludeLevels ?? []);\n }\n\n /**\n * Trigger Invoke Click Event\n */\n invokeRowToggleDetailActiveExpand(node: OneRowNode): void {\n\n node.detailActive = !node.detailActive;\n }\n\n invokeRowActionGotoDetail(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowGotoDetail.emit(data);\n }\n\n invokeRowActionAddNew(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowAddNew.emit(data);\n }\n\n invokeRowActionView(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowView.emit(data);\n }\n\n invokeRowActionLocation(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowLocation.emit(data);\n }\n\n invokeRowActionDocument(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowDocument.emit(data);\n }\n\n invokeRowActionCopy(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowCopy.emit(data);\n }\n\n invokeRowActionDelete(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowDelete.emit(data);\n }\n\n invokeRowActionGotoList(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowGotoList.emit(data);\n }\n\n invokeRowActionEdit(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowEdit.emit(data);\n }\n\n invokeRowActionPrint(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowPrint.emit(data);\n }\n\n invokeRowActionHistory(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowHistory.emit(data);\n }\n\n invokeRowActionOption(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowOption.emit(data);\n }\n\n invokeRowActionLanguage(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowLanguage.emit(data);\n }\n\n invokeRowActionCellOption(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let data: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n data = { ...data, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onRowCellOption.emit(data);\n }\n}\n","@if ((cellRendererParams && node?.leaf && !column?.autoGroupField && !(node.group && node.leafGroup)) || (column?.rowActionLevels?.includes(node.level) && column?.autoGroupField)) {\n <div class=\"btn-action-container\">\n\n <!-- Expansion Button Status -->\n @if ((cellRendererParams?.detailActiveButtonStatus == 1 && !(detailActiveExcludeLevels?.has(node.level)))) {\n <a\n class=\"me-2\"\n [attr.aria-label]=\"node.detailActive ? 'Collapse row' : 'Expand row'\"\n [title]=\"node.detailActive ? 'Collapse' : 'Expand'\"\n (click)=\"invokeRowToggleDetailActiveExpand(node)\">\n\n <i class=\"bi\" [ngClass]=\"{ 'bi-chevron-down': node.detailActive, 'bi-chevron-right': !node.detailActive }\"></i>\n </a>\n }\n\n <!-- Goto Detail Button Status -->\n @if ((cellRendererParams?.gotoDetailButtonStatus == 1 && !(gotoDetailExcludeLevels?.has(node.level))) && (!column?.hideActionButton || allowedEdit)) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionGotoDetail(node, column)\">\n\n <i class=\"bi bi-list-task\"></i>\n </button>\n }\n\n <!-- Add New Button Status -->\n @if ((cellRendererParams?.addNewButtonStatus == 1 && !(addNewExcludeLevels?.has(node.level))) && (!column?.hideActionButton || allowedEdit)) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"!allowedEdit\"\n (click)=\"invokeRowActionAddNew(node, column)\">\n\n <i class=\"bi bi-plus\"></i>\n </button>\n }\n\n <!-- View Button Status -->\n @if (cellRendererParams?.viewButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionView(node, column)\">\n\n <i class=\"bi bi-eye\"></i>\n </button>\n }\n @if (cellRendererParams?.locationButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionLocation(node, column)\">\n\n <i class=\"bi bi-geo-alt\"></i>\n </button>\n }\n\n <!-- Document Button Status -->\n @if (cellRendererParams?.documentButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionDocument(node, column)\">\n\n <i class=\"bi bi-file-earmark-text\"></i>\n </button>\n }\n\n <!-- Copy Button Status -->\n @if (cellRendererParams?.copyButtonStatus == 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n (click)=\"invokeRowActionCopy(node, column)\">\n\n <i class=\"bi bi-files\"></i>\n </button>\n }\n\n\n <!-- Delete Button Status -->\n @if (cellRendererParams?.deleteButtonStatus == 1 && (!column?.hideActionButton || allowedEdit)) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-danger\"\n [class.disabled]=\"!allowedEdit\"\n (click)=\"invokeRowActionDelete(node, column)\">\n\n <i class=\"bi bi-trash3\"></i>\n </button>\n }\n\n <!-- Goto List Button Status -->\n @if (cellRendererParams?.gotoListButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-success\"\n (click)=\"invokeRowActionGotoList(node, column)\">\n\n <i class=\"bi bi-list-ul\"></i>\n </button>\n }\n\n <!-- Edit Button Status -->\n @if (cellRendererParams?.editButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionEdit(node, column)\">\n\n <i class=\"bi bi-pencil\"></i>\n </button>\n }\n\n <!-- Print Button Status -->\n @if (cellRendererParams?.printButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionPrint(node, column)\">\n\n <i class=\"bi bi-printer\"></i>\n </button>\n }\n\n <!-- History Button Status -->\n @if (cellRendererParams?.historyButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionHistory(node, column)\">\n\n <i class=\"bi bi-clock-history\"></i>\n </button>\n }\n\n <!-- Option Button Status -->\n @if (cellRendererParams?.optionButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionOption(node, column)\">\n\n <i class=\"bi bi-three-dots-vertical\"></i>\n </button>\n }\n\n <!-- Language Button Status -->\n @if (cellRendererParams?.languageButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionLanguage(node, column)\">\n\n <i class=\"bi bi-translate\"></i>\n </button>\n }\n\n <!-- Cell Optoion Button Status (Context Menu) -->\n @if (cellRendererParams?.cellOptionButtonStatus === 1) {\n <button\n type=\"button\"\n class=\"btn-action btn-action-primary border-0 text-body\"\n [style.background]=\"'transparent'\"\n [class.disabled]=\"node | cellDisableResolver:column:context:allowedEdit\"\n (click)=\"invokeRowActionCellOption(node, column)\">\n\n <i class=\"bi bi-three-dots-vertical\"></i>\n </button>\n }\n </div>\n}","import { Component, EventEmitter, Input, Output, Type } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { ExpansionChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneDetailCellRendererParams } from '../../core/models/one-master-detail.model';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-cell-group-renderer',\n templateUrl: './one-grid-cell-group-renderer.component.html',\n styleUrl: './one-grid-cell-group-renderer.component.scss'\n})\nexport class OneGridCellGroupRendererComponent<T> {\n\n @Input() node: OneRowNode<T>;\n @Input() masterDetail: boolean = false;\n @Input() detailCellRendererParams: OneDetailCellRendererParams;\n @Input() detailRendererComponent: Type<OneCellRendererComponent>;\n @Output() expansionChanged = new EventEmitter<ExpansionChangedEvent<T>>();\n\n invokeChangedClick() {\n\n // if (this.masterDetail && !this.node.expanded) {\n\n // this.detailCellRendererParams.getDetailRowData({ data: this.node.data, node: this.node, successCallback: (rows) => { this.node.setDetailRowData(rows) }});\n // }\n\n this.expansionChanged.emit({ rowIndex: this.node.rowIndex, data: this.node.data, node: this.node });\n }\n}\n","@if (node.expandable) {\n <span class=\"cell-group-renderer\" [style.padding-left.px]=\"6\" (click)=\"invokeChangedClick()\">\n @if (node.children?.length > 0 || masterDetail) {\n <i [class.node-expanded]=\"node.expanded\" class=\"bi bi-chevron-right expansion-icon\"></i>\n }\n </span>\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { OneCellValidationType } from '../models/one-column-def-types.model';\n\n@Directive({\n standalone: false,\n selector: '[oneCellInputValidator]'\n})\nexport class OneCellInputValidatorDirective {\n\n @Input() validationType?: OneCellValidationType;\n @Input() regex?: string = '';\n\n private readonly MAX_CODE_LENGTH: number = 36;\n private readonly KHMER_CHARACTER_RANGE = /[\\u1780-\\u17FF]/;\n\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: KeyboardEvent) {\n\n let isValid = false;\n const char = event.key;\n const inputElement = this.el.nativeElement;\n\n switch (this.validationType) {\n\n case 'disabled':\n event.preventDefault();\n return;\n\n case 'integer':\n isValid = /^\\d+$/.test(char);\n break;\n\n case 'code':\n isValid = /[a-zA-Z\\d]/.test(char);\n if (isValid) {\n event.preventDefault();\n if (inputElement.value.length < this.MAX_CODE_LENGTH) {\n inputElement.value += char.toUpperCase();\n }\n }\n return;\n\n case 'title':\n isValid = /^[a-zA-Z\\s\\d]+$/.test(char) || this.KHMER_CHARACTER_RANGE.test(char);\n break;\n\n case 'number':\n isValid = /^[0-9.]$/.test(char) && !(char === '.' && inputElement.value.includes('.'));\n break;\n\n case 'regex':\n isValid = this.regex ? new RegExp(this.regex).test(char) : false;\n break;\n\n default:\n isValid = true;\n }\n\n if (!isValid) {\n event.preventDefault();\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n\n if (this.validationType === 'disabled') {\n\n event.preventDefault();\n }\n }\n}","import { ComponentRef, Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, Type, ViewContainerRef } from '@angular/core';\nimport { OneCellRendererParams } from '../models/one-column-def-types.model';\nimport { OneCellRendererComponent } from '../models/one-tree-data.model';\nimport { getFieldValue } from '../../helpers/one-cell.helper';\n\n@Directive({\n standalone: false,\n selector: '[oneCellRendererComponent]'\n})\nexport class OneCellRendererComponentDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input({ required: true }) cellRendererComponent!: Type<OneCellRendererComponent>;\n @Input({ required: true }) params: OneCellRendererParams;\n\n private compRef?: ComponentRef<OneCellRendererComponent>;\n private initialized = false;\n\n constructor(private vcr: ViewContainerRef) {}\n\n ngOnInit(): void {\n\n this.initialized = true;\n\n this.createOrUpdateComponent(true);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n if (!this.initialized) return;\n\n const componentChanged = changes['cellRendererComponent'];\n \n const paramsChanged = changes['params'];\n\n if (componentChanged) {\n\n this.destroyComponent();\n\n this.createOrUpdateComponent(true);\n\n } else if (paramsChanged) {\n\n this.updateComponentInputs();\n }\n }\n\n private createOrUpdateComponent(forceCreate = false): void {\n\n if (!this.cellRendererComponent) return;\n\n if (forceCreate || !this.compRef) {\n this.vcr.clear();\n this.compRef = this.vcr.createComponent(this.cellRendererComponent);\n }\n\n this.updateComponentInputs();\n }\n\n private updateComponentInputs(): void {\n\n if (!this.compRef?.instance) return;\n\n const instance = this.compRef.instance as OneCellRendererComponent;\n\n if (typeof instance.oneInit === 'function') {\n\n const newParams = { ...this.params };\n\n newParams.value = getFieldValue(this.params.data, this.params?.columnDef?.field) ?? null;\n\n instance.oneInit(newParams);\n\n } else {\n\n Object.assign(instance, this.params);\n }\n\n // Optional: call change detector if needed\n // if (this.compRef.changeDetectorRef) {\n\n // this.compRef.changeDetectorRef.detectChanges();\n // }\n }\n\n private destroyComponent(): void {\n\n if (this.compRef) {\n\n this.compRef.destroy();\n\n this.compRef = undefined;\n }\n }\n\n ngOnDestroy(): void {\n\n this.destroyComponent();\n }\n}","import { AfterViewChecked, AfterViewInit, Directive, ElementRef, HostListener, OnDestroy, Renderer2 } from '@angular/core';\n\n@Directive({\n standalone: false,\n selector: '[oneCellTextExpand]'\n})\nexport class OneCellTextExpandDirective implements AfterViewInit, AfterViewChecked, OnDestroy {\n\n private overflowing = false;\n private timer: any;\n private lastText: string | null = null;\n\n constructor(private cell: ElementRef<HTMLElement>, private renderer: Renderer2) {}\n\n ngAfterViewInit() {\n\n this.checkOverflow();\n\n this.lastText = this.cell.nativeElement.textContent;\n }\n\n ngAfterViewChecked() {\n\n const currentText = this.cell.nativeElement.textContent;\n\n if (this.lastText !== currentText) {\n\n this.lastText = currentText;\n\n this.checkOverflow();\n\n this.collapse();\n }\n }\n\n ngOnDestroy() {\n\n clearTimeout(this.timer);\n\n this.collapse();\n }\n\n private checkOverflow() {\n\n const cell = this.cell.nativeElement;\n\n this.overflowing = cell.scrollWidth > cell.clientWidth;\n }\n\n @HostListener('window:resize')\n onResize() {\n\n this.checkOverflow();\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n\n if (!this.overflowing) return;\n\n this.timer = setTimeout(() => this.expand(), 800);\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n\n clearTimeout(this.timer);\n\n this.collapse();\n }\n\n private expand() {\n\n const cell = this.cell.nativeElement;\n\n this.renderer.setStyle(cell, 'overflow', 'visible');\n this.renderer.setStyle(cell, 'text-overflow', 'unset');\n this.renderer.setStyle(cell, 'z-index', '1000');\n this.renderer.setStyle(cell, 'background', 'var(--ins-card-bg)');\n this.renderer.setStyle(cell, 'white-space', 'nowrap');\n this.renderer.setStyle(cell, 'transition', 'width 0.3s ease');\n this.renderer.setStyle(cell, 'padding', '4px 8px');\n this.renderer.setStyle(cell, 'border-radius', '4px');\n }\n\n private collapse() {\n\n const cell = this.cell.nativeElement;\n\n this.renderer.setStyle(cell, 'white-space', 'nowrap');\n this.renderer.setStyle(cell, 'overflow', 'hidden');\n this.renderer.setStyle(cell, 'text-overflow', 'ellipsis');\n this.renderer.removeStyle(cell, 'z-index');\n this.renderer.removeStyle(cell, 'background');\n this.renderer.removeStyle(cell, 'padding');\n this.renderer.removeStyle(cell, 'border-radius');\n }\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneColumnDef } from '../../core/models/one-column-def-types.model';\nimport { CellOptionMenuSelectedEvent, OneCellOptionMenu } from '../../core/models/one-event-types.model';\n\n@Component({\n selector: 'one-grid-cell-option-menu',\n standalone: false,\n templateUrl: './one-grid-cell-option-menu.component.html',\n styleUrl: './one-grid-cell-option-menu.component.scss',\n})\nexport class OneGridCellOptionMenuComponent {\n\n @Input() column: OneColumnDef = null;\n @Input() node: OneRowNode = null;\n @Input() options: OneCellOptionMenu[] = [];\n @Output() cellOptionMenuSelect = new EventEmitter<CellOptionMenuSelectedEvent>();\n @Output() cellOptionMenuClose = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef) {}\n\n // Click outside\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n\n const target = event.target as HTMLElement;\n\n if (!this.elementRef.nativeElement.contains(target)) {\n\n this.close();\n }\n }\n\n // Escape key\n @HostListener('document:keydown.escape')\n onEscape() {\n\n this.close();\n }\n\n // Scroll closes menu (prevents misalignment)\n @HostListener('document:scroll')\n onScroll() {\n\n this.close();\n }\n\n // Option selected\n onOptionSelected(option: any) {\n\n this.cellOptionMenuSelect.emit({\n column: this.column,\n node: this.node,\n option: option\n });\n this.close();\n }\n\n // Single close method\n private close() {\n\n this.node.cellOptions[this.column.field] = false;\n this.cellOptionMenuClose.emit();\n }\n}\n","<div class=\"cell-option-menu\" #menuEl>\n @for (opt of options; track opt.value) {\n <div class=\"cell-option-menu-item\" (click)=\"onOptionSelected(opt)\">\n <!-- <span [style.padding-right.px]=\"8\"><lucide-icon name=\"check\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon></span> -->\n <span>{{ opt.text }}</span> \n </div>\n }\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellError } from '../../helpers/one-validation.helper';\nimport { OneCellStates, OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n standalone: false,\n name: 'cellInvalid'\n})\nexport class CellInvalidPipe<T> implements PipeTransform {\n\n transform(cellStates: OneCellStates, value: any, column: OneColumnDef<T>, node: OneRowNode<T>, allowedEdit: boolean, submitted: boolean): boolean {\n\n if (!column.validationRules?.length) {\n\n return false;\n }\n\n return getCellError(column, node, value, node.data) !== null && !(node.editing[column.field]) && !(column?.cellRendererParams?.validateSelectedRowOnly && !node?.selected) && allowedEdit && submitted;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellKey } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellSelected'\n})\nexport class CellSelectedPipe implements PipeTransform {\n\n transform(selectedCells: Set<string>, rowId: string, field: string): boolean {\n\n if (!selectedCells) return false;\n\n return selectedCells.has(getCellKey(rowId, field));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneCellRendererParams } from '../models/one-column-def-types.model';\n\n@Pipe({\n standalone: false,\n name: 'cellActionButtonEnable'\n})\nexport class CellActionButtonEnablePipe<T> implements PipeTransform {\n\n transform(params: OneCellRendererParams<T> | null): boolean {\n\n if (!params) {\n \n return false;\n }\n\n const statusValues = Object.values(params);\n\n return statusValues.some(status => status === 1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellKey } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellKey'\n})\nexport class CellKeyPipe implements PipeTransform {\n\n transform(rowId?: string | null, field?: string | null): string {\n\n if (!rowId || !field) {\n\n return '';\n }\n\n return getCellKey(rowId, field);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n standalone: false,\n name: 'cellLevelPadding'\n})\nexport class CellLevelPaddingPipe implements PipeTransform {\n\n transform(level: number, factor: number): number {\n\n level += 1;\n \n return level * factor;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneCellStates } from '../models/one-column-def-types.model';\n\n@Pipe({\n standalone: false,\n name: 'cellStateRenderer'\n})\nexport class CellStateRendererPipe implements PipeTransform {\n\n transform(cellStates: OneCellStates | null | undefined, field: string): string {\n\n const value = cellStates?.[field]?.value;\n\n if (value === null || value === undefined) {\n\n return null;\n }\n \n if (typeof value === 'string' && value.trim() === '') {\n\n return null;\n }\n\n return value;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef, Type, ViewChild } from '@angular/core';\nimport { CellSelection, OneCellRendererParams, OneColumnDef } from '../../core/models/one-column-def-types.model';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { Subject, Subscription } from 'rxjs';\nimport { OneGridGetRowIdParams, OneGridReadyEvent, OneGridRowActionEvent, OneGridType } from '../../core/models/one-grid-types.model';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { CellOptionMenuSelectedEvent, ColumnChangedEvent, ExpansionChangedEvent, RowDataChangedEvent, SelectionChangedEvent, SortChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneDetailCellRendererParams } from '../../core/models/one-master-detail.model';\nimport { CellEditablePipe } from '../../core/pipes/cell-editable.pipe';\nimport { getCellKey, getFieldValue } from '../../helpers/one-cell.helper';\nimport { OneGridCellService } from '../../core/services/one-grid-cell.service';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { OgColumnService } from '../../core/services/og-column.service';\n\n@Component({\n standalone: false,\n selector: 'one-grid-body',\n templateUrl: './one-grid-body.component.html',\n styleUrl: './one-grid-body.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OneGridBodyComponent<T> implements OnInit, OnDestroy {\n\n /**\n * Core Properties\n */\n @ViewChild('bodyRef', { static: true }) bodyRef!: ElementRef;\n @Input({ required: true }) rowData: T[] = [];\n @Input() rowNumber: boolean;\n @Input() api!: OneGridApi<T>;\n @Input() pagination: boolean = false;\n @Input() allowedEdit: boolean = true;\n @Input() enableGroupColumnDefs: boolean = false;\n @Input() submitted: boolean = false;\n @Input() context: any = null;\n @Input() getRowId: (params: OneGridGetRowIdParams<T>) => string;\n @Input({ required: true }) gridCopy$!: Subject<ClipboardEvent>;\n @ViewChild(CdkVirtualScrollViewport) viewport!: CdkVirtualScrollViewport;\n\n protected columnDefs: OneColumnDef<T>[] = [];\n protected cellRenderer: boolean = false;\n\n /**\n * Master Detail Properties\n */\n @Input() gridType: OneGridType = 'simple';\n @Input() masterDetail: boolean = false;\n @Input() masterNode: OneRowNode<T> = null;\n // @Input() detailRowHeight: number = null;\n // @Input() detailRowAutoHeight: boolean = false;\n @Input() detailRowMaxHeight: number = null;\n @Input() detailCellRendererParams: OneDetailCellRendererParams;\n @Input() detailGridTemplate: TemplateRef<unknown> = null;\n @Input() detailRendererComponent: Type<OneCellRendererComponent>;\n\n /**\n * Tree Data Properties\n */\n @Input() treeData: boolean = false;\n @Input() treeDataChildrenField: string;\n @Input() autoGroupColumnDef: OneColumnDef<T>;\n @Input() groupDefaultExpanded: number = -1; // It's work with master detail also\n\n /**\n * Passing Row Action Events to Parent\n */\n @Output() onRowGotoDetail = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowAddNew = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowView = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCopy = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLocation = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDocument = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDelete = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowGotoList = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowEdit = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowPrint = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowHistory = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLanguage = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCellOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowSelection = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onShiftDoubleClick = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() rowCountChanged = new EventEmitter<number>();\n\n @Output() expansionChanged = new EventEmitter<ExpansionChangedEvent<T>>();\n @Output() bodyScroll = new EventEmitter<number>();\n @Output() cellOptionSelect = new EventEmitter<any>();\n\n /**\n * Selection Range Variables\n */\n protected rowWidth: number = 0;\n protected nodes: OneRowNode<T>[] = [];\n protected selectedCells = new Set<string>();\n private isMouseDown = false;\n private startCell: CellSelection = null;\n private lastScrollLeft = 0;\n private cellEditablePipe = new CellEditablePipe();\n private subscriptions = new Subscription();\n\n protected cellRendererParams: OneCellRendererParams = {\n gotoDetailButtonStatus: 1,\n addNewButtonStatus: 1,\n viewButtonStatus: 1,\n locationButtonStatus: 1,\n documentButtonStatus: 1,\n copyButtonStatus: 1,\n deleteButtonStatus: 1,\n gotoListButtonStatus: 1,\n optionButtonStatus: 1,\n languageButtonStatus: 1,\n editButtonStatus: 1,\n printButtonStatus: 1,\n historyButtonStatus: 1,\n }\n\n /**\n * Virtual Scroll Properties\n */\n protected itemSize: number = 30;\n protected minBufferPx: number = 200;\n protected maxBufferPx: number = 400;\n\n constructor(\n protected colService: OgColumnService,\n protected cellService: OneGridCellService,\n private eventService: OneGridEventService,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnInit(): void {\n\n /**\n * Listen Grid Copy Event\n */\n this.subscriptions.add(this.gridCopy$.subscribe((event: ClipboardEvent) => {\n\n this.onGridCopy(event);\n }));\n\n /**\n * Listen Column Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('columnChanged', (payload: ColumnChangedEvent) => {\n\n this.columnDefs = [...payload.columns] as OneColumnDef[];\n\n this.cellRenderer = this.columnDefs.some(col => col.cellRendererComponent);\n\n this.rowWidth = this.columnDefs.reduce((sum, col) => sum + (col.width ? col.width > col.maxWidth ? col.maxWidth : col.width < col.minWidth ? col.minWidth : col.width : col.minWidth), 0);\n\n this.cdr.markForCheck();\n }));\n\n /**\n * Listen Row Data Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('rowDataChanged', ({ nodes }: RowDataChangedEvent<T>) => {\n\n this.rowCountChanged.emit(nodes?.length ?? 0);\n\n setTimeout(() => {\n\n this.viewport?.checkViewportSize();\n\n this.setVirtualScroll(nodes?.length);\n\n if (this.masterDetail) {\n\n this.nodes = nodes.map((node: OneRowNode) => {\n\n if (node.leaf && this.detailRendererComponent) {\n\n node.detailRendererComponent = this.detailRendererComponent;\n }\n\n if (node.expanded) {\n\n this.api.setDetailRowData(node, [...node.detailRowData]);\n }\n\n return node;\n });\n\n } else {\n\n this.nodes = nodes as OneRowNode<T>[];\n }\n\n this.cdr.markForCheck();\n });\n }));\n\n\n /**\n * Listen Sort Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('sortChanged', ({ nodes }: SortChangedEvent) => {\n\n this.nodes = nodes as OneRowNode<T>[];\n\n this.cdr.markForCheck();\n }));\n\n /**\n * Listen Selection Changed Event\n */\n this.subscriptions.add(this.eventService.addEventListener('selectionChanged', (payload: SelectionChangedEvent<T>) => {\n\n if (payload) {\n\n this.cdr.markForCheck();\n }\n }));\n }\n\n onGridReady(params: OneGridReadyEvent) {\n\n params.api.setRowData(this.masterNode?.detailRowData ?? []);\n }\n\n onBodyScroll(event: Event) {\n\n const scrollLeft = (event.target as HTMLElement).scrollLeft;\n\n if (scrollLeft !== this.lastScrollLeft) {\n\n this.lastScrollLeft = scrollLeft;\n\n this.bodyScroll.emit(scrollLeft);\n return;\n }\n }\n\n /**\n * Track Rendering Row Node By Row ID\n */\n trackByRowId(index: number, node: OneRowNode<T>): string {\n\n return node.rowId;\n }\n\n /**\n * Cell Selection Range Feature\n */\n startSelection(rowId: string, field: string) {\n\n this.isMouseDown = true;\n this.startCell = { rowId, field };\n this.selectedCells.clear();\n this.selectedCells = new Set(this.selectedCells).add(getCellKey(rowId, field));\n }\n\n extendSelection(rowId: string, field: string) {\n\n if (!this.isMouseDown || !this.startCell) return;\n\n const rows = this.nodes; // already sorted\n const startRowIndex = rows.findIndex(r => r.rowId === this.startCell!.rowId);\n const endRowIndex = rows.findIndex(r => r.rowId === rowId);\n\n if (startRowIndex === -1 || endRowIndex === -1) return;\n\n const colStartIndex = this.columnDefs.findIndex(c => c.field === this.startCell!.field);\n const colEndIndex = this.columnDefs.findIndex(c => c.field === field);\n\n if (colStartIndex === -1 || colEndIndex === -1) return;\n\n const rowStart = Math.min(startRowIndex, endRowIndex);\n const rowEnd = Math.max(startRowIndex, endRowIndex);\n const colStart = Math.min(colStartIndex, colEndIndex);\n const colEnd = Math.max(colStartIndex, colEndIndex);\n\n const next = new Set<string>();\n\n for (let r = rowStart; r <= rowEnd; r++) {\n for (let c = colStart; c <= colEnd; c++) {\n next.add(getCellKey(rows[r].rowId, this.columnDefs[c].field));\n }\n }\n\n this.selectedCells = next;\n }\n\n\n endSelection() {\n\n this.isMouseDown = false;\n this.startCell = null;\n }\n\n /**\n * Clear Cells Selected\n */\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n\n if (this.bodyRef?.nativeElement) {\n\n const clickedInside = this.bodyRef.nativeElement.contains(event.target);\n\n if (!clickedInside) {\n\n this.selectedCells.clear();\n }\n }\n }\n\n /**\n * Selection Range Event Hold Mouse Click\n */\n @HostListener('document:mouseup')\n onGlobalMouseUp() {\n\n this.endSelection();\n }\n\n /**\n * Listen Copy Clipboard Event\n */\n onGridCopy(event: ClipboardEvent) {\n\n event.preventDefault();\n\n if (this.selectedCells.size > 0) {\n\n const text = this.buildClipboardText();\n\n event.clipboardData?.setData('text/plain', text);\n\n this.selectedCells.forEach(cellId => {\n\n const cellElement = document.querySelector(`[data-cell-id=\"${cellId}\"]`);\n\n if (cellElement) {\n\n cellElement.classList.add('one-cell-copied');\n\n setTimeout(() => cellElement.classList.remove('one-cell-copied'), 400);\n }\n });\n }\n }\n\n copyToClipboard(value: string) {\n\n if (navigator.clipboard?.writeText) {\n\n navigator.clipboard.writeText(value);\n\n } else {\n\n // Fallback (Safari / older browsers)\n const textarea = document.createElement('textarea');\n textarea.value = value;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n }\n }\n\n /**\n * Build Copy Cell Text to Clipboard\n */\n private buildClipboardText(): string {\n\n if (!this.selectedCells.size) return '';\n\n // Parse selected cells\n const selected = Array.from(this.selectedCells).map(key => {\n\n const [rowId, field] = key.split('--');\n return { rowId, field };\n });\n\n // Resolve visual row indexes from displayedRows\n const rowIndexes = selected\n .map(s => this.nodes.findIndex(r => r.rowId === s.rowId))\n .filter(i => i !== -1);\n\n const colIndexes = selected\n .map(s => this.columnDefs.findIndex(c => c.field === s.field))\n .filter(i => i !== -1);\n\n if (!rowIndexes.length || !colIndexes.length) return '';\n\n const rowStart = Math.min(...rowIndexes);\n const rowEnd = Math.max(...rowIndexes);\n const colStart = Math.min(...colIndexes);\n const colEnd = Math.max(...colIndexes);\n\n const selectedFields = this.columnDefs\n .slice(colStart, colEnd + 1)\n .map(c => c.field);\n\n const clipboardLines: string[] = [];\n\n for (let r = rowStart; r <= rowEnd; r++) {\n\n const row = this.nodes[r];\n const line = selectedFields\n .map(field => {\n\n const key = `${row.rowId}--${field}`;\n\n if (!this.selectedCells.has(key)) {\n\n return '';\n }\n const value = getFieldValue(row.data, field);\n\n return value ?? '';\n\n }).join('\\t');\n\n clipboardLines.push(line);\n }\n\n return clipboardLines.join('\\n');\n }\n\n /**\n * Binding Events Row Action to Parent\n */\n invokeRowActionGotoDetail(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoDetail.emit(event);\n }\n\n invokeRowActionAddNew(event: OneGridRowActionEvent<T>) {\n\n this.onRowAddNew.emit(event);\n }\n\n invokeRowActionView(event: OneGridRowActionEvent<T>) {\n\n this.onRowView.emit(event);\n }\n\n invokeRowActionLocation(event: OneGridRowActionEvent<T>) {\n\n this.onRowLocation.emit(event);\n }\n\n invokeRowActionDocument(event: OneGridRowActionEvent<T>) {\n\n this.onRowDocument.emit(event);\n }\n\n invokeRowActionCopy(event: OneGridRowActionEvent<T>) {\n\n this.onRowCopy.emit(event);\n }\n\n invokeRowActionDelete(event: OneGridRowActionEvent<T>) {\n\n this.onRowDelete.emit(event);\n }\n\n invokeRowActionGotoList(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoList.emit(event);\n }\n\n invokeRowActionEdit(event: OneGridRowActionEvent<T>) {\n\n this.onRowEdit.emit(event);\n }\n\n invokeRowActionPrint(event: OneGridRowActionEvent<T>) {\n\n this.onRowPrint.emit(event);\n }\n\n invokeRowActionHistory(event: OneGridRowActionEvent<T>) {\n\n this.onRowHistory.emit(event);\n }\n\n invokeRowActionOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowOption.emit(event);\n }\n\n invokeRowActionLanguage(event: OneGridRowActionEvent<T>) {\n\n this.onRowLanguage.emit(event);\n }\n\n invokeRowActionCellOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowCellOption.emit(event);\n }\n\n invokeRowActionSelection(event: OneGridRowActionEvent<T>) {\n\n this.onRowSelection.emit(event);\n }\n\n invokeExpansionChangedClick(event: ExpansionChangedEvent): void {\n\n this.expansionChanged.emit(event);\n }\n\n cellOptionMenuSelected(event: CellOptionMenuSelectedEvent) {\n\n this.cellOptionSelect.emit(event);\n }\n\n /**\n * Special Events\n */\n private invokeShiftDoubleClick(node:OneRowNode, column: OneColumnDef): void {\n\n let event: OneGridRowActionEvent = { node, column, data: node.data, rowIndex: node.rowIndex, gridType: null };\n\n if (this.masterDetail) {\n\n event = { ...event, gridType: this.gridType, masterNode: this.masterNode };\n }\n\n this.onShiftDoubleClick.emit(event);\n }\n\n /**\n * Cell Edit Feature\n */\n startEdit(event: MouseEvent, node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n const target = event.target as HTMLElement;\n\n if (target.tagName.toLowerCase() === 'i') {\n\n return;\n }\n\n if (event.shiftKey) {\n\n this.invokeShiftDoubleClick(node, column);\n return;\n }\n\n if (!this.cellEditablePipe.transform(node.cellStates, column, node, this.cellService.editableFn, this.cellService.updatableFn, this.allowedEdit)) {\n\n this.selectedCells.clear();\n\n const cellKey = getCellKey(node.rowId, column.field);\n\n this.selectedCells.add(cellKey);\n\n return;\n }\n\n let rowNode: OneRowNode = this.api.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.editing[column.field] = true;\n\n setTimeout(() => {\n\n const input = document.querySelector<HTMLInputElement>(`[data-cell-id=\"${ getCellKey(node.rowId, column.field) }\"] input`);\n\n if (input) {\n\n input.focus();\n\n const value = input.value;\n\n if (value && [\"text\"].includes(input.type)) {\n\n input.setSelectionRange(value.length, value.length);\n }\n }\n }, 10);\n }\n }\n\n /**\n * Save Cell Edit Mode\n */\n stopEdit(node: OneRowNode<T>, column: OneColumnDef<T>, event: any) {\n\n let rowNode: OneRowNode = this.api.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n event.preventDefault();\n event.stopPropagation();\n\n const value = event.target.value ?? '';\n this.setCellValueByRowId(node.rowId, column, value);\n\n rowNode.cellStates = this.cellService.generateCellStates(rowNode);\n rowNode.editing[column.field] = false;\n\n this.eventService.dispatchEvent('cellStateChanged', {\n data: rowNode.data,\n node: rowNode,\n column: column\n });\n }\n }\n\n /**\n * Cancel Cell Edit Mode\n */\n cancelEdit(node: OneRowNode<T>, column: OneColumnDef<T>) {\n\n let rowNode: OneRowNode = this.api.getRowNodeById(node.rowId);\n\n if (rowNode) {\n\n rowNode.editing[column.field] = false;\n }\n }\n\n /**\n * Set Cell Value\n */\n setCellValueByRowId(rowId: string, column: OneColumnDef, value: any) {\n\n const node = this.api.getRowNodeById(rowId);\n\n if (node && column.field) {\n\n if (column?.cellRendererParams?.inputType !== 'number') {\n\n node.data[column.field] = value === '' ? null : value;\n\n } else {\n\n node.data[column.field] = value === '' ? null : Number(value);\n }\n }\n }\n\n /**\n * Virtual Scroll Properties\n */\n setVirtualScroll(items: number = 0): void {\n\n this.minBufferPx = this.itemSize * items * 1.5;\n\n this.maxBufferPx = this.minBufferPx * 2;\n }\n\n /**\n * Unsubscribe All Subscriptions\n */\n ngOnDestroy(): void {\n\n this.subscriptions.unsubscribe();\n }\n}\n","<div #bodyRef class=\"one-grid-body\">\n <cdk-virtual-scroll-viewport\n class=\"one-grid-body-viewport\"\n [itemSize]=\"itemSize\"\n [minBufferPx]=\"minBufferPx\"\n [maxBufferPx]=\"maxBufferPx\"\n (scroll)=\"onBodyScroll($event)\">\n\n <ng-container *cdkVirtualFor=\"let node of nodes; trackBy: trackByRowId;\">\n \n <div class=\"one-row\" [attr.data-row-id]=\"node.rowId\" [class.one-row-selected]=\"node.selected\">\n @for (col of columnDefs; track col.field;) {\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{ node, rowIndex: node.rowIndex, column: col }\"></ng-container>\n }\n </div>\n\n <!-- Custom Detail Component -->\n @if(node.leaf && node.detailActive && node?.detailRendererComponent) {\n <ng-container\n oneCellRendererComponent\n [cellRendererComponent]=\"node?.detailRendererComponent\"\n [params]=\"{ data: node.data, rowIndex: node.rowIndex, node: node, context: context }\">\n </ng-container>\n }\n\n <!-- Master Detail Grid (template provided by the parent one-grid to avoid a compile-time import cycle) -->\n @if (masterDetail && node.expanded && node?.detailRowData) {\n <div class=\"one-row-detail-container\" [attr.data-row-id]=\"node.rowId + '-detail'\">\n <ng-container\n [ngTemplateOutlet]=\"detailGridTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node }\">\n </ng-container>\n </div>\n }\n </ng-container>\n @if (!nodes?.length) {\n <div style=\"width: max-content; border-top: 1px solid transparent;\">\n <div [style.width.px]=\"rowWidth\"></div>\n </div>\n }\n </cdk-virtual-scroll-viewport>\n @if (!nodes?.length) {\n <span class=\"one-grid-empty-message\" style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\">No Rows to Show</span>\n }\n</div>\n\n<!-- Master Column Template -->\n<ng-template #cellTemplate let-node=\"node\" let-rowIndex=\"rowIndex\" let-column=\"column\">\n <div\n class=\"one-column\"\n [attr.data-cell-id]=\"node.rowId | cellKey:column.field\"\n [style.width.px]=\"column?.width\"\n [style.min-width.px]=\"column?.minWidth\"\n [style.max-width.px]=\"column?.maxWidth\"\n [class.one-column-border-top]=\"masterDetail && nodes?.length > 0 && nodes[node.rowIndex - 1]?.expanded\"\n [class.one-cell-selected]=\"selectedCells | cellSelected:node.rowId:column.field\"\n [class.one-cell-invalid]=\"node.cellStates | cellInvalid:node.data[column.field]:column:node:allowedEdit:submitted\"\n (dblclick)=\"startEdit($event, node, column)\"\n (mousedown)=\"startSelection(node.rowId, column.field)\"\n (mouseenter)=\"extendSelection(node.rowId, column.field)\"\n (mouseup)=\"endSelection()\">\n\n <!-- One Grid Cell Option -->\n @if (node.cellOptions[column.field]) {\n <one-grid-cell-option-menu\n #contextOptionMenuRef\n [node]=\"node\"\n [column]=\"column\"\n [options]=\"column.cellOptionMenu\"\n (cellOptionMenuSelect)=\"cellOptionMenuSelected($event)\"/>\n }\n\n <!-- Grid Cell Template -->\n @if(column?.cellRendererComponent) {\n <ng-container\n oneCellRendererComponent\n [cellRendererComponent]=\"column?.cellRendererComponent\"\n [params]=\"{ data: node.data, field: column.field, rowIndex: node.rowIndex, columnDef: column, node: node, context: context }\">\n </ng-container>\n }\n @else if (node.editing[column.field]) {\n <!-- Cell Editing Input -->\n <input class=\"one-cell-input\"\n name=\"{{ node.rowId + '' + column.field }}\"\n oneCellInputValidator\n [validationType]=\"column?.cellRendererParams?.inputType === 'number' ? 'number' : 'none'\"\n [placeholder]=\"column?.cellRendererParams?.placeholder\"\n [type]=\"column?.cellRendererParams?.inputType === 'number' ? 'text' : column?.cellRendererParams?.inputType\"\n [value]=\"node?.data[column?.field]\"\n [maxLength]=\"250\"\n (blur)=\"stopEdit(node, column, $event)\"\n (keydown.enter)=\"stopEdit(node, column, $event)\"\n (keydown.esc)=\"cancelEdit(node, column)\"\n />\n }\n @else if (column?.cellRenderer) {\n <div\n [ngStyle]=\"{ width: column.width + 'px' , position: 'relative' }\"\n [innerHTML]=\"node.cellStates | cellStateRenderer:column.field\"\n [class.editable-active]=\"node.cellStates | cellEditable:column:node:cellService.editableFn:cellService.updatableFn:allowedEdit\">\n </div>\n }\n @else {\n <div class=\"one-cell\"\n [class.align-content-left]=\"column?.alignContent === 'left'\"\n [class.align-content-center]=\"column?.alignContent === 'center'\"\n [class.align-content-right]=\"column?.alignContent === 'right'\"\n [ngClass]=\"colService.resolveCellPresentation(column, { node, data: node.data, columnDef: column })._resolvedCellClass\"\n [ngStyle]=\"colService.resolveCellPresentation(column, { node, data: node.data, columnDef: column })._resolvedCellStyle\"\n [style.padding-left.px]=\"column.autoGroupField && node.level | cellLevelPadding:24\"\n [class.one-cell-allowed-edit-active]=\"node.cellStates | cellEditable:column:node:cellService.editableFn:cellService.updatableFn:allowedEdit\">\n\n <!-- Cell Checkbox Selection -->\n @if (column?.checkboxSelection) {\n <one-grid-checkbox\n [node]=\"node\"\n [allowedEdit]=\"allowedEdit\"\n [api]=\"api\"\n (onRowSelection)=\"invokeRowActionSelection($event)\"\n />\n }\n\n <!-- Expand & Collapse Icon -->\n @if (((node?.group || detailRendererComponent) && column?.autoGroupField) || (masterDetail && node?.expandable && gridType === 'master' && column?.masterGroupField)) {\n <one-grid-cell-group-renderer\n [node]=\"node\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailRendererComponent]=\"detailRendererComponent\"\n (expansionChanged)=\"invokeExpansionChangedClick($event)\"\n />\n }\n\n @if(column?.cellRendererComponent) {\n <ng-container\n oneCellRendererComponent\n [cellRendererComponent]=\"column?.cellRendererComponent\"\n [params]=\"{ data: node.data, field: column.field, rowIndex: node.rowIndex, columnDef: column, node: node, context: context }\">\n </ng-container>\n }\n @else {\n <!-- Cell Value OR Placeholder -->\n <div oneCellTextExpand class=\"one-cell-text\" [class.one-cell-placeholder]=\"node.cellStates[column.field]?.type === 'placeholder'\">\n {{ (node.cellStates | cellStateRenderer:column.field) }}\n </div>\n }\n\n <!-- Cell Action Buttons -->\n @if (column.cellRendererParams | cellActionButtonEnable) {\n <one-grid-row-action\n [ngStyle]=\"{ marginLeft: 'auto' }\"\n [column]=\"column\"\n [node]=\"node\"\n [allowedEdit]=\"allowedEdit\"\n [masterNode]=\"masterNode\"\n [masterDetail]=\"masterDetail\"\n [gridType]=\"gridType\"\n [context]=\"context\"\n [cellRendererParams]=\"column?.cellRendererParams\"\n (onRowGotoDetail)=\"invokeRowActionGotoDetail($event)\"\n (onRowAddNew)=\"invokeRowActionAddNew($event)\"\n (onRowView)=\"invokeRowActionView($event)\"\n (onRowLocation)=\"invokeRowActionLocation($event)\"\n (onRowDocument)=\"invokeRowActionDocument($event)\"\n (onRowCopy)=\"invokeRowActionCopy($event)\"\n (onRowDelete)=\"invokeRowActionDelete($event)\"\n (onRowGotoList)=\"invokeRowActionGotoList($event)\"\n (onRowEdit)=\"invokeRowActionEdit($event)\"\n (onRowPrint)=\"invokeRowActionPrint($event)\"\n (onRowHistory)=\"invokeRowActionHistory($event)\"\n (onRowOption)=\"invokeRowActionOption($event)\"\n (onRowLanguage)=\"invokeRowActionLanguage($event)\"\n (onRowCellOption)=\"invokeRowActionCellOption($event)\"\n />\n }\n </div>\n }\n </div>\n</ng-template>\n","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OnePaginationParams } from '../../core/models/one-pagination-types.model';\nimport { OnePageSizeOption } from '../../core/models/constants/one-pagination.constant';\n\n@Component({\n standalone: false,\n selector: 'one-grid-pagination',\n templateUrl: './one-grid-pagination.component.html',\n styleUrl: './one-grid-pagination.component.scss'\n})\nexport class OneGridPaginationComponent implements AfterViewInit {\n\n @Input() paginate: OnePaginationParams = {\n total: 0,\n currentPage: 1,\n lastPage: 1,\n perPage: 25,\n firstRowIndex: 1,\n lastRowIndex: 1,\n };\n\n @Output() goToFirst = new EventEmitter();\n @Output() goToPrevious = new EventEmitter();\n @Output() goToNext = new EventEmitter();\n @Output() goToLast = new EventEmitter();\n @Output() pageSizeChange = new EventEmitter();\n \n public pageSize: number = OnePageSizeOption[0];\n public pageSizeOptions: number[] = OnePageSizeOption;\n\n ngAfterViewInit(): void {\n\n if (this.paginate?.pageSizeOptions) {\n\n this.pageSizeOptions = this.paginate.pageSizeOptions;\n }\n }\n\n goToFirstPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage > 1)) return;\n\n this.goToFirst.emit(this.paginate?.currentPage);\n }\n\n goToPreviousPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage > 1)) return;\n\n this.goToPrevious.emit(this.paginate?.currentPage);\n }\n\n goToNextPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage < this.paginate?.lastPage)) return;\n\n this.goToNext.emit(this.paginate?.currentPage);\n }\n\n goToLastPage() {\n\n if (!(this.paginate?.perPage < this.paginate?.total && this.paginate?.currentPage < this.paginate?.lastPage)) return;\n\n this.goToLast.emit(this.paginate?.currentPage);\n }\n\n onPageSizeChange(event: Event) {\n\n const select = event.target as HTMLSelectElement;\n\n const newSize = Number(select.value);\n\n if (newSize !== this.pageSize) {\n\n this.pageSize = newSize;\n\n this.pageSizeChange.emit(this.pageSize);\n }\n }\n}\n","<div class=\"one-grid-pagination\">\n <div class=\"one-pagination-row\">\n @if (paginate?.firstRowIndex > 0 && paginate?.lastRowIndex > 0 && paginate?.total > 0) {\n <div class=\"one-pagination-columns-group\">\n <div class=\"one-pagination-column\">\n <span>{{ paginate?.firstRowIndex }}</span>\n <span>-</span>\n <span>{{ paginate?.lastRowIndex }}</span>\n &nbsp;<span>/</span>&nbsp;\n <span>{{ paginate?.total }}</span>\n </div>\n </div>\n }\n <div class=\"one-pagination-columns-group\">\n <div class=\"one-pagination-column\">\n <button \n class=\"one-pagination-btn\"\n (click)=\"goToFirstPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage > 1)\">\n <lucide-icon name=\"chevron-first\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n <button\n class=\"one-pagination-btn\"\n (click)=\"goToPreviousPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage > 1)\">\n <lucide-icon name=\"chevron-left\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n </div>\n <div class=\"one-pagination-column\">\n &nbsp;{{ paginate?.currentPage }}<span>/</span>{{ paginate?.lastPage }}&nbsp;\n </div>\n <div class=\"one-pagination-column\">\n <button\n class=\"one-pagination-btn\"\n (click)=\"goToNextPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage < paginate?.lastPage)\">\n <lucide-icon name=\"chevron-right\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n <button\n class=\"one-pagination-btn\"\n (click)=\"goToLastPage()\"\n [class.disabled]=\"!(paginate?.perPage < paginate?.total && paginate?.currentPage < paginate?.lastPage)\">\n <lucide-icon name=\"chevron-last\" [size]=\"16\" [strokeWidth]=\"2\"></lucide-icon>\n </button>\n </div>\n <div class=\"one-pagination-columns-group\">\n <div class=\"one-pagination-column\">\n <select name=\"row-per-page\" [value]=\"pageSize\" (change)=\"onPageSizeChange($event)\">\n @for (size of pageSizeOptions; track $index) {\n <option [value]=\"size\">{{ size }} rows</option>\n }\n </select>\n </div>\n </div>\n </div>\n </div>\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, Type, ViewChild } from '@angular/core';\nimport { OneColumnDef, OneGroupColumnDef } from '../../core/models/one-column-def-types.model';\nimport { OneGridApi } from '../../core/instants/one-grid-api.class';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { OneGridReadyEvent, OneGridRowActionEvent, OneGridType } from '../../core/models/one-grid-types.model';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { OnePaginationParams } from '../../core/models/one-pagination-types.model';\nimport { OneGridSelectionService } from '../../core/services/one-grid-selection.service';\nimport { CellOptionMenuSelectedEvent, ExpansionChangedEvent, RowSelectionMode, SelectionChangedEvent } from '../../core/models/one-event-types.model';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { OneGridExpansionService } from '../../core/services/one-grid-expansion.service';\nimport { OneDetailCellRendererParams } from '../../core/models/one-master-detail.model';\nimport { OneGridRowService } from '../../core/services/one-grid-row.service';\nimport { OneGridCellService } from '../../core/services/one-grid-cell.service';\nimport { OgColumnService } from '../../core/services/og-column.service';\nimport _ from 'lodash';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid',\n templateUrl: './one-grid.component.html',\n styleUrl: './one-grid.component.scss',\n providers: [\n OneGridEventService,\n OneGridApi,\n OgColumnService,\n OneGridSelectionService,\n OneGridExpansionService,\n OneGridRowService,\n OneGridCellService\n ],\n})\nexport class OneGridComponent<T> implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n /**\n * Get General Data from Parent\n */\n @ViewChild('ogRef', { static: true }) ogRef!: ElementRef;\n @Input() rowNumber: boolean = false;\n @Input() allowedEdit: boolean = true;\n @Input() submitted: boolean = false;\n @Input() context: any = null;\n @Input() rowData: T[] = [];\n @Input() rowSelection: RowSelectionMode = null;\n\n @Input() enableGroupColumnDefs: boolean = false;\n @Input() groupColumnDefs: OneGroupColumnDef[] = [];\n\n @Input() defaultColumnDef: OneColumnDef<T> = {};\n @Input() columnDefs: OneColumnDef<T>[] = [];\n\n // RXJS Properties\n protected gridCopy$ = new Subject<ClipboardEvent>();\n\n /**\n * Master Detail Feature\n */\n @Input() gridType: OneGridType = 'master';\n @Input() masterDetail: boolean = false;\n @Input() masterNode: OneRowNode = null;\n @Input() detailCellRendererParams: OneDetailCellRendererParams;\n @Input() detailRendererComponent: Type<OneCellRendererComponent>;\n\n /**\n * Tree Data Feature\n */\n @Input() treeData: boolean = false;\n @Input() treeDataChildrenField: string = null;\n @Input() autoGroupColumnDef: OneColumnDef;\n @Input() groupDefaultExpanded: number = 0;\n\n /**\n * Bind Row Action Events & Data to Parent\n */\n @Output() onGridReady = new EventEmitter<OneGridReadyEvent<T>>();\n @Output() onRowGotoDetail = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowAddNew = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowView = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLocation = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDocument = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowCopy = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowDelete = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowGotoList = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowEdit = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowPrint = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowHistory = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowOption = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowLanguage = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onRowSelection = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() onShiftDoubleClick = new EventEmitter<OneGridRowActionEvent<T>>();\n @Output() rowCountChanged = new EventEmitter<number>();\n\n @Output() selectionChanged = new EventEmitter<SelectionChangedEvent<T>>();\n @Output() expansionChanged = new EventEmitter<ExpansionChangedEvent<T>>();\n\n // For context menu option\n @Output() cellOptionSelect = new EventEmitter<CellOptionMenuSelectedEvent>();\n @Output() onRowCellOption = new EventEmitter<OneGridRowActionEvent<T>>();\n\n /**\n * Bind One Grid Pagination Feature\n */\n @Input() pagination: boolean = false;\n @Input() paginate: OnePaginationParams;\n @Output() goToFirst = new EventEmitter();\n @Output() goToPrevious = new EventEmitter();\n @Output() goToNext = new EventEmitter();\n @Output() goToLast = new EventEmitter();\n @Output() pageSizeChange = new EventEmitter<number>();\n\n /**\n * One Grid Properties\n */\n protected bodyScrollLeft: number = 0;\n private _oneRowNumberColumnDef: OneColumnDef = null;\n private subscriptions = new Subscription();\n\n constructor(\n protected api: OneGridApi,\n protected eventService: OneGridEventService,\n private elementRef: ElementRef,\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n\n if (changes['masterNode'] && changes['masterNode'].isFirstChange) {\n\n if (this.masterDetail && this.masterNode.expanded && this.gridType === 'detail') {\n\n setTimeout(() => this.api.setRowData([...this.masterNode.detailRowData]));\n }\n }\n\n if (changes[\"rowData\"] && !changes[\"rowData\"]?.firstChange) {\n\n this.treeData || this.masterDetail ? this.api.updateRowData(this.rowData) : this.api.setRowData(this.rowData);\n }\n }\n\n ngOnInit(): void {\n\n /**\n * Init Row Number Column Def\n */\n if (this.rowNumber) {\n\n this._oneRowNumberColumnDef = {\n groupId: this.columnDefs[0]?.groupId ?? null,\n field: '_oneRowNumber',\n headerName: 'Nº',\n resizable: true,\n headerStyle: {\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItem: 'center'\n },\n alignContent: 'right',\n cellClass: 'fw-bold',\n width: 60,\n minWidth: 40,\n maxWidth: 200\n }\n }\n\n /**\n * Initialize One Grid API\n */\n this.api.init(this.gridType, this.rowSelection, this.columnDefs, this.defaultColumnDef, this.context, this.masterDetail, this.detailCellRendererParams, this.detailRendererComponent, this.treeData, this.groupColumnDefs);\n\n /**\n * Setup Master Detail Configuration\n */\n if (this.masterDetail) {\n\n this.api.setGroupDefaultExpanded(this.groupDefaultExpanded);\n this.api.setGetDetailRowData(this.detailCellRendererParams?.getDetailRowData ?? null);\n\n if (this.rowNumber) {\n\n const columnDefs = _.concat(this._oneRowNumberColumnDef, this.columnDefs);\n\n setTimeout(() => this.api.setColumnDefs(columnDefs));\n }\n }\n\n /**\n * Setup Tree Data Configuration\n */\n if (this.treeData) {\n\n this.gridType = 'tree';\n\n const columnDefs = this.rowNumber ? _.concat(this._oneRowNumberColumnDef, this.autoGroupColumnDef, this.columnDefs) : _.concat(this.autoGroupColumnDef, this.columnDefs);\n\n this.api.setTreeDataChildrenField(this.treeDataChildrenField);\n this.api.setGroupDefaultExpanded(this.groupDefaultExpanded);\n\n setTimeout(() => this.api.setColumnDefs(columnDefs));\n }\n\n // Listen Selection Changed Event\n this.subscriptions.add(this.eventService.addEventListener('selectionChanged', (payload: SelectionChangedEvent<T>) => {\n\n this.selectionChanged.emit(payload);\n }));\n }\n\n ngAfterViewInit(): void {\n\n const headerViewport = this.elementRef.nativeElement.querySelector('.one-grid-header-column');\n const bodyViewport = this.elementRef.nativeElement.querySelector('.one-grid-body-viewport');\n\n // Listen Scroll Event Changed\n this.subscriptions.add(\n\n fromEvent(bodyViewport, 'scroll').subscribe(() => {\n\n if (headerViewport) {\n\n headerViewport.scrollLeft = bodyViewport.scrollLeft\n }\n })\n );\n\n /**\n * Emit Grid Ready Event\n */\n this.onGridReady.emit({ api: this.api });\n }\n\n /**\n * Handle Body Scroll Event\n */\n onBodyScroll(scrollLeft: number) {\n\n this.bodyScrollLeft = scrollLeft;\n }\n\n /**\n * Handle Ready Event of a nested Master Detail Grid\n */\n onDetailGridReady(params: OneGridReadyEvent) {\n\n params.api.setRowData(this.masterNode?.detailRowData ?? []);\n }\n\n /**\n * Passing copy event to grid body\n */\n onGridCopy(event: ClipboardEvent) {\n\n this.gridCopy$.next(event);\n }\n\n /**\n * Bind Row Action Events to Parent Component\n */\n invokeRowActionGotoDetail(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoDetail.emit(event);\n }\n\n invokeRowActionAddNew(event: OneGridRowActionEvent<T>) {\n\n this.onRowAddNew.emit(event);\n }\n\n invokeRowActionView(event: OneGridRowActionEvent<T>) {\n\n this.onRowView.emit(event);\n }\n\n invokeRowActionLocation(event: OneGridRowActionEvent<T>) {\n\n this.onRowLocation.emit(event);\n }\n\n invokeRowActionDocument(event: OneGridRowActionEvent<T>) {\n\n this.onRowDocument.emit(event);\n }\n\n invokeRowActionCopy(event: OneGridRowActionEvent<T>) {\n\n this.onRowCopy.emit(event);\n }\n\n invokeRowActionDelete(event: OneGridRowActionEvent<T>) {\n\n this.onRowDelete.emit(event);\n }\n\n invokeRowActionGotoList(event: OneGridRowActionEvent<T>) {\n\n this.onRowGotoList.emit(event);\n }\n\n invokeRowActionEdit(event: OneGridRowActionEvent<T>) {\n\n this.onRowEdit.emit(event);\n }\n\n invokeRowActionPrint(event: OneGridRowActionEvent<T>) {\n\n this.onRowPrint.emit(event);\n }\n\n invokeRowActionHistory(event: OneGridRowActionEvent<T>) {\n\n this.onRowHistory.emit(event);\n }\n\n invokeRowActionOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowOption.emit(event);\n }\n\n invokeRowActionLanguage(event: OneGridRowActionEvent<T>) {\n\n this.onRowLanguage.emit(event);\n }\n\n invokeRowActionCellOption(event: OneGridRowActionEvent<T>) {\n\n this.onRowCellOption.emit(event);\n }\n\n invokeRowActionSelection(event: OneGridRowActionEvent<T>) {\n\n this.onRowSelection.emit(event);\n }\n\n invokeShiftDoubleClick(event: OneGridRowActionEvent<T>) {\n\n this.onShiftDoubleClick.emit(event);\n }\n\n invokeRowCountChanged(length: number) {\n\n this.rowCountChanged.emit(length);\n }\n\n cellOptionMenuSelected(event: CellOptionMenuSelectedEvent) {\n\n this.cellOptionSelect.emit(event);\n }\n\n /**\n * Bing Pagination Events to Parent Component\n */\n invokeGoToFirst() {\n\n this.goToFirst.emit();\n }\n\n invokeGoToPrevious() {\n\n this.goToPrevious.emit();\n }\n\n invokeGoToNext() {\n\n this.goToNext.emit();\n }\n\n invokeGoToLast() {\n\n this.goToLast.emit();\n }\n\n invokePageSizeChange(pageSize: number) {\n\n this.pageSizeChange.emit(pageSize);\n }\n\n invokeExpansionChangedClick(event: ExpansionChangedEvent<T>) {\n\n this.expansionChanged.emit(event);\n }\n\n /**\n * Handle Unsubscribe All Event Listenders\n */\n ngOnDestroy(): void {\n\n this.rowData = [];\n\n this.api.destroy();\n\n this.subscriptions.unsubscribe();\n }\n}\n","<div #ogRef class=\"one-grid\" (copy)=\"onGridCopy($event)\" tabindex=\"0\">\n \n <!-- Headers -->\n <one-grid-header\n [api]=\"api\"\n [enableGroupColumnDefs]=\"enableGroupColumnDefs\"\n [allowedEdit]=\"allowedEdit\"\n [scrollLeft]=\"bodyScrollLeft\"\n />\n\n <!-- Body -->\n <one-grid-body\n [gridCopy$]=\"gridCopy$\"\n [rowData]=\"rowData\"\n [api]=\"api\"\n [rowNumber]=\"rowNumber\"\n [pagination]=\"pagination\"\n [allowedEdit]=\"allowedEdit\"\n [submitted]=\"submitted\"\n [context]=\"context\"\n [treeData]=\"treeData\"\n [gridType]=\"gridType\"\n [masterDetail]=\"masterDetail\"\n [masterNode]=\"masterNode\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailRendererComponent]=\"detailRendererComponent\"\n [detailGridTemplate]=\"detailGridTpl\"\n [treeDataChildrenField]=\"treeDataChildrenField\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [groupDefaultExpanded]=\"groupDefaultExpanded\"\n (expansionChanged)=\"invokeExpansionChangedClick($event)\"\n (onRowGotoDetail)=\"invokeRowActionGotoDetail($event)\"\n (onRowAddNew)=\"invokeRowActionAddNew($event)\"\n (onRowView)=\"invokeRowActionView($event)\"\n (onRowLocation)=\"invokeRowActionLocation($event)\"\n (onRowDocument)=\"invokeRowActionDocument($event)\"\n (onRowCopy)=\"invokeRowActionCopy($event)\"\n (onRowDelete)=\"invokeRowActionDelete($event)\"\n (onRowGotoList)=\"invokeRowActionGotoList($event)\"\n (onRowEdit)=\"invokeRowActionEdit($event)\"\n (onRowPrint)=\"invokeRowActionPrint($event)\"\n (onRowHistory)=\"invokeRowActionHistory($event)\"\n (onRowOption)=\"invokeRowActionOption($event)\"\n (onRowLanguage)=\"invokeRowActionLanguage($event)\"\n (onRowCellOption)=\"invokeRowActionCellOption($event)\"\n (onRowSelection)=\"invokeRowActionSelection($event)\"\n (onShiftDoubleClick)=\"invokeShiftDoubleClick($event)\"\n (rowCountChanged)=\"invokeRowCountChanged($event)\"\n (cellOptionSelect)=\"cellOptionMenuSelected($event)\"\n (bodyScroll)=\"onBodyScroll($event)\"\n />\n \n <!-- Pagination -->\n @if (pagination) {\n <one-grid-pagination\n [paginate]=\"paginate\"\n (goToFirst)=\"invokeGoToFirst()\"\n (goToLast)=\"invokeGoToLast()\"\n (goToPrevious)=\"invokeGoToPrevious()\"\n (goToNext)=\"invokeGoToNext()\"\n (pageSizeChange)=\"invokePageSizeChange($event)\"\n />\n }\n\n <!-- Master Detail Grid template, rendered inside one-grid-body via ngTemplateOutlet.\n Declared here (self-reference) so one-grid-body's template does not need to\n import one-grid, which would create an unsupported compile-time cycle. -->\n <ng-template #detailGridTpl let-node=\"node\">\n <one-grid\n [style.height.px]=\"node.detailRowHeight\"\n [gridType]=\"'detail'\"\n [masterNode]=\"node\"\n [masterDetail]=\"masterDetail\"\n [defaultColumnDef]=\"detailCellRendererParams.detailGridOptions.defaultColumnDef\"\n [columnDefs]=\"detailCellRendererParams.detailGridOptions.columnDefs\"\n [rowData]=\"node?.detailRowData\"\n [rowNumber]=\"detailCellRendererParams.detailGridOptions?.rowNumber\"\n [allowedEdit]=\"allowedEdit\"\n [submitted]=\"submitted\"\n [context]=\"context\"\n (expansionChanged)=\"invokeExpansionChangedClick($event)\"\n (onRowGotoDetail)=\"invokeRowActionGotoDetail($event)\"\n (onRowAddNew)=\"invokeRowActionAddNew($event)\"\n (onRowView)=\"invokeRowActionView($event)\"\n (onRowLocation)=\"invokeRowActionLocation($event)\"\n (onRowDocument)=\"invokeRowActionDocument($event)\"\n (onRowCopy)=\"invokeRowActionCopy($event)\"\n (onRowDelete)=\"invokeRowActionDelete($event)\"\n (onRowGotoList)=\"invokeRowActionGotoList($event)\"\n (onRowEdit)=\"invokeRowActionEdit($event)\"\n (onRowPrint)=\"invokeRowActionPrint($event)\"\n (onRowHistory)=\"invokeRowActionHistory($event)\"\n (onRowOption)=\"invokeRowActionOption($event)\"\n (onRowLanguage)=\"invokeRowActionLanguage($event)\"\n (onRowCellOption)=\"invokeRowActionCellOption($event)\"\n (onGridReady)=\"onDetailGridReady($event)\"\n />\n </ng-template>\n</div>","import { Component } from '@angular/core';\nimport { OneCellRendererComponent } from '../../core/models/one-tree-data.model';\nimport { OneCellRendererParams } from '../../core/models/one-column-def-types.model';\n\n@Component({\n standalone: false,\n selector: 'one-grid-status',\n templateUrl: './one-grid-status.component.html',\n styleUrl: './one-grid-status.component.scss',\n})\nexport class OneGridStatusComponent implements OneCellRendererComponent {\n\n protected params!: OneCellRendererParams;\n protected value = '';\n protected label = 0;\n protected type: 'enableStatus' | 'activeStatus' | 'operationActiveStatus' | null = null;\n\n oneInit(params: OneCellRendererParams): void {\n\n this.params = params;\n this.label = params?.value ?? 0;\n\n this.type = this.getType(params.columnDef.field);\n this.value = this.getLabel(this.type, this.label);\n }\n\n refresh(params: OneCellRendererParams): boolean {\n\n return false;\n }\n\n private getType(field: string): 'enableStatus' | 'activeStatus' | 'operationActiveStatus' | null {\n\n return field === 'enableStatus' || field === 'activeStatus' || field === 'operationActiveStatus' ? field : null;\n }\n\n private getLabel(type: 'enableStatus' | 'activeStatus' | 'operationActiveStatus' | null, status: number): string {\n\n if (!type) return 'N/A';\n\n const labels = { enableStatus: ['Disabled', 'Enabled'], activeStatus: ['Inactive', 'Active'], operationActiveStatus: ['Inactive', 'Active'] } as const;\n\n return labels[type][status === 1 ? 1 : 0];\n }\n}\n","<span class=\"one-cell-status\"\n [style.width.px]=\"params.columnDef?.width\"\n [style.min-width.px]=\"params.columnDef?.minWidth\"\n [style.max-width.px]=\"params.columnDef?.maxWidth\"\n >\n <span class=\"one-cell-status-body\" [ngClass]=\"label === 1 ? 'one-success-bg' : 'one-warning-bg'\">\n {{ value }}\n </span>\n</span>\n","import { Component, Input } from '@angular/core';\nimport { CellStateChangedEvent } from '../../core/models/one-event-types.model';\nimport { OneCellRendererParams, OneColumnDef } from '../../core/models/one-column-def-types.model';\nimport { OneGridCellService } from '../../core/services/one-grid-cell.service';\nimport { OneGridEventService } from '../../core/services/one-grid-event.service';\nimport { OneRowNode } from '../../core/instants/one-row-node.class';\nimport { getCellField } from '../../helpers/one-cell.helper';\nimport { CellEditablePipe } from '../../core/pipes/cell-editable.pipe';\n\n@Component({\n standalone: false,\n selector: 'app-one-grid-cell-currency',\n templateUrl: './one-grid-cell-currency.component.html',\n styleUrl: './one-grid-cell-currency.component.scss'\n})\nexport class OneGridCellCurrencyComponent {\n \n value: string = '';\n result: any;\n params!: OneCellRendererParams;\n @Input() allowedEdit: boolean = false;\n\n getCellField = getCellField;\n private unsubscribe?: () => void;\n private cellEditablePipe = new CellEditablePipe();\n\n constructor(\n private cellService: OneGridCellService,\n private eventService: OneGridEventService\n ) { }\n\n oneInit(params: OneCellRendererParams): void {\n\n this.params = params;\n this.value = params.data[params.columnDef.field];\n this.result = this.value;\n this.allowedEdit = params.context.componentParent.allowedEdit || false;\n\n this.unsubscribe = this.eventService.addEventListener('cellStateChanged', (payload: CellStateChangedEvent<any>) => {\n if (this.params.node.rowId === payload.node.rowId) {\n\n this.result = this.cellService.generateCellState(this.params.node, this.params.columnDef).value;\n }\n });\n }\n\n refresh(params: OneCellRendererParams): boolean {\n // Update params and values when grid data refreshes\n this.params = params;\n this.value = params.data[params.columnDef.field];\n this.result = this.value;\n this.allowedEdit = params.context.componentParent.allowedEdit || false;\n\n return true;\n }\n\n get isEditable(): boolean {\n if (!this.params.node || !this.params.columnDef) return false;\n\n return this.cellEditablePipe.transform(\n this.params.node.cellStates,\n this.params.columnDef,\n this.params.node,\n this.cellService.editableFn,\n this.cellService.updatableFn,\n this.allowedEdit\n );\n }\n\n startEdit(node: OneRowNode<any>, column: OneColumnDef<any>) {\n\n if (!this.isEditable) {\n return;\n }\n\n if (node) {\n\n node.editing[column.field] = true;\n\n setTimeout(() => {\n\n const input = document.querySelector<HTMLInputElement>(`[data-cell-id=\"${getCellField(node.rowIndex, column.field)}\"] input`);\n\n if (input) {\n\n input.focus();\n\n const value = input.value;\n\n if (value && [\"text\"].includes(input.type)) {\n\n input.setSelectionRange(value.length, value.length);\n }\n }\n }, 10);\n }\n }\n\n stopEdit(node: OneRowNode<any>, column: OneColumnDef<any>, event: any) {\n\n if (node) {\n\n node.data[column.field] = event.target.value === '' ? null : event.target.value;\n\n node.cellStates = this.cellService.generateCellStates(node);\n\n node.editing[column.field] = false;\n\n this.eventService.dispatchEvent('cellStateChanged', {\n data: { ...node.data },\n node: node,\n column: column\n });\n }\n }\n\n cancelEdit(node: OneRowNode<any>, column: OneColumnDef<any>) {\n\n if (node) {\n\n node.editing[column.field] = false;\n }\n }\n\n ngOnDestroy(): void {\n\n this.unsubscribe?.();\n }\n}\n","<div class=\"cell-wrapper\"\n [class.editable]=\"isEditable\"\n [attr.data-cell-id]=\"getCellField(params.node?.rowIndex, params.columnDef?.field)\"\n [style.min-width.px]=\"params.columnDef?.minWidth\"\n [style.max-width.px]=\"params.columnDef?.maxWidth\">\n\n @if (params.node?.editing?.[params.columnDef?.field]) {\n <input class=\"one-cell-input\"\n name=\"{{ params.node?.rowIndex }}_{{ params.columnDef?.field }}\"\n oneCellInputValidator\n validationType=\"number\"\n [placeholder]=\"params.columnDef?.cellRendererParams?.placeholder || ''\"\n type=\"text\"\n [(ngModel)]=\"value\"\n [maxLength]=\"250\"\n (blur)=\"stopEdit(params.node, params.columnDef, $event)\"\n (keydown.enter)=\"stopEdit(params.node, params.columnDef, $event)\"\n (keydown.esc)=\"cancelEdit(params.node, params.columnDef)\" />\n }\n @else {\n <div class=\"d-flex justify-content-between px-2 pt-1\"\n [class.one-cell-allowed-edit-active]=\"isEditable\"\n (dblclick)=\"startEdit(params.node, params.columnDef)\">\n <span class=\"currency-code\" style=\"font-weight: bold;\">{{ this.params?.data?.currency?.currencyCode || 'USD' }}</span>\n <span class=\"amount-value\">\n {{ result | number:(this.params?.field === 'amount' ? '1.3-3' : '1.2-2') }}\n </span>\n </div>\n }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { OneRowNode } from '../instants/one-row-node.class';\n\n@Pipe({\n standalone: false,\n name: 'cellActionButtonVisible'\n})\nexport class CellActionButtonVisiblePipe implements PipeTransform {\n\n transform(column: OneColumnDef, node: OneRowNode): boolean {\n\n return (node?.leaf && !(node?.group && node?.leafGroup) && !column?.autoGroupField) || (!node?.leaf && (node?.group || node?.leafGroup) && column?.autoGroupField && column?.editableLevels?.includes(node.level));\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: false,\n name: 'cellNumberValue'\n})\nexport class CellNumberValuePipe implements PipeTransform {\n\n transform(value: any): number | undefined {\n\n if (value === null || value === undefined) return undefined;\n \n return Number(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getCellField } from '../../helpers/one-cell.helper';\n\n@Pipe({\n standalone: false,\n name: 'cellField'\n})\nexport class CellFieldPipe implements PipeTransform {\n\n transform(rowIndex: number, field: string): string {\n\n if (rowIndex === null || rowIndex === undefined || !field) return '';\n \n return getCellField(rowIndex, field);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { OneColumnDef } from '../models/one-column-def-types.model';\nimport { CellFieldValuePipe } from './cell-field-value.pipe';\n\n@Pipe({\n standalone: false,\n name: 'cellStateGroupRenderer'\n})\nexport class CellStateGroupRendererPipe<T> implements PipeTransform {\n\n private _cellFieldValue = new CellFieldValuePipe();\n\n transform(value: string, data: T, column: OneColumnDef): string {\n\n return value ? this._cellFieldValue.transform(data, column.field) : column?.cellRendererParams?.placeholder ?? '';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OneGridComponent } from './components/one-grid/one-grid.component';\nimport { OneGridHeaderComponent } from './components/one-grid-header/one-grid-header.component';\nimport { OneGridBodyComponent } from './components/one-grid-body/one-grid-body.component';\nimport { OneGridCheckboxComponent } from './components/one-grid-checkbox/one-grid-checkbox.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { OneGridRowActionComponent } from './components/one-grid-row-action/one-grid-row-action.component';\nimport { OneGridPaginationComponent } from './components/one-grid-pagination/one-grid-pagination.component';\nimport { OneGridCheckboxHeaderComponent } from './components/one-grid-checkbox-header/one-grid-checkbox-header.component';\nimport { OneGridStatusComponent } from './components/one-grid-status/one-grid-status.component';\nimport { CellFieldValueEmptyPipe } from './core/pipes/cell-field-value-empty.pipe';\nimport { CellValueGetterPipe } from './core/pipes/cell-value-getter.pipe';\nimport { CellFieldValuePipe } from './core/pipes/cell-field-value.pipe';\nimport { OneGridCellGroupRendererComponent } from './components/one-grid-cell-group-renderer/one-grid-cell-group-renderer.component';\nimport { CellActionButtonVisiblePipe } from './core/pipes/cell-action-button-visible.pipe';\nimport { CellEditablePipe } from './core/pipes/cell-editable.pipe';\nimport { CellInvalidPipe } from './core/pipes/cell-invalid.pipe';\nimport { CellSelectedPipe } from './core/pipes/cell-selected.pipe';\nimport { CellActionButtonEnablePipe } from './core/pipes/cell-action-button-enable.pipe';\nimport { CellNumberValuePipe } from './core/pipes/cell-number-value.pipe';\nimport { CellDisableResolverPipe } from './core/pipes/cell-disable-resolver.pipe';\nimport { CellFieldPipe } from './core/pipes/cell-field.pipe';\nimport { CellLevelPaddingPipe } from './core/pipes/cell-level-padding.pipe';\nimport { ColumnSortStatePipe } from './core/pipes/column-sort-state.pipe';\nimport { HeaderCheckboxDisabledPipe } from './core/pipes/header-checkbox-disabled.pipe';\nimport { HeaderCheckboxCheckedPipe } from './core/pipes/header-checkbox-checked.pipe';\nimport { HeaderCheckboxIndeterminatePipe } from './core/pipes/header-checkbox-indeterminate.pipe';\nimport { CellStateRendererPipe } from './core/pipes/cell-state-renderer.pipe';\nimport { CellStateGroupRendererPipe } from './core/pipes/cell-state-group-renderer.pipe';\nimport { OneCellInputValidatorDirective } from './core/directives/one-cell-input-validator.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { NgbHighlight, NgbTypeahead } from '@ng-bootstrap/ng-bootstrap';\nimport { OneCellRendererComponentDirective } from './core/directives/one-cell-renderer-component.directive';\nimport { OneCellTextExpandDirective } from './core/directives/one-cell-text-expand.directive';\nimport { CdkDragPlaceholder } from \"@angular/cdk/drag-drop\";\nimport { OneGridCellCurrencyComponent } from './components/one-grid-cell-currency/one-grid-cell-currency.component';\nimport { LucideAngularModule, icons } from 'lucide-angular';\nimport { CellKeyPipe } from './core/pipes/cell-key.pipe';\nimport { OneGridCellOptionMenuComponent } from './components/one-grid-cell-option-menu/one-grid-cell-option-menu.component';\n\n@NgModule({\n declarations: [\n OneGridComponent,\n OneGridHeaderComponent,\n OneGridBodyComponent,\n OneGridCheckboxComponent,\n OneGridCheckboxHeaderComponent,\n OneGridRowActionComponent,\n OneGridPaginationComponent,\n OneGridStatusComponent,\n OneGridCellGroupRendererComponent,\n CellFieldValueEmptyPipe,\n CellValueGetterPipe,\n CellFieldValuePipe,\n CellActionButtonVisiblePipe,\n CellEditablePipe,\n CellInvalidPipe,\n CellSelectedPipe,\n CellActionButtonEnablePipe,\n CellNumberValuePipe,\n CellDisableResolverPipe,\n CellFieldPipe,\n CellKeyPipe,\n CellLevelPaddingPipe,\n ColumnSortStatePipe,\n HeaderCheckboxDisabledPipe,\n HeaderCheckboxCheckedPipe,\n HeaderCheckboxIndeterminatePipe,\n CellStateRendererPipe,\n CellStateGroupRendererPipe,\n OneCellInputValidatorDirective,\n OneCellRendererComponentDirective,\n OneCellTextExpandDirective,\n OneGridCellCurrencyComponent,\n OneGridCellOptionMenuComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ScrollingModule,\n NgbTypeahead,\n NgbHighlight,\n ReactiveFormsModule,\n CdkDragPlaceholder,\n LucideAngularModule.pick(icons),\n ],\n exports: [OneGridComponent]\n})\nexport class OneGridModule { }\n","/*\n * Public API Surface of one-grid\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["lodash","uuidv4","i1.OgColumnService","i2.OneGridRowService","i3.OneGridCellService","i4.OneGridEventService","i5.OneGridSelectionService","i6.OneGridExpansionService","i1.OneGridEventService","i2.OneGridSelectionService","i3.HeaderCheckboxDisabledPipe","i4.HeaderCheckboxCheckedPipe","i5.HeaderCheckboxIndeterminatePipe","i4.OneGridCheckboxHeaderComponent","i5.ColumnSortStatePipe","i1.OneGridSelectionService","i2.OneGridEventService","i1","i2.CellDisableResolverPipe","i2.OneGridCellService","i3.OneGridEventService","i4","i6.OneGridCheckboxComponent","i7.OneGridRowActionComponent","i8.OneGridCellGroupRendererComponent","i9.OneCellInputValidatorDirective","i10.OneCellRendererComponentDirective","i11.OneCellTextExpandDirective","i12.OneGridCellOptionMenuComponent","i13.CellEditablePipe","i14.CellInvalidPipe","i15.CellSelectedPipe","i16.CellActionButtonEnablePipe","i17.CellKeyPipe","i18.CellLevelPaddingPipe","i19.CellStateRendererPipe","i2","i1.OneGridApi","i3.OneGridHeaderComponent","i4.OneGridBodyComponent","i5.OneGridPaginationComponent","i1.OneGridCellService","i3","i4.OneCellInputValidatorDirective","i5"],"mappings":"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"}