@open-pioneer/result-list 1.1.0 → 1.2.0-dev.20260121105545
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 +12 -0
- package/DataTable/DataTable.js +1 -1
- package/DataTable/createColumns.js +1 -1
- package/DataTable/createColumns.js.map +1 -1
- package/ResultList.js +1 -1
- package/_virtual/{_virtual-pioneer-module_react-hooks.js → hooks.js} +1 -1
- package/_virtual/hooks.js.map +1 -0
- package/package.json +9 -9
- package/_virtual/_virtual-pioneer-module_react-hooks.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @open-pioneer/result-list
|
|
2
2
|
|
|
3
|
+
## 1.2.0-dev.20260121105545
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 279ca67: Use `workspace:*` instead of `workspace:^` for local package references as default. This ensures that trails packages from this repository are always referenced with their exact version to avoid potential issues with version mismatches. If a project specifically wants to use other versions for some trails packages, a pnpm override can be used to force other versions.
|
|
8
|
+
- 9580bb4: Update various dependencies.
|
|
9
|
+
- 9580bb4: Update to Chakra 3.31.0
|
|
10
|
+
- Updated dependencies [279ca67]
|
|
11
|
+
- Updated dependencies [9580bb4]
|
|
12
|
+
- Updated dependencies [9580bb4]
|
|
13
|
+
- @open-pioneer/map@1.2.0-dev.20260121105545
|
|
14
|
+
|
|
3
15
|
## 1.1.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/DataTable/DataTable.js
CHANGED
|
@@ -6,7 +6,7 @@ import { useEvent } from '@open-pioneer/react-utils';
|
|
|
6
6
|
import { useReactiveSnapshot } from '@open-pioneer/reactivity';
|
|
7
7
|
import { flexRender } from '@tanstack/react-table';
|
|
8
8
|
import classNames from 'classnames';
|
|
9
|
-
import { useIntl } from '../_virtual/
|
|
9
|
+
import { useIntl } from '../_virtual/hooks.js';
|
|
10
10
|
import { createContext, useMemo, useState, useEffect, useContext } from 'react';
|
|
11
11
|
import { ColumnResizer } from './ColumnResizer.js';
|
|
12
12
|
import { ColumnSortIndicator } from './ColumnSortIndicator.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createColumns.js","sources":["createColumns.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { chakra } from \"@chakra-ui/react\";\nimport { BaseFeature } from \"@open-pioneer/map\";\nimport { PackageIntl } from \"@open-pioneer/runtime\";\nimport { createColumnHelper, Table as TanstackTable } from \"@tanstack/react-table\";\nimport { FormatOptions, ResultColumn, SelectionMode } from \"../ResultList\";\nimport { createSelectComponent } from \"./SelectComponent\";\n\nexport const SELECT_COLUMN_SIZE = 70;\n\nconst columnHelper = createColumnHelper<BaseFeature>();\n\nexport interface CreateColumnsOptions {\n columns: ResultColumn[];\n intl: PackageIntl;\n tableWidth?: number;\n formatOptions?: FormatOptions;\n selectionMode: SelectionMode;\n selectionStyle: \"radio\" | \"checkbox\";\n labelProperty?: string;\n}\n\nexport function createColumns(options: CreateColumnsOptions) {\n const {\n columns,\n intl,\n tableWidth,\n formatOptions,\n selectionMode,\n selectionStyle,\n labelProperty\n } = options;\n const remainingColumnWidth: number | undefined =\n tableWidth === undefined ? undefined : calcRemainingColumnWidth(columns, tableWidth);\n const selectionColumn = createSelectionColumn(\n intl,\n selectionMode,\n selectionStyle,\n labelProperty\n );\n const columnDefs = columns.map((column, index) => {\n const columnWidth = column.width || remainingColumnWidth;\n const configuredId =\n column.id || (column.propertyName && slug(column.propertyName)) || String(index);\n return createColumn({\n id: \"result-list-col_\" + configuredId,\n column: column,\n intl: intl,\n columnWidth: columnWidth,\n formatOptions: formatOptions\n });\n });\n return [selectionColumn, ...columnDefs];\n}\n\ninterface CreateColumnOptions {\n id: string;\n column: ResultColumn;\n intl: PackageIntl;\n columnWidth?: number;\n formatOptions?: FormatOptions;\n}\n\nfunction createColumn(options: CreateColumnOptions) {\n const { id, column, columnWidth, formatOptions, intl } = options;\n const { propertyName, getPropertyValue } = column;\n\n if (getPropertyValue == null && propertyName == null) {\n throw new Error(\n \"Display columns are not yet implemented. You must either specify 'propertyName' or 'getPropertyValue'.\"\n );\n }\n\n return columnHelper.accessor(\n (feature: BaseFeature) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return getPropertyValue?.(feature) ?? feature.properties?.[propertyName!];\n },\n {\n id: id,\n cell: (info) => {\n const cellValue = info.getValue();\n if (column.renderCell) {\n return column.renderCell({\n feature: info.row.original,\n value: cellValue\n });\n }\n return defaultRenderCell(cellValue, intl, formatOptions);\n },\n header: column.displayName ?? column.propertyName,\n size: columnWidth\n }\n );\n}\n\nfunction defaultRenderCell(cellValue: unknown, intl: PackageIntl, formatOptions?: FormatOptions) {\n if (cellValue === null || cellValue === undefined) return \"\";\n const type = typeof cellValue;\n const formatNumber = (num: number | bigint) => {\n if (Number.isNaN(num)) return \"\";\n return intl.formatNumber(num, formatOptions?.numberOptions);\n };\n\n switch (type) {\n case \"number\": {\n return formatNumber(cellValue as number);\n }\n case \"bigint\": {\n return formatNumber(cellValue as bigint);\n }\n case \"boolean\": {\n return intl.formatMessage({ id: `displayBoolean.${cellValue}` });\n }\n case \"string\": {\n return cellValue as string;\n }\n case \"object\": {\n if (cellValue instanceof Date)\n return intl.formatDate(cellValue, formatOptions?.dateOptions);\n return cellValue.toString();\n }\n default:\n return String(cellValue);\n }\n}\n\nfunction createSelectionColumn(\n intl: PackageIntl,\n selectionMode: SelectionMode,\n selectionStyle: \"radio\" | \"checkbox\",\n labelProperty?: string\n) {\n return columnHelper.display({\n id: \"selection-buttons\",\n size: SELECT_COLUMN_SIZE,\n enableSorting: false,\n header: ({ table }) => {\n if (selectionMode !== \"multi\") return;\n\n return (\n <chakra.div\n display=\"inline-block\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n className=\"result-list-select-all-container\"\n >\n {createSelectComponent({\n className: \"result-list-select-all-checkbox\",\n toolTipLabel: getCheckboxTooltip(table, intl),\n checked: table.getIsAllRowsSelected()\n ? true\n : table.getIsSomeRowsSelected()\n ? \"indeterminate\"\n : false,\n onChange(newIsChecked) {\n table.toggleAllRowsSelected(newIsChecked);\n }\n })}\n </chakra.div>\n );\n },\n cell: ({ row }) => {\n const className =\n selectionStyle === \"radio\"\n ? \"result-list-select-row-radio\"\n : \"result-list-select-row-checkbox\";\n const ariaLabel = intl.formatMessage(\n {\n id: \"ariaLabel.selectSingle\"\n },\n { featureProperty: getLabel(row.original, labelProperty) }\n );\n return (\n <chakra.div\n display=\"inline-block\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n className=\"result-list-select-row-container\"\n >\n {createSelectComponent({\n mode: selectionStyle,\n className,\n checked: row.getIsSomeSelected() ? \"indeterminate\" : row.getIsSelected(),\n disabled: !row.getCanSelect(),\n onChange(newIsChecked) {\n row.toggleSelected(newIsChecked);\n },\n ariaLabel: ariaLabel\n })}\n </chakra.div>\n );\n }\n });\n}\n\nfunction getLabel(feature: BaseFeature, labelProperty: string | undefined) {\n if (labelProperty && feature.properties && feature.properties[labelProperty] != null) {\n return feature.properties[labelProperty].toString();\n }\n // use feature id as fallback if property not provided or does not exist for this feature\n return feature.id.toString();\n}\n\nfunction calcRemainingColumnWidth(\n columns: ResultColumn[],\n tableWidth: number,\n selectColumnWidth: number = SELECT_COLUMN_SIZE\n) {\n const fullWidth = columns.reduce((sum, column) => (column.width ?? 0) + sum, 0);\n const undefinedWidthCount = columns.reduce(\n (sum, column) => (column.width === undefined ? sum + 1 : sum),\n 0\n );\n const remainingWidth = tableWidth - selectColumnWidth - fullWidth;\n return remainingWidth / undefinedWidthCount;\n}\n\nfunction getCheckboxTooltip<Data>(table: TanstackTable<Data>, intl: PackageIntl) {\n if (table.getIsAllRowsSelected()) {\n return intl.formatMessage({ id: \"deSelectAllTooltip\" });\n } else {\n return intl.formatMessage({ id: \"selectAllTooltip\" });\n }\n}\n\nfunction slug(id: string) {\n return id\n .toLowerCase()\n .replace(/[^a-z0-9 -]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\");\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createColumns.js","sources":["createColumns.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { chakra } from \"@chakra-ui/react\";\nimport { BaseFeature } from \"@open-pioneer/map\";\nimport { PackageIntl } from \"@open-pioneer/runtime\";\nimport { createColumnHelper, Table as TanstackTable } from \"@tanstack/react-table\";\nimport { FormatOptions, ResultColumn, SelectionMode } from \"../ResultList\";\nimport { createSelectComponent } from \"./SelectComponent\";\n\nexport const SELECT_COLUMN_SIZE = 70;\n\nconst columnHelper = createColumnHelper<BaseFeature>();\n\nexport interface CreateColumnsOptions {\n columns: ResultColumn[];\n intl: PackageIntl;\n tableWidth?: number;\n formatOptions?: FormatOptions;\n selectionMode: SelectionMode;\n selectionStyle: \"radio\" | \"checkbox\";\n labelProperty?: string;\n}\n\nexport function createColumns(options: CreateColumnsOptions) {\n const {\n columns,\n intl,\n tableWidth,\n formatOptions,\n selectionMode,\n selectionStyle,\n labelProperty\n } = options;\n const remainingColumnWidth: number | undefined =\n tableWidth === undefined ? undefined : calcRemainingColumnWidth(columns, tableWidth);\n const selectionColumn = createSelectionColumn(\n intl,\n selectionMode,\n selectionStyle,\n labelProperty\n );\n const columnDefs = columns.map((column, index) => {\n const columnWidth = column.width || remainingColumnWidth;\n const configuredId =\n column.id || (column.propertyName && slug(column.propertyName)) || String(index);\n return createColumn({\n id: \"result-list-col_\" + configuredId,\n column: column,\n intl: intl,\n columnWidth: columnWidth,\n formatOptions: formatOptions\n });\n });\n return [selectionColumn, ...columnDefs];\n}\n\ninterface CreateColumnOptions {\n id: string;\n column: ResultColumn;\n intl: PackageIntl;\n columnWidth?: number;\n formatOptions?: FormatOptions;\n}\n\nfunction createColumn(options: CreateColumnOptions) {\n const { id, column, columnWidth, formatOptions, intl } = options;\n const { propertyName, getPropertyValue } = column;\n\n if (getPropertyValue == null && propertyName == null) {\n throw new Error(\n \"Display columns are not yet implemented. You must either specify 'propertyName' or 'getPropertyValue'.\"\n );\n }\n\n return columnHelper.accessor(\n (feature: BaseFeature) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return getPropertyValue?.(feature) ?? feature.properties?.[propertyName!];\n },\n {\n id: id,\n cell: (info) => {\n const cellValue = info.getValue();\n if (column.renderCell) {\n return column.renderCell({\n feature: info.row.original,\n value: cellValue\n });\n }\n return defaultRenderCell(cellValue, intl, formatOptions);\n },\n header: column.displayName ?? column.propertyName,\n size: columnWidth\n }\n );\n}\n\nfunction defaultRenderCell(cellValue: unknown, intl: PackageIntl, formatOptions?: FormatOptions) {\n if (cellValue === null || cellValue === undefined) return \"\";\n const type = typeof cellValue;\n const formatNumber = (num: number | bigint) => {\n if (Number.isNaN(num)) return \"\";\n return intl.formatNumber(num, formatOptions?.numberOptions);\n };\n\n switch (type) {\n case \"number\": {\n return formatNumber(cellValue as number);\n }\n case \"bigint\": {\n return formatNumber(cellValue as bigint);\n }\n case \"boolean\": {\n return intl.formatMessage({ id: `displayBoolean.${cellValue}` });\n }\n case \"string\": {\n return cellValue as string;\n }\n case \"object\": {\n if (cellValue instanceof Date)\n return intl.formatDate(cellValue, formatOptions?.dateOptions);\n return cellValue.toString();\n }\n default:\n return String(cellValue);\n }\n}\n\nfunction createSelectionColumn(\n intl: PackageIntl,\n selectionMode: SelectionMode,\n selectionStyle: \"radio\" | \"checkbox\",\n labelProperty?: string\n) {\n return columnHelper.display({\n id: \"selection-buttons\",\n size: SELECT_COLUMN_SIZE,\n enableSorting: false,\n header: ({ table }) => {\n if (selectionMode !== \"multi\") return;\n\n return (\n <chakra.div\n display=\"inline-block\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n className=\"result-list-select-all-container\"\n >\n {createSelectComponent({\n className: \"result-list-select-all-checkbox\",\n toolTipLabel: getCheckboxTooltip(table, intl),\n checked: table.getIsAllRowsSelected()\n ? true\n : table.getIsSomeRowsSelected()\n ? \"indeterminate\"\n : false,\n onChange(newIsChecked) {\n table.toggleAllRowsSelected(newIsChecked);\n }\n })}\n </chakra.div>\n );\n },\n cell: ({ row }) => {\n const className =\n selectionStyle === \"radio\"\n ? \"result-list-select-row-radio\"\n : \"result-list-select-row-checkbox\";\n const ariaLabel = intl.formatMessage(\n {\n id: \"ariaLabel.selectSingle\"\n },\n { featureProperty: getLabel(row.original, labelProperty) }\n );\n return (\n <chakra.div\n display=\"inline-block\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n className=\"result-list-select-row-container\"\n >\n {createSelectComponent({\n mode: selectionStyle,\n className,\n checked: row.getIsSomeSelected() ? \"indeterminate\" : row.getIsSelected(),\n disabled: !row.getCanSelect(),\n onChange(newIsChecked) {\n row.toggleSelected(newIsChecked);\n },\n ariaLabel: ariaLabel\n })}\n </chakra.div>\n );\n }\n });\n}\n\nfunction getLabel(feature: BaseFeature, labelProperty: string | undefined) {\n if (labelProperty && feature.properties && feature.properties[labelProperty] != null) {\n return feature.properties[labelProperty].toString();\n }\n // use feature id as fallback if property not provided or does not exist for this feature\n return feature.id.toString();\n}\n\nfunction calcRemainingColumnWidth(\n columns: ResultColumn[],\n tableWidth: number,\n selectColumnWidth: number = SELECT_COLUMN_SIZE\n) {\n const fullWidth = columns.reduce((sum, column) => (column.width ?? 0) + sum, 0);\n const undefinedWidthCount = columns.reduce(\n (sum, column) => (column.width === undefined ? sum + 1 : sum),\n 0\n );\n const remainingWidth = tableWidth - selectColumnWidth - fullWidth;\n return remainingWidth / undefinedWidthCount;\n}\n\nfunction getCheckboxTooltip<Data>(table: TanstackTable<Data>, intl: PackageIntl) {\n if (table.getIsAllRowsSelected()) {\n return intl.formatMessage({ id: \"deSelectAllTooltip\" });\n } else {\n return intl.formatMessage({ id: \"selectAllTooltip\" });\n }\n}\n\nfunction slug(id: string) {\n return id\n .toLowerCase()\n .replace(/[^a-z0-9 -]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\");\n}\n"],"names":[],"mappings":"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"}
|
package/ResultList.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Box } from '@chakra-ui/react';
|
|
3
3
|
import { useMapModelValue } from '@open-pioneer/map';
|
|
4
4
|
import { useCommonComponentProps } from '@open-pioneer/react-utils';
|
|
5
|
-
import { useIntl } from './_virtual/
|
|
5
|
+
import { useIntl } from './_virtual/hooks.js';
|
|
6
6
|
import { useRef, useMemo, useEffect, useState } from 'react';
|
|
7
7
|
import { DataTable } from './DataTable/DataTable.js';
|
|
8
8
|
import { createColumns } from './DataTable/createColumns.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/result-list",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.0-dev.20260121105545",
|
|
5
5
|
"description": "This package provides a UI component to display features and their attributes.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -14,20 +14,20 @@
|
|
|
14
14
|
"directory": "src/packages/result-list"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@chakra-ui/react": "^3.
|
|
17
|
+
"@chakra-ui/react": "^3.31.0",
|
|
18
18
|
"@conterra/reactivity-core": "^0.8.1",
|
|
19
|
-
"@open-pioneer/reactivity": "
|
|
20
|
-
"@open-pioneer/core": "
|
|
21
|
-
"@open-pioneer/chakra-snippets": "
|
|
22
|
-
"@open-pioneer/react-utils": "
|
|
23
|
-
"@open-pioneer/runtime": "
|
|
19
|
+
"@open-pioneer/reactivity": "4.4.0-dev.20260121102820",
|
|
20
|
+
"@open-pioneer/core": "4.4.0-dev.20260121102820",
|
|
21
|
+
"@open-pioneer/chakra-snippets": "4.4.0-dev.20260121102820",
|
|
22
|
+
"@open-pioneer/react-utils": "4.4.0-dev.20260121102820",
|
|
23
|
+
"@open-pioneer/runtime": "4.4.0-dev.20260121102820",
|
|
24
24
|
"@tanstack/react-table": "^8.21.3",
|
|
25
25
|
"classnames": "^2.5.1",
|
|
26
26
|
"ol": "^10.7.0",
|
|
27
|
-
"react": "^19.2.
|
|
27
|
+
"react": "^19.2.3",
|
|
28
28
|
"react-use": "^17.6.0",
|
|
29
29
|
"react-icons": "^5.5.0",
|
|
30
|
-
"@open-pioneer/map": "
|
|
30
|
+
"@open-pioneer/map": "1.2.0-dev.20260121105545"
|
|
31
31
|
},
|
|
32
32
|
"exports": {
|
|
33
33
|
"./package.json": "./package.json",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_virtual-pioneer-module_react-hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|