apex-grid 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +338 -0
- package/LICENSE.md +125 -0
- package/README.md +64 -10
- package/components/cell.d.ts +30 -4
- package/components/cell.js +199 -53
- package/components/cell.js.map +1 -1
- package/components/filter-row.d.ts +2 -0
- package/components/filter-row.js +82 -28
- package/components/filter-row.js.map +1 -1
- package/components/grid.d.ts +146 -36
- package/components/grid.js +442 -103
- package/components/grid.js.map +1 -1
- package/components/group-header-row.js +28 -25
- package/components/group-header-row.js.map +1 -1
- package/components/header-row.d.ts +7 -5
- package/components/header-row.js +11 -9
- package/components/header-row.js.map +1 -1
- package/components/header.js +32 -20
- package/components/header.js.map +1 -1
- package/components/row.d.ts +19 -3
- package/components/row.js +69 -23
- package/components/row.js.map +1 -1
- package/components/toolbar.js +2 -1
- package/components/toolbar.js.map +1 -1
- package/components/virtualizer.d.ts +40 -0
- package/components/virtualizer.js +116 -5
- package/components/virtualizer.js.map +1 -1
- package/controllers/dom.d.ts +4 -4
- package/controllers/dom.js +40 -22
- package/controllers/dom.js.map +1 -1
- package/controllers/editing.d.ts +104 -37
- package/controllers/editing.js +230 -78
- package/controllers/editing.js.map +1 -1
- package/controllers/expansion.d.ts +14 -5
- package/controllers/expansion.js +24 -1
- package/controllers/expansion.js.map +1 -1
- package/controllers/filter.d.ts +10 -2
- package/controllers/filter.js +62 -17
- package/controllers/filter.js.map +1 -1
- package/controllers/history.d.ts +45 -8
- package/controllers/history.js +58 -20
- package/controllers/history.js.map +1 -1
- package/controllers/navigation.d.ts +67 -13
- package/controllers/navigation.js +191 -51
- package/controllers/navigation.js.map +1 -1
- package/controllers/pagination.d.ts +6 -0
- package/controllers/pagination.js +10 -2
- package/controllers/pagination.js.map +1 -1
- package/controllers/reorder.js +38 -22
- package/controllers/reorder.js.map +1 -1
- package/controllers/resize.d.ts +17 -2
- package/controllers/resize.js +16 -6
- package/controllers/resize.js.map +1 -1
- package/controllers/row-pin.d.ts +20 -2
- package/controllers/row-pin.js +16 -9
- package/controllers/row-pin.js.map +1 -1
- package/controllers/row-reorder.d.ts +31 -11
- package/controllers/row-reorder.js +117 -37
- package/controllers/row-reorder.js.map +1 -1
- package/controllers/selection.d.ts +11 -4
- package/controllers/selection.js +26 -11
- package/controllers/selection.js.map +1 -1
- package/controllers/sort.d.ts +22 -2
- package/controllers/sort.js +29 -23
- package/controllers/sort.js.map +1 -1
- package/controllers/state.d.ts +56 -7
- package/controllers/state.js +76 -6
- package/controllers/state.js.map +1 -1
- package/controllers/tree.d.ts +15 -10
- package/controllers/tree.js +0 -0
- package/controllers/tree.js.map +1 -1
- package/custom-elements.json +3156 -277
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/highlight.css +15 -8
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/ApexGrid.html +155 -81
- package/docs/classes/ApexGridPaginator.html +1 -1
- package/docs/classes/ApexGridToolbar.html +3 -3
- package/docs/functions/localize.html +2 -2
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +74 -11
- package/docs/interfaces/ApexCellValidationFailedEvent.html +3 -2
- package/docs/interfaces/ApexCellValueChangedEvent.html +4 -2
- package/docs/interfaces/ApexCellValueChangingEvent.html +3 -2
- package/docs/interfaces/ApexGridEventMap.html +5 -2
- package/docs/interfaces/ApexRowEditEndedEvent.html +2 -1
- package/docs/interfaces/ApexRowEditStartedEvent.html +2 -1
- package/docs/interfaces/ApexRowMovingEvent.html +9 -3
- package/docs/interfaces/ApexRowPinningEvent.html +1 -1
- package/docs/interfaces/ApexTreeRowExpandedEvent.html +4 -1
- package/docs/interfaces/ApexTreeRowExpandingEvent.html +4 -1
- package/docs/interfaces/BaseApexCellContext.html +1 -1
- package/docs/interfaces/BaseApexEditorContext.html +1 -1
- package/docs/interfaces/BaseFilterExpression.html +2 -2
- package/docs/interfaces/CSVExportOptions.html +12 -4
- package/docs/interfaces/DataPipelineConfiguration.html +1 -1
- package/docs/interfaces/ExportOptions.html +5 -3
- package/docs/interfaces/GridExpansionConfiguration.html +6 -2
- package/docs/interfaces/GridRowReorderingConfiguration.html +1 -1
- package/docs/interfaces/PaginationState.html +1 -1
- package/docs/interfaces/SetStateResult.html +3 -2
- package/docs/interfaces/ValidatorContext.html +7 -2
- package/docs/media/_token-values.scss +118 -0
- package/docs/media/package.json +3 -2
- package/docs/modules.html +1 -1
- package/docs/types/ExportSource.html +6 -4
- package/docs/types/OperandKeys.html +9 -0
- package/docs/variables/EN_LOCALE.html +2 -2
- package/i18n/en.d.ts +5 -0
- package/i18n/en.js +5 -0
- package/i18n/en.js.map +1 -1
- package/i18n/es.js +5 -0
- package/i18n/es.js.map +1 -1
- package/internal/column-types.d.ts +27 -1
- package/internal/column-types.js +75 -49
- package/internal/column-types.js.map +1 -1
- package/internal/constants.d.ts +1 -2
- package/internal/constants.js +0 -4
- package/internal/constants.js.map +1 -1
- package/internal/document-styles.d.ts +30 -0
- package/internal/document-styles.js +48 -0
- package/internal/document-styles.js.map +1 -0
- package/internal/export.d.ts +39 -7
- package/internal/export.js +35 -34
- package/internal/export.js.map +1 -1
- package/internal/feature-module.d.ts +60 -3
- package/internal/feature-module.js +6 -0
- package/internal/feature-module.js.map +1 -1
- package/internal/index.d.ts +6 -4
- package/internal/index.js +5 -3
- package/internal/index.js.map +1 -1
- package/internal/normalize-case.d.ts +8 -1
- package/internal/normalize-case.js +3 -2
- package/internal/normalize-case.js.map +1 -1
- package/internal/state-snapshot.d.ts +60 -8
- package/internal/state-snapshot.js +87 -19
- package/internal/state-snapshot.js.map +1 -1
- package/internal/types.d.ts +17 -2
- package/internal/types.js.map +1 -1
- package/internal/utils.d.ts +34 -6
- package/internal/utils.js +30 -21
- package/internal/utils.js.map +1 -1
- package/internal/validators.js +1 -0
- package/internal/validators.js.map +1 -1
- package/operations/filter/operands/number.js +9 -6
- package/operations/filter/operands/number.js.map +1 -1
- package/operations/filter/operands/string.js +2 -3
- package/operations/filter/operands/string.js.map +1 -1
- package/operations/filter/types.d.ts +13 -1
- package/operations/filter/types.js.map +1 -1
- package/operations/filter.d.ts +6 -0
- package/operations/filter.js +23 -7
- package/operations/filter.js.map +1 -1
- package/operations/quick-filter.js +2 -5
- package/operations/quick-filter.js.map +1 -1
- package/operations/sort.d.ts +21 -2
- package/operations/sort.js +41 -14
- package/operations/sort.js.map +1 -1
- package/package.json +8 -3
- package/setup.d.ts +11 -0
- package/setup.js +9 -19
- package/setup.js.map +1 -1
- package/styles/_token-values.css.d.ts +1 -0
- package/styles/_token-values.css.js +3 -0
- package/styles/_token-values.css.js.map +1 -0
- package/styles/_tokens.css.js +1 -1
- package/styles/_tokens.css.js.map +1 -1
- package/styles/body-cell/body-cell.css.js +1 -1
- package/styles/body-cell/body-cell.css.js.map +1 -1
- package/styles/body-cell/cell-renderers.css.js +1 -1
- package/styles/body-cell/cell-renderers.css.js.map +1 -1
- package/styles/body-row/body-row.css.js +1 -1
- package/styles/body-row/body-row.css.js.map +1 -1
- package/styles/document-tokens.css.d.ts +1 -0
- package/styles/document-tokens.css.js +3 -0
- package/styles/document-tokens.css.js.map +1 -0
- package/styles/filter-row/filter-row.css.js +1 -1
- package/styles/filter-row/filter-row.css.js.map +1 -1
- package/styles/grid/_grid.base.css.js +1 -1
- package/styles/grid/_grid.base.css.js.map +1 -1
- package/styles/grid/grid.css.js +1 -1
- package/styles/grid/grid.css.js.map +1 -1
- package/styles/group-header-row/group-header-row.css.js +1 -1
- package/styles/group-header-row/group-header-row.css.js.map +1 -1
- package/styles/header-cell/header-cell.css.js +1 -1
- package/styles/header-cell/header-cell.css.js.map +1 -1
- package/styles/header-row/header-row.base.css.js +1 -1
- package/styles/header-row/header-row.base.css.js.map +1 -1
- package/styles/paginator/paginator.css.js +1 -1
- package/styles/paginator/paginator.css.js.map +1 -1
- package/styles/toolbar/toolbar.css.js +1 -1
- package/styles/toolbar/toolbar.css.js.map +1 -1
- package/tokens.css +78 -0
- package/LICENSE +0 -80
- package/docs/media/LICENSE +0 -80
- package/docs/media/_tokens.scss +0 -214
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../src/operations/filter/operands/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../src/operations/filter/operands/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAapE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAqC;IAC9E,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,aAAc,EAAE,EAAE,CACtC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KACpF;IACD,cAAc,EAAE;QACd,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,aAAc,EAAE,EAAE,CACtC,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KACrF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAc,EAAE,EAAE,CAC5C,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;KAC5F;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAc,EAAE,EAAE,CAC5C,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;KAC1F;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,CAC3C,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC;KACpF;IAED,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,CAC3C,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC;KACpF;IAED,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;KAC1D;IAED,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;KAC1D;CACF,CAAC,CAAC","sourcesContent":["import { normalizeCase } from '../../../internal/normalize-case.js';\nimport type { FilterOperands } from '../types.js';\n\nexport type StringKeys =\n | 'contains'\n | 'doesNotContain'\n | 'startsWith'\n | 'endsWith'\n | 'equals'\n | 'doesNotEqual'\n | 'empty'\n | 'notEmpty';\n\nexport const StringOperands = Object.freeze<FilterOperands<string, StringKeys>>({\n contains: {\n name: 'contains',\n label: 'Contains',\n unary: false,\n logic: (target, term, caseSensitive?) =>\n normalizeCase(target, caseSensitive).includes(normalizeCase(term, caseSensitive)),\n },\n doesNotContain: {\n name: 'doesNotContain',\n label: 'Does not contain',\n unary: false,\n logic: (target, term, caseSensitive?) =>\n !normalizeCase(target, caseSensitive).includes(normalizeCase(term, caseSensitive)),\n },\n startsWith: {\n name: 'startsWith',\n label: 'Starts with',\n unary: false,\n logic: (target, searchTerm, caseSensitive?) =>\n normalizeCase(target, caseSensitive).startsWith(normalizeCase(searchTerm, caseSensitive)),\n },\n endsWith: {\n name: 'endsWith',\n label: 'Ends with',\n unary: false,\n logic: (target, searchTerm, caseSensitive?) =>\n normalizeCase(target, caseSensitive).endsWith(normalizeCase(searchTerm, caseSensitive)),\n },\n equals: {\n name: 'equals',\n label: 'Equals',\n unary: false,\n logic: (target, searchTerm, caseSensitive) =>\n normalizeCase(target, caseSensitive) === normalizeCase(searchTerm, caseSensitive),\n },\n\n doesNotEqual: {\n name: 'doesNotEqual',\n label: 'Does not equal',\n unary: false,\n logic: (target, searchTerm, caseSensitive) =>\n normalizeCase(target, caseSensitive) !== normalizeCase(searchTerm, caseSensitive),\n },\n\n empty: {\n name: 'empty',\n label: 'Empty',\n unary: true,\n logic: (target) => normalizeCase(target, true).length < 1,\n },\n\n notEmpty: {\n name: 'notEmpty',\n label: 'Not empty',\n unary: true,\n logic: (target) => normalizeCase(target, true).length > 0,\n },\n});\n"]}
|
|
@@ -54,4 +54,16 @@ export interface BaseFilterExpression<T, K extends Keys<T> = Keys<T>> {
|
|
|
54
54
|
* See {@link BaseFilterExpression} for the full documentation.
|
|
55
55
|
*/
|
|
56
56
|
export type FilterExpression<T, K extends Keys<T> = Keys<T>> = K extends Keys<T> ? BaseFilterExpression<T, K> : never;
|
|
57
|
-
|
|
57
|
+
/**
|
|
58
|
+
* The operand names a filter `condition` may use for a value of `Type`.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* Any other value type (a `Date`, an array, an object) offers the string
|
|
62
|
+
* operand names, the set the grid applies to a column with no numeric or
|
|
63
|
+
* boolean type. `null` and `undefined` add no names, so a `number | null` or
|
|
64
|
+
* optional number field keeps the number operand names only. A field typed
|
|
65
|
+
* `unknown` (or `any`), such as every field of a `Record<string, unknown>`
|
|
66
|
+
* row, keeps every operand name: the grid picks the operands from the
|
|
67
|
+
* column type at runtime, which the value type does not tell.
|
|
68
|
+
*/
|
|
69
|
+
export type OperandKeys<Type> = unknown extends Type ? keyof typeof NumberOperands | keyof typeof StringOperands | keyof typeof BooleanOperands : Type extends null | undefined ? never : Type extends number ? keyof typeof NumberOperands : Type extends string ? keyof typeof StringOperands : Type extends boolean ? keyof typeof BooleanOperands : keyof typeof StringOperands;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/operations/filter/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Keys } from '../../internal/types.js';\nimport type { BooleanOperands } from './operands/boolean.js';\nimport type { NumberOperands } from './operands/number.js';\nimport type { StringOperands } from './operands/string.js';\n\n/**\n * Controls how a data record should resolve in a filter operation:\n * - `'and'` - the record must pass all the conditions.\n * - `'or'` - the record must pass at least one condition.\n */\nexport type FilterCriteria = 'and' | 'or';\n\nexport type FilterOperationLogic<T> = (\n target: T,\n searchTerm: T,\n caseSensitive?: boolean\n) => boolean;\n\nexport interface FilterOperation<T> {\n name: string;\n label?: string;\n unary: boolean;\n logic: FilterOperationLogic<T>;\n}\n\nexport type FilterOperands<DataType, Operands extends string> = {\n [key in Operands]: FilterOperation<DataType>;\n};\n\n/**\n * Represents a filter operation for a given column.\n */\nexport interface BaseFilterExpression<T, K extends Keys<T> = Keys<T>> {\n /**\n * The target column for the filter operation.\n */\n key: K;\n /**\n * The filter function which will be executed against the data records.\n */\n condition: FilterOperation<T[K]> | OperandKeys<T[K]>;\n\n /**\n * The filtering value used in the filter condition function.\n *\n * @remarks\n * Optional for unary conditions.\n */\n searchTerm?: T[K];\n /**\n * Dictates how this expression should resolve in the filter operation in relation to\n * other expressions.\n */\n criteria?: FilterCriteria;\n /**\n * Whether the sort operation should be case sensitive.\n *\n * @remarks\n * If not provided, the value is resolved based on the column filter configuration (if any).\n */\n caseSensitive?: boolean;\n}\n\n/**\n * See {@link BaseFilterExpression} for the full documentation.\n */\nexport type FilterExpression<T, K extends Keys<T> = Keys<T>> =\n K extends Keys<T> ? BaseFilterExpression<T, K> : never;\n\nexport type OperandKeys<Type> =
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/operations/filter/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Keys } from '../../internal/types.js';\nimport type { BooleanOperands } from './operands/boolean.js';\nimport type { NumberOperands } from './operands/number.js';\nimport type { StringOperands } from './operands/string.js';\n\n/**\n * Controls how a data record should resolve in a filter operation:\n * - `'and'` - the record must pass all the conditions.\n * - `'or'` - the record must pass at least one condition.\n */\nexport type FilterCriteria = 'and' | 'or';\n\nexport type FilterOperationLogic<T> = (\n target: T,\n searchTerm: T,\n caseSensitive?: boolean\n) => boolean;\n\nexport interface FilterOperation<T> {\n name: string;\n label?: string;\n unary: boolean;\n logic: FilterOperationLogic<T>;\n}\n\nexport type FilterOperands<DataType, Operands extends string> = {\n [key in Operands]: FilterOperation<DataType>;\n};\n\n/**\n * Represents a filter operation for a given column.\n */\nexport interface BaseFilterExpression<T, K extends Keys<T> = Keys<T>> {\n /**\n * The target column for the filter operation.\n */\n key: K;\n /**\n * The filter function which will be executed against the data records.\n */\n condition: FilterOperation<T[K]> | OperandKeys<T[K]>;\n\n /**\n * The filtering value used in the filter condition function.\n *\n * @remarks\n * Optional for unary conditions.\n */\n searchTerm?: T[K];\n /**\n * Dictates how this expression should resolve in the filter operation in relation to\n * other expressions.\n */\n criteria?: FilterCriteria;\n /**\n * Whether the sort operation should be case sensitive.\n *\n * @remarks\n * If not provided, the value is resolved based on the column filter configuration (if any).\n */\n caseSensitive?: boolean;\n}\n\n/**\n * See {@link BaseFilterExpression} for the full documentation.\n */\nexport type FilterExpression<T, K extends Keys<T> = Keys<T>> =\n K extends Keys<T> ? BaseFilterExpression<T, K> : never;\n\n/**\n * The operand names a filter `condition` may use for a value of `Type`.\n *\n * @remarks\n * Any other value type (a `Date`, an array, an object) offers the string\n * operand names, the set the grid applies to a column with no numeric or\n * boolean type. `null` and `undefined` add no names, so a `number | null` or\n * optional number field keeps the number operand names only. A field typed\n * `unknown` (or `any`), such as every field of a `Record<string, unknown>`\n * row, keeps every operand name: the grid picks the operands from the\n * column type at runtime, which the value type does not tell.\n */\nexport type OperandKeys<Type> = unknown extends Type\n ? keyof typeof NumberOperands | keyof typeof StringOperands | keyof typeof BooleanOperands\n : Type extends null | undefined\n ? never\n : Type extends number\n ? keyof typeof NumberOperands\n : Type extends string\n ? keyof typeof StringOperands\n : Type extends boolean\n ? keyof typeof BooleanOperands\n : keyof typeof StringOperands;\n"]}
|
package/operations/filter.d.ts
CHANGED
|
@@ -3,6 +3,12 @@ import type { FilterState } from './filter/state.js';
|
|
|
3
3
|
import type { FilterExpression } from './filter/types.js';
|
|
4
4
|
export default class FilterDataOperation<T extends object> extends DataOperation<T> {
|
|
5
5
|
protected resolveFilter(record: T, expr: FilterExpression<T>): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Whether `record` passes one column's expressions: all of its `and`
|
|
8
|
+
* expressions (when it has any) or any one of its `or` expressions. Criteria
|
|
9
|
+
* never reach across columns, so each column is matched on its own.
|
|
10
|
+
*/
|
|
6
11
|
protected match(record: T, ands: FilterExpression<T>[], ors: FilterExpression<T>[]): boolean;
|
|
12
|
+
/** Keeps the records that pass every filtered column. */
|
|
7
13
|
apply(data: T[], state: FilterState<T>): T[];
|
|
8
14
|
}
|
package/operations/filter.js
CHANGED
|
@@ -5,18 +5,34 @@ export default class FilterDataOperation extends DataOperation {
|
|
|
5
5
|
return condition.logic(this.resolveValue(record, expr.key), expr.searchTerm, expr.caseSensitive);
|
|
6
6
|
}
|
|
7
7
|
match(record, ands, ors) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
if (ands.length === 0 && ors.length === 0)
|
|
9
|
+
return true;
|
|
10
|
+
if (ands.length > 0) {
|
|
11
|
+
let all = true;
|
|
12
|
+
for (let i = 0; i < ands.length && all; i++)
|
|
13
|
+
all = this.resolveFilter(record, ands[i]);
|
|
14
|
+
if (all)
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
for (let i = 0; i < ors.length; i++) {
|
|
18
|
+
if (this.resolveFilter(record, ors[i]))
|
|
19
|
+
return true;
|
|
12
20
|
}
|
|
13
|
-
return
|
|
21
|
+
return false;
|
|
14
22
|
}
|
|
15
23
|
apply(data, state) {
|
|
16
24
|
if (state.empty)
|
|
17
25
|
return data;
|
|
18
|
-
const
|
|
19
|
-
|
|
26
|
+
const trees = state.values;
|
|
27
|
+
const ands = trees.map((tree) => tree.ands);
|
|
28
|
+
const ors = trees.map((tree) => tree.ors);
|
|
29
|
+
return data.filter((record) => {
|
|
30
|
+
for (let i = 0; i < trees.length; i++) {
|
|
31
|
+
if (!this.match(record, ands[i], ors[i]))
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
});
|
|
20
36
|
}
|
|
21
37
|
}
|
|
22
38
|
//# sourceMappingURL=filter.js.map
|
package/operations/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/operations/filter.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,WAAW,CAAC;AAItC,MAAM,CAAC,OAAO,OAAO,mBAAsC,SAAQ,aAAgB;IACvE,aAAa,CAAC,MAAS,EAAE,IAAyB;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;QACvD,OAAO,SAAS,CAAC,KAAK,CAEpB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAM,EACxC,IAAI,CAAC,UAAe,EACpB,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/operations/filter.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,WAAW,CAAC;AAItC,MAAM,CAAC,OAAO,OAAO,mBAAsC,SAAQ,aAAgB;IACvE,aAAa,CAAC,MAAS,EAAE,IAAyB;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;QACvD,OAAO,SAAS,CAAC,KAAK,CAEpB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAM,EACxC,IAAI,CAAC,UAAe,EACpB,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAOS,KAAK,CAAC,MAAS,EAAE,IAA2B,EAAE,GAA0B;QAChF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE;gBAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,GAAG;gBAAE,OAAO,IAAI,CAAC;QACvB,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGM,KAAK,CAAC,IAAS,EAAE,KAAqB;QAC3C,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAG7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import DataOperation from './base.js';\nimport type { FilterState } from './filter/state.js';\nimport type { FilterExpression, FilterOperation } from './filter/types.js';\n\nexport default class FilterDataOperation<T extends object> extends DataOperation<T> {\n protected resolveFilter(record: T, expr: FilterExpression<T>) {\n const condition = expr.condition as FilterOperation<T>;\n return condition.logic(\n // XXX: Types\n this.resolveValue(record, expr.key) as T,\n expr.searchTerm as T,\n expr.caseSensitive\n );\n }\n\n /**\n * Whether `record` passes one column's expressions: all of its `and`\n * expressions (when it has any) or any one of its `or` expressions. Criteria\n * never reach across columns, so each column is matched on its own.\n */\n protected match(record: T, ands: FilterExpression<T>[], ors: FilterExpression<T>[]): boolean {\n if (ands.length === 0 && ors.length === 0) return true;\n if (ands.length > 0) {\n let all = true;\n for (let i = 0; i < ands.length && all; i++) all = this.resolveFilter(record, ands[i]);\n if (all) return true;\n }\n for (let i = 0; i < ors.length; i++) {\n if (this.resolveFilter(record, ors[i])) return true;\n }\n return false;\n }\n\n /** Keeps the records that pass every filtered column. */\n public apply(data: T[], state: FilterState<T>): T[] {\n if (state.empty) return data;\n\n // Split each column into its and / or lists once per apply, not per record.\n const trees = state.values;\n const ands = trees.map((tree) => tree.ands);\n const ors = trees.map((tree) => tree.ors);\n return data.filter((record) => {\n for (let i = 0; i < trees.length; i++) {\n if (!this.match(record, ands[i], ors[i])) return false;\n }\n return true;\n });\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeCase } from '../internal/normalize-case.js';
|
|
1
2
|
import DataOperation from './base.js';
|
|
2
3
|
export default class QuickFilterDataOperation extends DataOperation {
|
|
3
4
|
apply(data, searchTerm, columns) {
|
|
@@ -11,11 +12,7 @@ export default class QuickFilterDataOperation extends DataOperation {
|
|
|
11
12
|
}
|
|
12
13
|
return data.filter((record) => {
|
|
13
14
|
for (const key of keys) {
|
|
14
|
-
|
|
15
|
-
if (value === null || value === undefined) {
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
if (String(value).toLowerCase().includes(term)) {
|
|
15
|
+
if (normalizeCase(record[key]).includes(term)) {
|
|
19
16
|
return true;
|
|
20
17
|
}
|
|
21
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-filter.js","sourceRoot":"","sources":["../../src/operations/quick-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quick-filter.js","sourceRoot":"","sources":["../../src/operations/quick-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,aAAa,MAAM,WAAW,CAAC;AAWtC,MAAM,CAAC,OAAO,OAAO,wBAA2C,SAAQ,aAAgB;IAQ/E,KAAK,CAAC,IAAS,EAAE,UAAkB,EAAE,OAAsC;QAChF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAc,CAAC,CAAC;QAE/F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9C,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { normalizeCase } from '../internal/normalize-case.js';\nimport type { ColumnConfiguration, Keys } from '../internal/types.js';\nimport DataOperation from './base.js';\n\n/**\n * Built-in quick-filter (global search) data operation.\n *\n * @remarks\n * Performs a case-insensitive substring match of the search term across every visible\n * column's stringified value. Returns the original dataset unchanged when the search\n * term is empty / whitespace-only. Used by the grid when `quickFilter` is set; the\n * search can be customised through {@link DataPipelineConfiguration.quickFilter}.\n */\nexport default class QuickFilterDataOperation<T extends object> extends DataOperation<T> {\n /**\n * Returns the records whose visible column values contain `searchTerm` (case-insensitive).\n *\n * @param data - The dataset to filter.\n * @param searchTerm - The trimmed search term (already normalised to lower-case is fine).\n * @param columns - The current column configuration; hidden columns are skipped.\n */\n public apply(data: T[], searchTerm: string, columns: Array<ColumnConfiguration<T>>): T[] {\n const term = searchTerm.trim().toLowerCase();\n if (!term) {\n return data;\n }\n\n const keys = columns.filter((column) => !column.hidden).map((column) => column.key as Keys<T>);\n\n if (keys.length === 0) {\n return data;\n }\n\n return data.filter((record) => {\n for (const key of keys) {\n if (normalizeCase(record[key]).includes(term)) {\n return true;\n }\n }\n return false;\n });\n }\n}\n"]}
|
package/operations/sort.d.ts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import DataOperation from './base.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SortState } from './sort/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Sorts rows by one or more sort expressions, in priority order.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The built-in comparison (an expression without a `comparer`):
|
|
8
|
+
* - Empty cells, meaning `null`, `undefined`, `NaN` and invalid Dates, sort after every
|
|
9
|
+
* real value in both directions, and empties count as equal to each other.
|
|
10
|
+
* - Strings compare with `localeCompare`, case folded first unless `caseSensitive` is true.
|
|
11
|
+
* Other values compare with `<` and `>`.
|
|
12
|
+
*
|
|
13
|
+
* A custom `comparer` receives the raw cell values, empty ones and original casing
|
|
14
|
+
* included, and owns their order; a descending sort reverses its result.
|
|
15
|
+
*
|
|
16
|
+
* Rows that tie on every expression keep their incoming order, so the result is a stable
|
|
17
|
+
* total order. Each row's key is resolved once per expression before sorting, so case
|
|
18
|
+
* folding costs one call per row rather than one per comparison.
|
|
19
|
+
*/
|
|
3
20
|
export default class SortDataOperation<T> extends DataOperation<T> {
|
|
21
|
+
#private;
|
|
4
22
|
protected orderBy: Map<string, number>;
|
|
5
23
|
protected compareValues<U>(first: U, second: U): number;
|
|
6
|
-
|
|
24
|
+
/** The key the built-in comparison sorts by: case folded, Dates as time, empties as EMPTY. */
|
|
25
|
+
protected sortKey(value: unknown, caseSensitive?: boolean): {};
|
|
7
26
|
apply(data: T[], state: SortState<T>): T[];
|
|
8
27
|
}
|
package/operations/sort.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import DataOperation from './base.js';
|
|
2
|
+
const EMPTY = Symbol('empty');
|
|
2
3
|
export default class SortDataOperation extends DataOperation {
|
|
3
4
|
constructor() {
|
|
4
5
|
super(...arguments);
|
|
@@ -13,24 +14,50 @@ export default class SortDataOperation extends DataOperation {
|
|
|
13
14
|
}
|
|
14
15
|
return first > second ? 1 : first < second ? -1 : 0;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
sortKey(value, caseSensitive) {
|
|
18
|
+
const key = value instanceof Date ? value.getTime() : this.resolveCase(value, caseSensitive);
|
|
19
|
+
return key == null || Number.isNaN(key) ? EMPTY : key;
|
|
20
|
+
}
|
|
21
|
+
#rowCompare(data, expression, dir) {
|
|
22
|
+
const { key, caseSensitive, comparer } = expression;
|
|
23
|
+
const keys = data.map((row) => comparer
|
|
24
|
+
? this.resolveValue(row, key)
|
|
25
|
+
: this.sortKey(this.resolveValue(row, key), caseSensitive));
|
|
26
|
+
if (comparer) {
|
|
27
|
+
return (x, y) => dir * comparer(keys[x], keys[y]);
|
|
28
|
+
}
|
|
29
|
+
return (x, y) => {
|
|
30
|
+
const a = keys[x];
|
|
31
|
+
const b = keys[y];
|
|
32
|
+
if (a === EMPTY || b === EMPTY) {
|
|
33
|
+
return a === b ? 0 : a === EMPTY ? 1 : -1;
|
|
34
|
+
}
|
|
35
|
+
return dir * this.compareValues(a, b);
|
|
36
|
+
};
|
|
21
37
|
}
|
|
22
38
|
apply(data, state) {
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
const compares = [];
|
|
40
|
+
for (const expression of state.values()) {
|
|
41
|
+
const dir = this.orderBy.get(expression.direction);
|
|
42
|
+
if (dir)
|
|
43
|
+
compares.push(this.#rowCompare(data, expression, dir));
|
|
44
|
+
}
|
|
45
|
+
if (!compares.length)
|
|
46
|
+
return data;
|
|
47
|
+
const length = compares.length;
|
|
48
|
+
const order = data.map((_, i) => i);
|
|
49
|
+
order.sort((x, y) => {
|
|
50
|
+
for (let i = 0; i < length; i++) {
|
|
51
|
+
const result = compares[i](x, y);
|
|
52
|
+
if (result)
|
|
53
|
+
return result;
|
|
31
54
|
}
|
|
32
|
-
return
|
|
55
|
+
return x - y;
|
|
33
56
|
});
|
|
57
|
+
const rows = data.slice();
|
|
58
|
+
for (let i = 0; i < order.length; i++) {
|
|
59
|
+
data[i] = rows[order[i]];
|
|
60
|
+
}
|
|
34
61
|
return data;
|
|
35
62
|
}
|
|
36
63
|
}
|
package/operations/sort.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort.js","sourceRoot":"","sources":["../../src/operations/sort.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sort.js","sourceRoot":"","sources":["../../src/operations/sort.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,WAAW,CAAC;AAItC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAqB9B,MAAM,CAAC,OAAO,OAAO,iBAAqB,SAAQ,aAAgB;IAAlE;;QACY,YAAO,GAAG,IAAI,GAAG,CACzB,MAAM,CAAC,OAAO,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC,CAAC;SACf,CAAC,CACH,CAAC;IA+DJ,CAAC;IA7DW,aAAa,CAAI,KAAQ,EAAE,MAAS;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAGS,OAAO,CAAC,KAAc,EAAE,aAAuB;QACvD,MAAM,GAAG,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7F,OAAO,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,IAAS,EAAE,UAA6B,EAAE,GAAW;QAC/D,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,QAAQ;YACN,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,CAC7D,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YAEb,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAQ,EAAE,IAAI,CAAC,CAAC,CAAQ,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACd,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAElB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAS,EAAE,KAAmB;QACzC,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,GAAG;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;YAC5B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import DataOperation from './base.js';\nimport type { SortExpression, SortState } from './sort/types.js';\n\n/** Stands in for an empty cell (null, undefined, NaN, invalid Date) in a precomputed sort key. */\nconst EMPTY = Symbol('empty');\n\ntype RowCompare = (x: number, y: number) => number;\n\n/**\n * Sorts rows by one or more sort expressions, in priority order.\n *\n * @remarks\n * The built-in comparison (an expression without a `comparer`):\n * - Empty cells, meaning `null`, `undefined`, `NaN` and invalid Dates, sort after every\n * real value in both directions, and empties count as equal to each other.\n * - Strings compare with `localeCompare`, case folded first unless `caseSensitive` is true.\n * Other values compare with `<` and `>`.\n *\n * A custom `comparer` receives the raw cell values, empty ones and original casing\n * included, and owns their order; a descending sort reverses its result.\n *\n * Rows that tie on every expression keep their incoming order, so the result is a stable\n * total order. Each row's key is resolved once per expression before sorting, so case\n * folding costs one call per row rather than one per comparison.\n */\nexport default class SortDataOperation<T> extends DataOperation<T> {\n protected orderBy = new Map(\n Object.entries({\n ascending: 1,\n descending: -1,\n })\n );\n\n protected compareValues<U>(first: U, second: U) {\n if (typeof first === 'string' && typeof second === 'string') {\n return first.localeCompare(second);\n }\n return first > second ? 1 : first < second ? -1 : 0;\n }\n\n /** The key the built-in comparison sorts by: case folded, Dates as time, empties as EMPTY. */\n protected sortKey(value: unknown, caseSensitive?: boolean) {\n const key = value instanceof Date ? value.getTime() : this.resolveCase(value, caseSensitive);\n return key == null || Number.isNaN(key) ? EMPTY : key;\n }\n\n #rowCompare(data: T[], expression: SortExpression<T>, dir: number): RowCompare {\n const { key, caseSensitive, comparer } = expression;\n const keys = data.map((row) =>\n comparer\n ? this.resolveValue(row, key)\n : this.sortKey(this.resolveValue(row, key), caseSensitive)\n );\n\n if (comparer) {\n // TODO: Remove casting as any\n return (x, y) => dir * comparer(keys[x] as any, keys[y] as any);\n }\n\n return (x, y) => {\n const a = keys[x];\n const b = keys[y];\n // Empties sit after real values whatever the direction, so `dir` is not applied here.\n if (a === EMPTY || b === EMPTY) {\n return a === b ? 0 : a === EMPTY ? 1 : -1;\n }\n return dir * this.compareValues(a, b);\n };\n }\n\n public apply(data: T[], state: SortState<T>) {\n const compares: RowCompare[] = [];\n for (const expression of state.values()) {\n const dir = this.orderBy.get(expression.direction);\n if (dir) compares.push(this.#rowCompare(data, expression, dir));\n }\n if (!compares.length) return data;\n\n const length = compares.length;\n const order = data.map((_, i) => i);\n order.sort((x, y) => {\n for (let i = 0; i < length; i++) {\n const result = compares[i](x, y);\n if (result) return result;\n }\n return x - y;\n });\n\n const rows = data.slice();\n for (let i = 0; i < order.length; i++) {\n data[i] = rows[order[i]];\n }\n return data;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apex-grid",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "Web component data grid following open-wc recommendations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lit",
|
|
@@ -22,10 +22,15 @@
|
|
|
22
22
|
"types": "./internal/index.d.ts",
|
|
23
23
|
"default": "./internal/index.js"
|
|
24
24
|
},
|
|
25
|
-
"./styles.css": "./styles.css"
|
|
25
|
+
"./styles.css": "./styles.css",
|
|
26
|
+
"./tokens.css": "./tokens.css"
|
|
26
27
|
},
|
|
27
28
|
"type": "module",
|
|
28
|
-
"sideEffects":
|
|
29
|
+
"sideEffects": [
|
|
30
|
+
"./define.js",
|
|
31
|
+
"./styles.css",
|
|
32
|
+
"./tokens.css"
|
|
33
|
+
],
|
|
29
34
|
"repository": {
|
|
30
35
|
"type": "git",
|
|
31
36
|
"url": "git+https://github.com/apexcharts/apex-grid.git"
|
package/setup.d.ts
CHANGED
|
@@ -23,6 +23,17 @@ export interface ApexGridSetupOptions {
|
|
|
23
23
|
* @defaultValue true
|
|
24
24
|
*/
|
|
25
25
|
hostStyles?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the grid adopts its `--ag-*` token defaults into the document, on
|
|
28
|
+
* `:where(:root)` (zero specificity, so any value you set wins). They are what
|
|
29
|
+
* make `var(--ag-*)` readable from your own CSS. Set to `false` if you manage
|
|
30
|
+
* your own CSS, and load `apex-grid/tokens.css` (or your own values) instead.
|
|
31
|
+
* The grid renders the same either way: it carries the same defaults as
|
|
32
|
+
* fallbacks.
|
|
33
|
+
*
|
|
34
|
+
* @defaultValue true
|
|
35
|
+
*/
|
|
36
|
+
tokenStyles?: boolean;
|
|
26
37
|
}
|
|
27
38
|
/**
|
|
28
39
|
* One-call convenience: registers `<apex-grid>` and adopts a default host
|
package/setup.js
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
import { ApexGrid } from './components/grid.js';
|
|
2
|
-
|
|
3
|
-
let hostStylesInjected = false;
|
|
2
|
+
import { adoptOnce, documentStyleOptions, hostSizingCss } from './internal/document-styles.js';
|
|
4
3
|
function adoptHostStyles() {
|
|
5
|
-
if (
|
|
4
|
+
if (typeof document === 'undefined')
|
|
6
5
|
return;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
sheet.replaceSync(HOST_CSS);
|
|
10
|
-
document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
const style = document.createElement('style');
|
|
14
|
-
style.setAttribute('data-apex-grid', 'host-styles');
|
|
15
|
-
style.textContent = HOST_CSS;
|
|
16
|
-
document.head.appendChild(style);
|
|
17
|
-
}
|
|
18
|
-
hostStylesInjected = true;
|
|
6
|
+
documentStyleOptions.hostSizing = true;
|
|
7
|
+
adoptOnce(document, `host:${ApexGrid.tagName}`, hostSizingCss(ApexGrid.tagName));
|
|
19
8
|
}
|
|
20
9
|
let themeWarned = false;
|
|
21
10
|
function warnThemeIsInert() {
|
|
@@ -28,12 +17,13 @@ function warnThemeIsInert() {
|
|
|
28
17
|
'Call `configureTheme()` directly if you need it, and drop the option.');
|
|
29
18
|
}
|
|
30
19
|
export function setup(options = {}) {
|
|
31
|
-
const { theme, hostStyles = true } = options;
|
|
32
|
-
|
|
33
|
-
if (theme !== undefined)
|
|
34
|
-
warnThemeIsInert();
|
|
20
|
+
const { theme, hostStyles = true, tokenStyles = true } = options;
|
|
21
|
+
documentStyleOptions.tokens = tokenStyles;
|
|
35
22
|
if (hostStyles) {
|
|
36
23
|
adoptHostStyles();
|
|
37
24
|
}
|
|
25
|
+
ApexGrid.register();
|
|
26
|
+
if (theme !== undefined)
|
|
27
|
+
warnThemeIsInert();
|
|
38
28
|
}
|
|
39
29
|
//# sourceMappingURL=setup.js.map
|
package/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AA2C/F,SAAS,eAAe;IACtB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAI5C,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,QAAQ,QAAQ,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,SAAS,gBAAgB;IACvB,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IAEnB,OAAO,CAAC,IAAI,CACV,+EAA+E;QAC7E,iFAAiF;QACjF,kFAAkF;QAClF,uEAAuE,CAC1E,CAAC;AACJ,CAAC;AA0BD,MAAM,UAAU,KAAK,CAAC,UAAgC,EAAE;IACtD,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAGjE,oBAAoB,CAAC,MAAM,GAAG,WAAW,CAAC;IAC1C,IAAI,UAAU,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEpB,IAAI,KAAK,KAAK,SAAS;QAAE,gBAAgB,EAAE,CAAC;AAC9C,CAAC","sourcesContent":["import { ApexGrid } from './components/grid.js';\nimport { adoptOnce, documentStyleOptions, hostSizingCss } from './internal/document-styles.js';\n\ntype ApexGridTheme = 'bootstrap' | 'material' | 'fluent' | 'indigo';\n\nexport interface ApexGridSetupOptions {\n /**\n * @deprecated Inert, and accepted only so existing calls keep compiling.\n *\n * The grid never shipped its own per-framework themes — it styles itself\n * entirely through `--ag-*` CSS custom properties (see the README's theming\n * section), so this option never affected its appearance. It used to forward\n * to `configureTheme()` from `igniteui-webcomponents`, which made a whole\n * component library a runtime dependency of every consumer for one\n * pass-through call. The dependency is gone and so is the forwarding.\n *\n * If you were relying on that side effect to theme your own Ignite UI\n * components, call `configureTheme()` yourself. Passing this option now warns\n * once and does nothing else; it will be removed in the next major version.\n */\n theme?: ApexGridTheme;\n\n /**\n * Whether to adopt a default host stylesheet that sets `height: 100%`\n * with a `min-height: 240px` fallback. Set to `false` if you want to\n * provide your own host sizing.\n *\n * @defaultValue true\n */\n hostStyles?: boolean;\n\n /**\n * Whether the grid adopts its `--ag-*` token defaults into the document, on\n * `:where(:root)` (zero specificity, so any value you set wins). They are what\n * make `var(--ag-*)` readable from your own CSS. Set to `false` if you manage\n * your own CSS, and load `apex-grid/tokens.css` (or your own values) instead.\n * The grid renders the same either way: it carries the same defaults as\n * fallbacks.\n *\n * @defaultValue true\n */\n tokenStyles?: boolean;\n}\n\nfunction adoptHostStyles(): void {\n if (typeof document === 'undefined') return;\n // Every grid adopts the sizing into the root it connects in (a page sheet\n // never reaches a grid inside a shadow root); the page gets it right away so\n // a grid already parsed into the document is sized before it connects.\n documentStyleOptions.hostSizing = true;\n adoptOnce(document, `host:${ApexGrid.tagName}`, hostSizingCss(ApexGrid.tagName));\n}\n\nlet themeWarned = false;\n\nfunction warnThemeIsInert(): void {\n if (themeWarned) return;\n themeWarned = true;\n // biome-ignore lint/suspicious/noConsole: intentional one-shot deprecation diagnostic\n console.warn(\n '[apex-grid] `setup({ theme })` is inert and will be removed. The grid styles ' +\n 'itself through `--ag-*` CSS custom properties; this option only ever forwarded ' +\n \"to igniteui-webcomponents' `configureTheme()`, which is no longer a dependency. \" +\n 'Call `configureTheme()` directly if you need it, and drop the option.'\n );\n}\n\n/**\n * One-call convenience: registers `<apex-grid>` and adopts a default host\n * stylesheet so the virtualizer has a bounded height. The grid is styled\n * out-of-the-box via `--ag-*` CSS custom properties — no theme import needed.\n *\n * @remarks\n * This is an **additive** alternative to the manual setup\n * (`import 'apex-grid/define'` + host CSS). Idempotent — safe to call more\n * than once; host styles are adopted only on the first call.\n *\n * Customize the look by overriding `--ag-*` CSS variables (see the README).\n * The deprecated {@link ApexGridSetupOptions.theme} option is inert.\n *\n * @example\n * ```ts\n * import { setup } from 'apex-grid';\n * setup();\n * ```\n *\n * @example Opt out of injected host styles:\n * ```ts\n * setup({ hostStyles: false });\n * ```\n */\nexport function setup(options: ApexGridSetupOptions = {}): void {\n const { theme, hostStyles = true, tokenStyles = true } = options;\n\n // Before registering: a grid already in the page connects during register().\n documentStyleOptions.tokens = tokenStyles;\n if (hostStyles) {\n adoptHostStyles();\n }\n\n ApexGrid.register();\n\n if (theme !== undefined) warnThemeIsInert();\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_token-values.css.js","sourceRoot":"","sources":["../../src/styles/_token-values.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\nexport const styles = css``;"]}
|
package/styles/_tokens.css.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host{--
|
|
2
|
+
export const styles = css `:host{--_ag-brand: var(--ag-brand, var(--ig-primary-500, #0d6fd3));--_ag-brand-strong: var(--ag-brand-strong, var(--ig-primary-700, #0a56b8));--_ag-hairline: var(--ag-hairline, rgba(15, 23, 42, 0.08));--_ag-border: var(--ag-border, rgba(15, 23, 42, 0.08));--_ag-pin-line: var(--ag-pin-line, rgba(15, 23, 42, 0.18));--_ag-header-separator: var(--ag-header-separator, rgba(15, 23, 42, 0.12));--_ag-grid-bg: var(--ag-grid-bg, #fff);--_ag-surface: var(--ag-surface, #fff);--_ag-surface-elevated: var(--ag-surface-elevated, #f8f9fb);--_ag-text: var(--ag-text, #111827);--_ag-text-body: var(--ag-text-body, #1f2937);--_ag-text-muted: var(--ag-text-muted, #6b7280);--_ag-text-subtle: var(--ag-text-subtle, #9ca3af);--_ag-text-on-brand: var(--ag-text-on-brand, #fff);--_ag-good: var(--ag-good, #10b981);--_ag-good-text: var(--ag-good-text, #047857);--_ag-good-soft: var(--ag-good-soft, rgba(16, 185, 129, 0.1));--_ag-watch: var(--ag-watch, #f59e0b);--_ag-watch-text: var(--ag-watch-text, #b45309);--_ag-watch-soft: var(--ag-watch-soft, rgba(245, 158, 11, 0.1));--_ag-risk: var(--ag-risk, #ef4444);--_ag-risk-text: var(--ag-risk-text, #b91c1c);--_ag-risk-soft: var(--ag-risk-soft, rgba(239, 68, 68, 0.1));--_ag-gold: var(--ag-gold, #fef3c7);--_ag-gold-line: var(--ag-gold-line, #fde68a);--_ag-gold-text: var(--ag-gold-text, #92400e);--_ag-shadow-card: var(--ag-shadow-card, 0 16px 38px rgba(15, 23, 42, 0.12), 0 0 0 1px rgba(15, 23, 42, 0.06), 0 1px 0 rgba(255, 255, 255, 0.9) inset);--_ag-font: var(--ag-font, Inter, -apple-system, blinkmacsystemfont, sans-serif);--_ag-fs-cell: var(--ag-fs-cell, 13px);--_ag-fs-cell-secondary: var(--ag-fs-cell-secondary, 11.5px);--_ag-fs-tiny: var(--ag-fs-tiny, 10px);--_ag-fw-regular: var(--ag-fw-regular, 500);--_ag-fw-semibold: var(--ag-fw-semibold, 600);--_ag-fw-bold: var(--ag-fw-bold, 700);--_ag-tracking-tight: var(--ag-tracking-tight, -0.005em);--_ag-tracking-header: var(--ag-tracking-header, 0.05em);--_ag-leading: var(--ag-leading, 1.4);--_ag-cell-pad-x: var(--ag-cell-pad-x, 10px);--_ag-row-h: var(--ag-row-h, 36px);--_ag-header-h: var(--ag-header-h, 40px);--_ag-toolbar-pad: var(--ag-toolbar-pad, 12px 14px);--_ag-footer-pad: var(--ag-footer-pad, 10px 14px);--_ag-radius: var(--ag-radius, 8px);--_ag-radius-sm: var(--ag-radius-sm, 6px);--_ag-radius-xs: var(--ag-radius-xs, 4px);--_ag-radius-pill: var(--ag-radius-pill, 20px);--_ag-ease: var(--ag-ease, cubic-bezier(0.2, 0.8, 0.2, 1));--_ag-dur-fast: var(--ag-dur-fast, 120ms);--_ag-dur-med: var(--ag-dur-med, 180ms);--_ag-dur-slow: var(--ag-dur-slow, 240ms);--_ag-brand-soft: var(--ag-brand-soft, color-mix(in srgb, var(--_ag-brand) 10%, transparent));--_ag-brand-softer: var(--ag-brand-softer, color-mix(in srgb, var(--_ag-brand) 7%, transparent));--_ag-brand-line: var(--ag-brand-line, color-mix(in srgb, var(--_ag-brand) 18%, transparent));--_ag-surface-alt: var(--ag-surface-alt, var(--_ag-surface));--_ag-row-hover: var(--ag-row-hover, color-mix(in srgb, #0f172a 5%, var(--_ag-surface)))}:host([theme~=dark]){--_ag-brand: var(--ag-brand, var(--ig-primary-500, #3b82f6));--_ag-brand-strong: var(--ag-brand-strong, var(--ig-primary-400, #60a5fa));--_ag-grid-bg: var(--ag-dark-grid-bg, #0f172a);--_ag-surface: var(--ag-dark-surface, #0f172a);--_ag-surface-elevated: var(--ag-dark-surface-elevated, #1e2532);--_ag-hairline: var(--ag-dark-hairline, rgba(255, 255, 255, 0.12));--_ag-border: var(--ag-dark-border, rgba(255, 255, 255, 0.12));--_ag-pin-line: var(--ag-dark-pin-line, rgba(255, 255, 255, 0.28));--_ag-header-separator: var(--ag-dark-header-separator, rgba(255, 255, 255, 0.18));--_ag-text: var(--ag-dark-text, #f1f5f9);--_ag-text-body: var(--ag-dark-text-body, #e2e8f0);--_ag-text-muted: var(--ag-dark-text-muted, #94a3b8);--_ag-text-subtle: var(--ag-dark-text-subtle, #64748b);--_ag-good-text: var(--ag-dark-good-text, #34d399);--_ag-good-soft: var(--ag-dark-good-soft, rgba(16, 185, 129, 0.18));--_ag-watch-text: var(--ag-dark-watch-text, #fbbf24);--_ag-watch-soft: var(--ag-dark-watch-soft, rgba(245, 158, 11, 0.18));--_ag-risk-text: var(--ag-dark-risk-text, #f87171);--_ag-risk-soft: var(--ag-dark-risk-soft, rgba(239, 68, 68, 0.18));--_ag-gold: var(--ag-dark-gold, rgba(245, 158, 11, 0.16));--_ag-gold-line: var(--ag-dark-gold-line, rgba(245, 158, 11, 0.35));--_ag-gold-text: var(--ag-dark-gold-text, #fcd34d);--_ag-shadow-card: var(--ag-dark-shadow-card, 0 16px 38px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.06), 0 1px 0 rgba(255, 255, 255, 0.04) inset);--_ag-surface-alt: var(--ag-dark-surface-alt, var(--_ag-surface));--_ag-row-hover: var(--ag-dark-row-hover, color-mix(in srgb, #fff 7%, var(--_ag-surface)))}:host([theme~=tinted]){--_ag-surface-alt: var(--ag-surface-alt, color-mix(in srgb, var(--_ag-brand) 4%, var(--_ag-surface)));--_ag-surface-elevated: color-mix(in srgb, var(--_ag-brand) 11%, var(--ag-surface-elevated, #f8f9fb));--_ag-hairline: color-mix(in srgb, var(--_ag-brand) 24%, var(--ag-hairline, rgba(15, 23, 42, 0.08)));--_ag-border: color-mix(in srgb, var(--_ag-brand) 12%, transparent);--_ag-row-hover: var(--ag-row-hover, color-mix(in srgb, var(--_ag-brand) 9%, var(--_ag-surface)));--_ag-text-muted: color-mix(in srgb, var(--_ag-brand) 32%, var(--ag-text-muted, #6b7280))}:host([theme~=dark][theme~=tinted]){--_ag-surface-alt: var(--ag-dark-surface-alt, color-mix(in srgb, var(--_ag-brand) 10%, var(--_ag-surface)));--_ag-surface-elevated: color-mix(in srgb, var(--_ag-brand) 20%, var(--ag-dark-surface-elevated, #1e2532));--_ag-hairline: color-mix(in srgb, var(--_ag-brand) 30%, var(--ag-dark-hairline, rgba(255, 255, 255, 0.12)));--_ag-border: color-mix(in srgb, var(--_ag-brand) 16%, rgb(255 255 255 / 7%));--_ag-row-hover: var(--ag-dark-row-hover, color-mix(in srgb, var(--_ag-brand) 12%, var(--_ag-surface)));--_ag-text-muted: color-mix(in srgb, var(--_ag-brand) 28%, var(--ag-dark-text-muted, #94a3b8))}@media(prefers-reduced-motion: reduce){:host{--_ag-dur-fast: 0ms;--_ag-dur-med: 0ms;--_ag-dur-slow: 0ms}}`;
|
|
3
3
|
//# sourceMappingURL=_tokens.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_tokens.css.js","sourceRoot":"","sources":["../../src/styles/_tokens.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"_tokens.css.js","sourceRoot":"","sources":["../../src/styles/_tokens.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,s0LAAs0L,CAAC","sourcesContent":["import { css } from 'lit';\nexport const styles = css`:host{--_ag-brand: var(--ag-brand, var(--ig-primary-500, #0d6fd3));--_ag-brand-strong: var(--ag-brand-strong, var(--ig-primary-700, #0a56b8));--_ag-hairline: var(--ag-hairline, rgba(15, 23, 42, 0.08));--_ag-border: var(--ag-border, rgba(15, 23, 42, 0.08));--_ag-pin-line: var(--ag-pin-line, rgba(15, 23, 42, 0.18));--_ag-header-separator: var(--ag-header-separator, rgba(15, 23, 42, 0.12));--_ag-grid-bg: var(--ag-grid-bg, #fff);--_ag-surface: var(--ag-surface, #fff);--_ag-surface-elevated: var(--ag-surface-elevated, #f8f9fb);--_ag-text: var(--ag-text, #111827);--_ag-text-body: var(--ag-text-body, #1f2937);--_ag-text-muted: var(--ag-text-muted, #6b7280);--_ag-text-subtle: var(--ag-text-subtle, #9ca3af);--_ag-text-on-brand: var(--ag-text-on-brand, #fff);--_ag-good: var(--ag-good, #10b981);--_ag-good-text: var(--ag-good-text, #047857);--_ag-good-soft: var(--ag-good-soft, rgba(16, 185, 129, 0.1));--_ag-watch: var(--ag-watch, #f59e0b);--_ag-watch-text: var(--ag-watch-text, #b45309);--_ag-watch-soft: var(--ag-watch-soft, rgba(245, 158, 11, 0.1));--_ag-risk: var(--ag-risk, #ef4444);--_ag-risk-text: var(--ag-risk-text, #b91c1c);--_ag-risk-soft: var(--ag-risk-soft, rgba(239, 68, 68, 0.1));--_ag-gold: var(--ag-gold, #fef3c7);--_ag-gold-line: var(--ag-gold-line, #fde68a);--_ag-gold-text: var(--ag-gold-text, #92400e);--_ag-shadow-card: var(--ag-shadow-card, 0 16px 38px rgba(15, 23, 42, 0.12), 0 0 0 1px rgba(15, 23, 42, 0.06), 0 1px 0 rgba(255, 255, 255, 0.9) inset);--_ag-font: var(--ag-font, Inter, -apple-system, blinkmacsystemfont, sans-serif);--_ag-fs-cell: var(--ag-fs-cell, 13px);--_ag-fs-cell-secondary: var(--ag-fs-cell-secondary, 11.5px);--_ag-fs-tiny: var(--ag-fs-tiny, 10px);--_ag-fw-regular: var(--ag-fw-regular, 500);--_ag-fw-semibold: var(--ag-fw-semibold, 600);--_ag-fw-bold: var(--ag-fw-bold, 700);--_ag-tracking-tight: var(--ag-tracking-tight, -0.005em);--_ag-tracking-header: var(--ag-tracking-header, 0.05em);--_ag-leading: var(--ag-leading, 1.4);--_ag-cell-pad-x: var(--ag-cell-pad-x, 10px);--_ag-row-h: var(--ag-row-h, 36px);--_ag-header-h: var(--ag-header-h, 40px);--_ag-toolbar-pad: var(--ag-toolbar-pad, 12px 14px);--_ag-footer-pad: var(--ag-footer-pad, 10px 14px);--_ag-radius: var(--ag-radius, 8px);--_ag-radius-sm: var(--ag-radius-sm, 6px);--_ag-radius-xs: var(--ag-radius-xs, 4px);--_ag-radius-pill: var(--ag-radius-pill, 20px);--_ag-ease: var(--ag-ease, cubic-bezier(0.2, 0.8, 0.2, 1));--_ag-dur-fast: var(--ag-dur-fast, 120ms);--_ag-dur-med: var(--ag-dur-med, 180ms);--_ag-dur-slow: var(--ag-dur-slow, 240ms);--_ag-brand-soft: var(--ag-brand-soft, color-mix(in srgb, var(--_ag-brand) 10%, transparent));--_ag-brand-softer: var(--ag-brand-softer, color-mix(in srgb, var(--_ag-brand) 7%, transparent));--_ag-brand-line: var(--ag-brand-line, color-mix(in srgb, var(--_ag-brand) 18%, transparent));--_ag-surface-alt: var(--ag-surface-alt, var(--_ag-surface));--_ag-row-hover: var(--ag-row-hover, color-mix(in srgb, #0f172a 5%, var(--_ag-surface)))}:host([theme~=dark]){--_ag-brand: var(--ag-brand, var(--ig-primary-500, #3b82f6));--_ag-brand-strong: var(--ag-brand-strong, var(--ig-primary-400, #60a5fa));--_ag-grid-bg: var(--ag-dark-grid-bg, #0f172a);--_ag-surface: var(--ag-dark-surface, #0f172a);--_ag-surface-elevated: var(--ag-dark-surface-elevated, #1e2532);--_ag-hairline: var(--ag-dark-hairline, rgba(255, 255, 255, 0.12));--_ag-border: var(--ag-dark-border, rgba(255, 255, 255, 0.12));--_ag-pin-line: var(--ag-dark-pin-line, rgba(255, 255, 255, 0.28));--_ag-header-separator: var(--ag-dark-header-separator, rgba(255, 255, 255, 0.18));--_ag-text: var(--ag-dark-text, #f1f5f9);--_ag-text-body: var(--ag-dark-text-body, #e2e8f0);--_ag-text-muted: var(--ag-dark-text-muted, #94a3b8);--_ag-text-subtle: var(--ag-dark-text-subtle, #64748b);--_ag-good-text: var(--ag-dark-good-text, #34d399);--_ag-good-soft: var(--ag-dark-good-soft, rgba(16, 185, 129, 0.18));--_ag-watch-text: var(--ag-dark-watch-text, #fbbf24);--_ag-watch-soft: var(--ag-dark-watch-soft, rgba(245, 158, 11, 0.18));--_ag-risk-text: var(--ag-dark-risk-text, #f87171);--_ag-risk-soft: var(--ag-dark-risk-soft, rgba(239, 68, 68, 0.18));--_ag-gold: var(--ag-dark-gold, rgba(245, 158, 11, 0.16));--_ag-gold-line: var(--ag-dark-gold-line, rgba(245, 158, 11, 0.35));--_ag-gold-text: var(--ag-dark-gold-text, #fcd34d);--_ag-shadow-card: var(--ag-dark-shadow-card, 0 16px 38px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.06), 0 1px 0 rgba(255, 255, 255, 0.04) inset);--_ag-surface-alt: var(--ag-dark-surface-alt, var(--_ag-surface));--_ag-row-hover: var(--ag-dark-row-hover, color-mix(in srgb, #fff 7%, var(--_ag-surface)))}:host([theme~=tinted]){--_ag-surface-alt: var(--ag-surface-alt, color-mix(in srgb, var(--_ag-brand) 4%, var(--_ag-surface)));--_ag-surface-elevated: color-mix(in srgb, var(--_ag-brand) 11%, var(--ag-surface-elevated, #f8f9fb));--_ag-hairline: color-mix(in srgb, var(--_ag-brand) 24%, var(--ag-hairline, rgba(15, 23, 42, 0.08)));--_ag-border: color-mix(in srgb, var(--_ag-brand) 12%, transparent);--_ag-row-hover: var(--ag-row-hover, color-mix(in srgb, var(--_ag-brand) 9%, var(--_ag-surface)));--_ag-text-muted: color-mix(in srgb, var(--_ag-brand) 32%, var(--ag-text-muted, #6b7280))}:host([theme~=dark][theme~=tinted]){--_ag-surface-alt: var(--ag-dark-surface-alt, color-mix(in srgb, var(--_ag-brand) 10%, var(--_ag-surface)));--_ag-surface-elevated: color-mix(in srgb, var(--_ag-brand) 20%, var(--ag-dark-surface-elevated, #1e2532));--_ag-hairline: color-mix(in srgb, var(--_ag-brand) 30%, var(--ag-dark-hairline, rgba(255, 255, 255, 0.12)));--_ag-border: color-mix(in srgb, var(--_ag-brand) 16%, rgb(255 255 255 / 7%));--_ag-row-hover: var(--ag-dark-row-hover, color-mix(in srgb, var(--_ag-brand) 12%, var(--_ag-surface)));--_ag-text-muted: color-mix(in srgb, var(--_ag-brand) 28%, var(--ag-dark-text-muted, #94a3b8))}@media(prefers-reduced-motion: reduce){:host{--_ag-dur-fast: 0ms;--_ag-dur-med: 0ms;--_ag-dur-slow: 0ms}}`;"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `[part~=pill]{display:inline-flex;align-items:center;block-size:20px;padding:0 8px;border-radius:var(--ag-radius-sm);border:1px solid rgba(0,0,0,0);font-size:var(--ag-fs-cell-secondary);font-weight:var(--ag-fw-semibold);line-height:1;white-space:nowrap}[part~=pill--gold]{background:linear-gradient(180deg, #fff7e6 0%, var(--ag-gold) 100%);border-color:var(--ag-gold-line);color:var(--ag-gold-text)}[part~=pill--brand]{background:var(--ag-brand-soft);border-color:var(--ag-brand-line);color:var(--ag-brand-strong)}[part~=pill--neutral]{background:rgba(99,102,241,.08);border-color:rgba(99,102,241,.22);color:#4338ca}[part~=pill--muted]{background:rgba(107,114,128,.1);border-color:rgba(107,114,128,.22);color:#4b5563}[part~=avatar]{display:inline-flex;align-items:center;justify-content:center;inline-size:22px;block-size:22px;flex-shrink:0;border-radius:50%;background:hsl(var(--ag-avatar-hue, 210), 60%, 48%);color:#fff;font-size:var(--ag-fs-cell-secondary);font-weight:var(--ag-fw-bold);line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:0 0 0 2px hsla(0,0%,100%,.85),0 1px 2px rgba(15,23,42,.18)}[part~=progress]{display:inline-flex;align-items:center;gap:8px;inline-size:100%}[part~=progress-track]{position:relative;flex:1;block-size:5px;min-inline-size:40px;border-radius:3px;background:rgba(15,23,42,.08);overflow:hidden}[part~=progress-fill]{display:block;block-size:100%;border-radius:3px;background:linear-gradient(90deg, #10b981 0%, #34d399 100%);transition:width var(--ag-dur-slow) var(--ag-ease)}[part~=progress-fill--good]{background:linear-gradient(90deg, #10b981 0%, #34d399 100%)}[part~=progress-fill--watch]{background:linear-gradient(90deg, #f59e0b 0%, #fbbf24 100%)}[part~=progress-fill--risk]{background:linear-gradient(90deg, #ef4444 0%, #f87171 100%)}[part~=progress-label]{min-inline-size:18px;text-align:end;font-size:11px;font-weight:var(--ag-fw-semibold);font-variant-numeric:tabular-nums;color:var(--ag-text-body)}[part~=spark-cell]{display:inline-flex;align-items:center;gap:6px}[part~=sparkline]{display:block;inline-size:64px;block-size:22px;color:var(--ag-text-muted);overflow:visible}[part~=sparkline--up]{color:var(--ag-good)}[part~=sparkline--down]{color:var(--ag-risk)}[part~=spark-line]{fill:none;stroke:currentcolor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}[part~=spark-area]{fill:currentcolor;stroke:none;opacity:.18}[part~=spark-delta]{font-size:var(--ag-fs-cell-secondary);font-weight:var(--ag-fw-semibold);font-variant-numeric:tabular-nums;color:var(--ag-text-muted)}[part~=spark-delta--up]{color:var(--ag-good-text)}[part~=spark-delta--down]{color:var(--ag-risk-text)}[part~=status]{display:inline-flex;align-items:center;gap:6px;block-size:20px;padding:0 10px;border-radius:var(--ag-radius-pill);border:1px solid rgba(0,0,0,0);font-size:var(--ag-fs-cell-secondary);font-weight:var(--ag-fw-semibold);line-height:1;white-space:nowrap}[part~=status-dot]{inline-size:6px;block-size:6px;flex-shrink:0;border-radius:50%;background:currentcolor}[part~=status--active]{background:var(--ag-good-soft);border-color:rgba(16,185,129,.28);color:var(--ag-good-text)}[part~=status--trial]{background:var(--ag-watch-soft);border-color:rgba(245,158,11,.28);color:var(--ag-watch-text)}[part~=status--churn]{background:var(--ag-risk-soft);border-color:rgba(239,68,68,.3);color:var(--ag-risk-text)}:host{position:relative;display:inline-flex;flex:1 0 0;align-items:center;padding:0 var(--ag-cell-pad-x);color:inherit;font-size:var(--ag-fs-cell);overflow-wrap:anywhere;-webkit-user-select:none;-moz-user-select:none;user-select:none}:host([data-cell-type=number]),:host([data-cell-type=currency]){font-variant-numeric:tabular-nums;font-weight:var(--ag-fw-semibold);color:var(--ag-text)}:host([active]){outline:none;box-shadow:inset 0 0 0 1px var(--cell-active-border-color, var(--ag-brand))}:host([editing]){background:var(--ag-surface);z-index:calc(var(--z-index-base) + 2);overflow:hidden;cursor:text}:host([editing][data-pinned=start]),:host([editing][data-pinned=end]){background:var(--ag-surface)}:host([editing][data-cell-type=select]){overflow:visible}:host([data-pinned=start]),:host([data-pinned=end]){position:sticky;z-index:calc(var(--z-index-base) + 1);background:inherit}:host([data-pinned=start]){inset-inline-start:var(--apex-pin-offset, 0)}:host([data-pinned=end]){inset-inline-end:var(--apex-pin-offset, 0)}:host([data-pin-edge=start])::after,:host([data-pin-edge=end])::after{content:"";position:absolute;inset-block:0;inline-size:1px;background:var(--ag-pin-line);pointer-events:none;z-index:1}:host([data-pin-edge=start])::after{inset-inline-end:0}:host([data-pin-edge=end])::after{inset-inline-start:0}input[data-apex-editor]{box-sizing:border-box;position:absolute;inset:0;width:auto;height:auto;padding:0 var(--ag-cell-pad-x);margin:0;border:0;background:rgba(0,0,0,0);color:inherit;font:inherit;font-size:var(--ag-fs-cell);outline:none;caret-color:var(--cell-active-border-color, var(--ag-brand));-webkit-user-select:text;-moz-user-select:text;user-select:text}input[type=number][data-apex-editor]{font-variant-numeric:tabular-nums}input[type=checkbox][data-apex-editor]{-webkit-appearance:none;-moz-appearance:none;appearance:none;inline-size:14px;block-size:14px;margin:0;flex-shrink:0;box-sizing:border-box;border:1.4px solid color-mix(in srgb, var(--ag-brand) 30%, transparent);border-radius:var(--ag-radius-xs);background-color:var(--ag-surface);background-repeat:no-repeat;background-position:center;cursor:pointer;transition:background-color var(--ag-dur-fast) var(--ag-ease),border-color var(--ag-dur-fast) var(--ag-ease),transform var(--ag-dur-fast) var(--ag-ease)}input[type=checkbox][data-apex-editor]:hover{border-color:color-mix(in srgb, var(--ag-brand) 55%, transparent)}input[type=checkbox][data-apex-editor]:active{transform:scale(0.92)}input[type=checkbox][data-apex-editor]:checked,input[type=checkbox][data-apex-editor]:indeterminate{background-color:var(--ag-brand);border-color:var(--ag-brand)}input[type=checkbox][data-apex-editor]:checked{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.4 5.8 10.2 11 4.2' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}input[type=checkbox][data-apex-editor]:indeterminate{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Crect x='3.5' y='6.2' width='7' height='1.6' rx='0.8' fill='%23ffffff'/%3E%3C/svg%3E")}input[type=checkbox][data-apex-editor]:focus-visible{outline:2px solid color-mix(in srgb, var(--ag-brand) 50%, transparent);outline-offset:2px}input[type=checkbox][data-apex-editor]{position:relative;inset:auto}input[part~=boolean-mark]{-webkit-appearance:none;-moz-appearance:none;appearance:none;inline-size:14px;block-size:14px;margin:0;flex-shrink:0;box-sizing:border-box;border:1.4px solid color-mix(in srgb, var(--ag-brand) 30%, transparent);border-radius:var(--ag-radius-xs);background-color:var(--ag-surface);background-repeat:no-repeat;background-position:center;cursor:pointer;transition:background-color var(--ag-dur-fast) var(--ag-ease),border-color var(--ag-dur-fast) var(--ag-ease),transform var(--ag-dur-fast) var(--ag-ease)}input[part~=boolean-mark]:hover{border-color:color-mix(in srgb, var(--ag-brand) 55%, transparent)}input[part~=boolean-mark]:active{transform:scale(0.92)}input[part~=boolean-mark]:checked,input[part~=boolean-mark]:indeterminate{background-color:var(--ag-brand);border-color:var(--ag-brand)}input[part~=boolean-mark]:checked{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.4 5.8 10.2 11 4.2' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}input[part~=boolean-mark]:indeterminate{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Crect x='3.5' y='6.2' width='7' height='1.6' rx='0.8' fill='%23ffffff'/%3E%3C/svg%3E")}input[part~=boolean-mark]:focus-visible{outline:2px solid color-mix(in srgb, var(--ag-brand) 50%, transparent);outline-offset:2px}input[part~=boolean-mark][aria-readonly=true]{cursor:default;pointer-events:none}[part~=rating]{display:inline-flex;align-items:center;gap:0.0625rem;color:var(--ag-watch, #f5a623)}[part~=rating-star]{display:inline-flex;align-items:center;justify-content:center;color:currentcolor;opacity:.25;line-height:0}[part~=rating-star] svg{inline-size:0.875rem;block-size:0.875rem}[part~=rating-star][part~=filled]{opacity:1}[part=rating-editor]{display:inline-flex;align-items:center;gap:0.125rem;padding:0 0.125rem;color:var(--ag-watch, #f5a623);z-index:calc(var(--z-index-base) + 2)}[part=rating-editor] button[part~=rating-star]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:rgba(0,0,0,0);border:0;margin:0;padding:0.125rem;cursor:pointer;color:currentcolor;opacity:.35;border-radius:var(--ag-radius-xs)}[part=rating-editor] button[part~=rating-star]:hover{opacity:.75}[part=rating-editor] button[part~=rating-star][part~=filled]{opacity:1}[part=rating-editor] button[part~=rating-star]:focus-visible{outline:0.125rem solid var(--cell-active-border-color, var(--ag-brand));outline-offset:-0.0625rem}[part~=select-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;inline-size:100%}[part~=select-popover]{position:absolute;inset-block-start:100%;inset-inline-start:0;margin:0.125rem 0 0;padding:0.25rem 0;min-inline-size:100%;background:var(--ag-surface);border:0.0625rem solid var(--ag-brand-line);border-radius:var(--ag-radius-sm);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,.06),0 0.375rem 1rem rgba(0,0,0,.12);max-block-size:15rem;overflow-y:auto;outline:none;z-index:calc(var(--z-index-base) + 10);color:inherit;font:inherit}[part~=select-option]{display:block;padding:0.375rem 0.75rem;cursor:pointer;color:inherit;outline:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[part~=select-option]:hover{background:var(--ag-brand-softer)}[part~=select-option][part~=selected]{background:var(--ag-brand-soft);color:var(--ag-brand-strong);font-weight:var(--ag-fw-semibold)}[part~=select-option]:focus-visible{background:var(--ag-brand-soft);outline:0.125rem solid var(--cell-active-border-color, var(--ag-brand));outline-offset:-0.125rem}[part~=image]{block-size:calc(100% - 0.5rem);max-block-size:2.5rem;inline-size:auto;aspect-ratio:1/1;-o-object-fit:cover;object-fit:cover;border-radius:var(--ag-radius-xs);display:block;flex-shrink:0}[part~=image][part~=circle]{border-radius:50%}[part=tree-indent]{flex-shrink:0;display:inline-block}[part=tree-toggle]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:0.25rem;padding:0;border:1px solid rgba(0,0,0,0);border-radius:var(--ag-radius-xs);background:rgba(0,0,0,0);color:var(--ag-text-muted);cursor:pointer;transition:background-color var(--ag-dur-fast) var(--ag-ease),border-color var(--ag-dur-fast) var(--ag-ease),color var(--ag-dur-fast) var(--ag-ease)}[part=tree-toggle]:hover{background:var(--ag-brand-soft);border-color:var(--ag-brand-line);color:var(--ag-brand-strong)}[part=tree-toggle]:focus-visible{outline:0.125rem solid color-mix(in srgb, var(--ag-brand) 50%, transparent);outline-offset:0.0625rem}[part=tree-chevron]{transition:transform var(--ag-dur-med) var(--ag-ease)}:host([data-tree-expanded]) [part=tree-chevron]{transform:rotate(90deg)}[part=tree-spacer]{display:inline-block;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:0.25rem}[part=tree-cell-content]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([data-invalid]){box-shadow:inset 0 0 0 1px var(--ag-risk, #ef4444)}:host([data-invalid][editing]){box-shadow:inset 0 0 0 1px var(--ag-risk, #ef4444);overflow:visible}[part~=cell-error]{position:absolute;inset-block-start:100%;inset-inline-start:0;z-index:calc(var(--z-index-base) + 11);margin-block-start:0.125rem;padding:0.125rem 0.375rem;max-inline-size:13.75rem;background:var(--ag-surface, #fff);color:var(--ag-risk-text, #b91c1c);border:0.0625rem solid var(--ag-risk, #ef4444);border-radius:var(--ag-radius-xs);font-size:var(--ag-fs-cell-secondary);font-weight:var(--ag-fw-regular);line-height:1.3;white-space:normal;pointer-events:none;box-shadow:0 0.125rem 0.375rem rgba(0,0,0,.12)}:host([data-range]){background:var(--apex-range-fill, color-mix(in srgb, var(--ag-brand) 12%, transparent))}:host([data-range~=active]){background:var(--apex-range-active-fill, var(--apex-range-fill, color-mix(in srgb, var(--ag-brand) 20%, transparent)))}:host([data-range])::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;border:0 solid var(--apex-range-border, var(--ag-brand))}:host([data-range-edge~=top])::before{border-block-start-width:var(--apex-range-border-width, 1px)}:host([data-range-edge~=bottom])::before{border-block-end-width:var(--apex-range-border-width, 1px)}:host([data-range-edge~=left])::before{border-inline-start-width:var(--apex-range-border-width, 1px)}:host([data-range-edge~=right])::before{border-inline-end-width:var(--apex-range-border-width, 1px)}:host([data-range-handle])::after{content:"";position:absolute;inset-inline-end:-1px;inset-block-end:-1px;inline-size:7px;block-size:7px;background:var(--apex-range-border, var(--ag-brand));border:1px solid var(--ag-surface, #fff);z-index:4;pointer-events:none}:host([data-formula-ref]){--apex-formula-ref: var(--ag-brand);background:color-mix(in srgb, var(--apex-formula-ref) 14%, transparent);box-shadow:inset 0 0 0 1px var(--apex-formula-ref)}:host([data-formula-ref="0"]){--apex-formula-ref: var(--apex-formula-ref-0, #2563eb)}:host([data-formula-ref="1"]){--apex-formula-ref: var(--apex-formula-ref-1, #16a34a)}:host([data-formula-ref="2"]){--apex-formula-ref: var(--apex-formula-ref-2, #d97706)}:host([data-formula-ref="3"]){--apex-formula-ref: var(--apex-formula-ref-3, #db2777)}:host([data-formula-ref="4"]){--apex-formula-ref: var(--apex-formula-ref-4, #7c3aed)}:host([data-formula-ref="5"]){--apex-formula-ref: var(--apex-formula-ref-5, #0891b2)}:host([data-formula-pointer]){--apex-formula-pointer: var(--ag-brand);background:color-mix(in srgb, var(--apex-formula-pointer) 10%, transparent)}:host([data-formula-pointer])::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;border:0 dashed var(--apex-formula-pointer, var(--ag-brand))}:host([data-formula-pointer-edge~=top])::before{border-block-start-width:var(--apex-formula-pointer-width, 1.5px)}:host([data-formula-pointer-edge~=bottom])::before{border-block-end-width:var(--apex-formula-pointer-width, 1.5px)}:host([data-formula-pointer-edge~=left])::before{border-inline-start-width:var(--apex-formula-pointer-width, 1.5px)}:host([data-formula-pointer-edge~=right])::before{border-inline-end-width:var(--apex-formula-pointer-width, 1.5px)}@media(forced-colors: active){:host([active]){outline:0.125rem solid Highlight;outline-offset:-0.125rem}:host([data-invalid]),:host([data-invalid][editing]){outline:0.125rem dashed CanvasText;outline-offset:-0.125rem}:host([editing]){background:Field;color:FieldText}}`;
|
|
2
|
+
export const styles = css `[part~=pill]{display:inline-flex;align-items:center;block-size:20px;padding:0 8px;border-radius:var(--_ag-radius-sm);border:1px solid rgba(0,0,0,0);font-size:var(--_ag-fs-cell-secondary);font-weight:var(--_ag-fw-semibold);line-height:1;white-space:nowrap}[part~=pill--gold]{background:linear-gradient(180deg, #fff7e6 0%, var(--_ag-gold) 100%);border-color:var(--_ag-gold-line);color:var(--_ag-gold-text)}[part~=pill--brand]{background:var(--_ag-brand-soft);border-color:var(--_ag-brand-line);color:var(--_ag-brand-strong)}[part~=pill--neutral]{background:rgba(99,102,241,.08);border-color:rgba(99,102,241,.22);color:#4338ca}[part~=pill--muted]{background:rgba(107,114,128,.1);border-color:rgba(107,114,128,.22);color:#4b5563}[part~=avatar]{display:inline-flex;align-items:center;justify-content:center;inline-size:22px;block-size:22px;flex-shrink:0;border-radius:50%;background:hsl(var(--ag-avatar-hue, 210), 60%, 48%);color:#fff;font-size:var(--_ag-fs-cell-secondary);font-weight:var(--_ag-fw-bold);line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:0 0 0 2px hsla(0,0%,100%,.85),0 1px 2px rgba(15,23,42,.18)}[part~=progress]{display:inline-flex;align-items:center;gap:8px;inline-size:100%}[part~=progress-track]{position:relative;flex:1;block-size:5px;min-inline-size:40px;border-radius:3px;background:rgba(15,23,42,.08);overflow:hidden}[part~=progress-fill]{display:block;block-size:100%;border-radius:3px;background:linear-gradient(90deg, #10b981 0%, #34d399 100%);transition:width var(--_ag-dur-slow) var(--_ag-ease)}[part~=progress-fill--good]{background:linear-gradient(90deg, #10b981 0%, #34d399 100%)}[part~=progress-fill--watch]{background:linear-gradient(90deg, #f59e0b 0%, #fbbf24 100%)}[part~=progress-fill--risk]{background:linear-gradient(90deg, #ef4444 0%, #f87171 100%)}[part~=progress-label]{min-inline-size:18px;text-align:end;font-size:11px;font-weight:var(--_ag-fw-semibold);font-variant-numeric:tabular-nums;color:var(--_ag-text-body)}[part~=spark-cell]{display:inline-flex;align-items:center;gap:6px}[part~=sparkline]{display:block;inline-size:64px;block-size:22px;color:var(--_ag-text-muted);overflow:visible}[part~=sparkline--up]{color:var(--_ag-good)}[part~=sparkline--down]{color:var(--_ag-risk)}[part~=spark-line]{fill:none;stroke:currentcolor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}[part~=spark-area]{fill:currentcolor;stroke:none;opacity:.18}[part~=spark-delta]{font-size:var(--_ag-fs-cell-secondary);font-weight:var(--_ag-fw-semibold);font-variant-numeric:tabular-nums;color:var(--_ag-text-muted)}[part~=spark-delta--up]{color:var(--_ag-good-text)}[part~=spark-delta--down]{color:var(--_ag-risk-text)}[part~=status]{display:inline-flex;align-items:center;gap:6px;block-size:20px;padding:0 10px;border-radius:var(--_ag-radius-pill);border:1px solid rgba(0,0,0,0);font-size:var(--_ag-fs-cell-secondary);font-weight:var(--_ag-fw-semibold);line-height:1;white-space:nowrap}[part~=status-dot]{inline-size:6px;block-size:6px;flex-shrink:0;border-radius:50%;background:currentcolor}[part~=status--active]{background:var(--_ag-good-soft);border-color:rgba(16,185,129,.28);color:var(--_ag-good-text)}[part~=status--trial]{background:var(--_ag-watch-soft);border-color:rgba(245,158,11,.28);color:var(--_ag-watch-text)}[part~=status--churn]{background:var(--_ag-risk-soft);border-color:rgba(239,68,68,.3);color:var(--_ag-risk-text)}:host{position:relative;display:inline-flex;flex:1 0 0;align-items:center;padding:0 var(--_ag-cell-pad-x);color:inherit;font-size:var(--_ag-fs-cell);overflow-wrap:anywhere;-webkit-user-select:none;-moz-user-select:none;user-select:none}:host([data-cell-type=number]),:host([data-cell-type=currency]){font-variant-numeric:tabular-nums;font-weight:var(--_ag-fw-semibold);color:var(--_ag-text)}:host([active]){outline:none;box-shadow:inset 0 0 0 1px var(--cell-active-border-color, var(--_ag-brand))}:host([editing]){background:var(--_ag-surface);z-index:calc(var(--z-index-base) + 2);overflow:hidden;cursor:text}:host([editing][data-pinned=start]),:host([editing][data-pinned=end]){background:var(--_ag-surface)}:host([editing][data-cell-type=select]){overflow:visible}:host([data-pinned=start]),:host([data-pinned=end]){position:sticky;z-index:calc(var(--z-index-base) + 1);background:inherit}:host([data-pinned=start]){inset-inline-start:var(--apex-pin-offset, 0)}:host([data-pinned=end]){inset-inline-end:var(--apex-pin-offset, 0)}:host([data-pin-edge=start])::after,:host([data-pin-edge=end])::after{content:"";position:absolute;inset-block:0;inline-size:1px;background:var(--_ag-pin-line);pointer-events:none;z-index:1}:host([data-pin-edge=start])::after{inset-inline-end:0}:host([data-pin-edge=end])::after{inset-inline-start:0}input[data-apex-editor]{box-sizing:border-box;position:absolute;inset:0;width:auto;height:auto;padding:0 var(--_ag-cell-pad-x);margin:0;border:0;background:rgba(0,0,0,0);color:inherit;font:inherit;font-size:var(--_ag-fs-cell);outline:none;caret-color:var(--cell-active-border-color, var(--_ag-brand));-webkit-user-select:text;-moz-user-select:text;user-select:text}input[type=number][data-apex-editor]{font-variant-numeric:tabular-nums}input[type=checkbox][data-apex-editor]{-webkit-appearance:none;-moz-appearance:none;appearance:none;inline-size:14px;block-size:14px;margin:0;flex-shrink:0;box-sizing:border-box;border:1.4px solid color-mix(in srgb, var(--_ag-brand) 30%, transparent);border-radius:var(--_ag-radius-xs);background-color:var(--_ag-surface);background-repeat:no-repeat;background-position:center;cursor:pointer;transition:background-color var(--_ag-dur-fast) var(--_ag-ease),border-color var(--_ag-dur-fast) var(--_ag-ease),transform var(--_ag-dur-fast) var(--_ag-ease)}input[type=checkbox][data-apex-editor]:hover{border-color:color-mix(in srgb, var(--_ag-brand) 55%, transparent)}input[type=checkbox][data-apex-editor]:active{transform:scale(0.92)}input[type=checkbox][data-apex-editor]:checked,input[type=checkbox][data-apex-editor]:indeterminate{background-color:var(--_ag-brand);border-color:var(--_ag-brand)}input[type=checkbox][data-apex-editor]:checked{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.4 5.8 10.2 11 4.2' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}input[type=checkbox][data-apex-editor]:indeterminate{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Crect x='3.5' y='6.2' width='7' height='1.6' rx='0.8' fill='%23ffffff'/%3E%3C/svg%3E")}input[type=checkbox][data-apex-editor]:focus-visible{outline:2px solid color-mix(in srgb, var(--_ag-brand) 50%, transparent);outline-offset:2px}input[type=checkbox][data-apex-editor]{position:relative;inset:auto}input[part~=boolean-mark]{-webkit-appearance:none;-moz-appearance:none;appearance:none;inline-size:14px;block-size:14px;margin:0;flex-shrink:0;box-sizing:border-box;border:1.4px solid color-mix(in srgb, var(--_ag-brand) 30%, transparent);border-radius:var(--_ag-radius-xs);background-color:var(--_ag-surface);background-repeat:no-repeat;background-position:center;cursor:pointer;transition:background-color var(--_ag-dur-fast) var(--_ag-ease),border-color var(--_ag-dur-fast) var(--_ag-ease),transform var(--_ag-dur-fast) var(--_ag-ease)}input[part~=boolean-mark]:hover{border-color:color-mix(in srgb, var(--_ag-brand) 55%, transparent)}input[part~=boolean-mark]:active{transform:scale(0.92)}input[part~=boolean-mark]:checked,input[part~=boolean-mark]:indeterminate{background-color:var(--_ag-brand);border-color:var(--_ag-brand)}input[part~=boolean-mark]:checked{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.4 5.8 10.2 11 4.2' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}input[part~=boolean-mark]:indeterminate{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Crect x='3.5' y='6.2' width='7' height='1.6' rx='0.8' fill='%23ffffff'/%3E%3C/svg%3E")}input[part~=boolean-mark]:focus-visible{outline:2px solid color-mix(in srgb, var(--_ag-brand) 50%, transparent);outline-offset:2px}input[part~=boolean-mark][aria-readonly=true]{cursor:default;pointer-events:none}[part~=rating]{display:inline-flex;align-items:center;gap:0.0625rem;color:var(--_ag-watch, #f5a623)}[part~=rating-star]{display:inline-flex;align-items:center;justify-content:center;color:currentcolor;opacity:.25;line-height:0}[part~=rating-star] svg{inline-size:0.875rem;block-size:0.875rem}[part~=rating-star][part~=filled]{opacity:1}[part=rating-editor]{display:inline-flex;align-items:center;gap:0.125rem;padding:0 0.125rem;color:var(--_ag-watch, #f5a623);z-index:calc(var(--z-index-base) + 2)}[part=rating-editor] button[part~=rating-star]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:rgba(0,0,0,0);border:0;margin:0;padding:0.125rem;cursor:pointer;color:currentcolor;opacity:.35;border-radius:var(--_ag-radius-xs)}[part=rating-editor] button[part~=rating-star]:hover{opacity:.75}[part=rating-editor] button[part~=rating-star][part~=filled]{opacity:1}[part=rating-editor] button[part~=rating-star]:focus-visible{outline:0.125rem solid var(--cell-active-border-color, var(--_ag-brand));outline-offset:-0.0625rem}[part~=select-label]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-inline-size:0;inline-size:100%}[part~=select-popover]{position:absolute;inset-block-start:100%;inset-inline-start:0;margin:0.125rem 0 0;padding:0.25rem 0;min-inline-size:100%;background:var(--_ag-surface);border:0.0625rem solid var(--_ag-brand-line);border-radius:var(--_ag-radius-sm);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,.06),0 0.375rem 1rem rgba(0,0,0,.12);max-block-size:15rem;overflow-y:auto;outline:none;z-index:calc(var(--z-index-base) + 10);color:inherit;font:inherit}[part~=select-option]{display:block;padding:0.375rem 0.75rem;cursor:pointer;color:inherit;outline:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[part~=select-option]:hover{background:var(--_ag-brand-softer)}[part~=select-option][part~=selected]{background:var(--_ag-brand-soft);color:var(--_ag-brand-strong);font-weight:var(--_ag-fw-semibold)}[part~=select-option]:focus-visible{background:var(--_ag-brand-soft);outline:0.125rem solid var(--cell-active-border-color, var(--_ag-brand));outline-offset:-0.125rem}[part~=image]{block-size:calc(100% - 0.5rem);max-block-size:2.5rem;inline-size:auto;aspect-ratio:1/1;-o-object-fit:cover;object-fit:cover;border-radius:var(--_ag-radius-xs);display:block;flex-shrink:0}[part~=image][part~=circle]{border-radius:50%}[part=tree-indent]{flex-shrink:0;display:inline-block}[part=tree-toggle]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:0.25rem;padding:0;border:1px solid rgba(0,0,0,0);border-radius:var(--_ag-radius-xs);background:rgba(0,0,0,0);color:var(--_ag-text-muted);cursor:pointer;transition:background-color var(--_ag-dur-fast) var(--_ag-ease),border-color var(--_ag-dur-fast) var(--_ag-ease),color var(--_ag-dur-fast) var(--_ag-ease)}[part=tree-toggle]:hover{background:var(--_ag-brand-soft);border-color:var(--_ag-brand-line);color:var(--_ag-brand-strong)}[part=tree-toggle]:focus-visible{outline:0.125rem solid color-mix(in srgb, var(--_ag-brand) 50%, transparent);outline-offset:0.0625rem}[part=tree-chevron]{transition:transform var(--_ag-dur-med) var(--_ag-ease)}:host([data-tree-expanded]) [part=tree-chevron]{transform:rotate(90deg)}[part=tree-spacer]{display:inline-block;flex-shrink:0;inline-size:1.5rem;block-size:1.5rem;margin-inline-end:0.25rem}[part=tree-cell-content]{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([data-invalid]){box-shadow:inset 0 0 0 1px var(--_ag-risk, #ef4444)}:host([data-invalid][editing]){box-shadow:inset 0 0 0 1px var(--_ag-risk, #ef4444);overflow:visible}[part~=cell-error]{position:absolute;inset-block-start:100%;inset-inline-start:0;z-index:calc(var(--z-index-base) + 11);margin-block-start:0.125rem;padding:0.125rem 0.375rem;max-inline-size:13.75rem;background:var(--_ag-surface, #fff);color:var(--_ag-risk-text, #b91c1c);border:0.0625rem solid var(--_ag-risk, #ef4444);border-radius:var(--_ag-radius-xs);font-size:var(--_ag-fs-cell-secondary);font-weight:var(--_ag-fw-regular);line-height:1.3;white-space:normal;pointer-events:none;box-shadow:0 0.125rem 0.375rem rgba(0,0,0,.12)}:host([data-range]){background:var(--apex-range-fill, color-mix(in srgb, var(--_ag-brand) 12%, transparent))}:host([data-range~=active]){background:var(--apex-range-active-fill, var(--apex-range-fill, color-mix(in srgb, var(--_ag-brand) 20%, transparent)))}:host([data-range])::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;border:0 solid var(--apex-range-border, var(--_ag-brand))}:host([data-range-edge~=top])::before{border-block-start-width:var(--apex-range-border-width, 1px)}:host([data-range-edge~=bottom])::before{border-block-end-width:var(--apex-range-border-width, 1px)}:host([data-range-edge~=left])::before{border-inline-start-width:var(--apex-range-border-width, 1px)}:host([data-range-edge~=right])::before{border-inline-end-width:var(--apex-range-border-width, 1px)}:host([data-range-handle])::after{content:"";position:absolute;inset-inline-end:-1px;inset-block-end:-1px;inline-size:7px;block-size:7px;background:var(--apex-range-border, var(--_ag-brand));border:1px solid var(--_ag-surface, #fff);z-index:4;pointer-events:none}:host([data-formula-ref]){--apex-formula-ref: var(--_ag-brand);background:color-mix(in srgb, var(--apex-formula-ref) 14%, transparent);box-shadow:inset 0 0 0 1px var(--apex-formula-ref)}:host([data-formula-ref="0"]){--apex-formula-ref: var(--apex-formula-ref-0, #2563eb)}:host([data-formula-ref="1"]){--apex-formula-ref: var(--apex-formula-ref-1, #16a34a)}:host([data-formula-ref="2"]){--apex-formula-ref: var(--apex-formula-ref-2, #d97706)}:host([data-formula-ref="3"]){--apex-formula-ref: var(--apex-formula-ref-3, #db2777)}:host([data-formula-ref="4"]){--apex-formula-ref: var(--apex-formula-ref-4, #7c3aed)}:host([data-formula-ref="5"]){--apex-formula-ref: var(--apex-formula-ref-5, #0891b2)}:host([data-formula-pointer]){--apex-formula-pointer: var(--_ag-brand);background:color-mix(in srgb, var(--apex-formula-pointer) 10%, transparent)}:host([data-formula-pointer])::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;border:0 dashed var(--apex-formula-pointer, var(--_ag-brand))}:host([data-formula-pointer-edge~=top])::before{border-block-start-width:var(--apex-formula-pointer-width, 1.5px)}:host([data-formula-pointer-edge~=bottom])::before{border-block-end-width:var(--apex-formula-pointer-width, 1.5px)}:host([data-formula-pointer-edge~=left])::before{border-inline-start-width:var(--apex-formula-pointer-width, 1.5px)}:host([data-formula-pointer-edge~=right])::before{border-inline-end-width:var(--apex-formula-pointer-width, 1.5px)}@media(forced-colors: active){:host([active]){outline:0.125rem solid Highlight;outline-offset:-0.125rem}:host([data-invalid]),:host([data-invalid][editing]){outline:0.125rem dashed CanvasText;outline-offset:-0.125rem}:host([editing]){background:Field;color:FieldText}}`;
|
|
3
3
|
//# sourceMappingURL=body-cell.css.js.map
|