@vuu-ui/vuu-table-extras 0.13.67 → 0.13.68

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.
@@ -10,6 +10,7 @@ const nonSelectedColumns = ({
10
10
  }) => availableColumns.filter(
11
11
  ({ name }) => selectedColumns.findIndex((c) => c.name === name) === -1
12
12
  );
13
+ const byColumnName = ({ name: n1, label: l1 = n1 }, { name: n2, label: l2 = n2 }) => l1 > l2 ? 1 : l2 > l1 ? -1 : 0;
13
14
  const findColumn = (target, columns) => {
14
15
  const listItem = vuuUtils.queryClosest(target, ".saltOption", true);
15
16
  const { name } = listItem.dataset;
@@ -26,12 +27,16 @@ const SelectedColumnChangeType = {
26
27
  ColumnsReordered: "columns-reordered"
27
28
  };
28
29
  const useColumnPicker = ({
29
- availableColumns,
30
+ availableColumns: availableColumnsProp,
30
31
  defaultSelectedColumns,
31
32
  onChangeSelectedColumns,
32
33
  selectedColumns: selectedColumnsProp
33
34
  }) => {
34
35
  const [searchState, setSearchState] = react.useState({ searchText: "" });
36
+ const availableColumns = react.useMemo(
37
+ () => availableColumnsProp.toSorted(byColumnName),
38
+ [availableColumnsProp]
39
+ );
35
40
  const [selectedColumns, setSelectedColumns] = core.useControlled({
36
41
  controlled: selectedColumnsProp,
37
42
  default: defaultSelectedColumns ?? [],
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnPicker.js","sources":["../../../../packages/vuu-table-extras/src/column-picker/useColumnPicker.tsx"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { queryClosest, ValueOf } from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n MouseEventHandler,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport type ColumnPickerAction = (column: ColumnDescriptor) => void;\n\nconst nonSelectedColumns = ({\n availableColumns,\n selectedColumns,\n}: {\n availableColumns: ColumnDescriptor[];\n selectedColumns: ColumnDescriptor[];\n}) =>\n availableColumns.filter(\n ({ name }) => selectedColumns.findIndex((c) => c.name === name) === -1,\n );\n\nconst findColumn = (target: EventTarget, columns: ColumnDescriptor[]) => {\n const listItem = queryClosest(target, \".saltOption\", true);\n const { name } = listItem.dataset;\n const column = columns.find((col) => col.name === name);\n if (column) {\n return column;\n } else {\n throw Error(`[useColumnPicker] column ${name} not found`);\n }\n};\nexport const SelectedColumnChangeType = {\n ColumnAdded: \"column-added\",\n ColumnRemoved: \"column-removed\",\n ColumnsReordered: \"columns-reordered\",\n} as const;\nexport type SelectedColumnChangeType = ValueOf<typeof SelectedColumnChangeType>;\nexport type SelectedColumnsChangeHandler = (\n columns: ColumnDescriptor[],\n changeType: SelectedColumnChangeType,\n) => void;\n\nexport interface ColumPickerHookProps {\n /**\n * All available columns, including selected columns.\n */\n availableColumns: ColumnDescriptor[];\n /**\n * Columns already selected and rendered in Table,\n * columnPicker will be uncontrolled\n */\n defaultSelectedColumns?: ColumnDescriptor[];\n onChangeSelectedColumns: SelectedColumnsChangeHandler;\n /**\n * Columns already selected and rendered in Table.\n * columnPicker will be controlled\n */\n selectedColumns?: ColumnDescriptor[];\n}\n\nexport const useColumnPicker = ({\n availableColumns,\n defaultSelectedColumns,\n onChangeSelectedColumns,\n selectedColumns: selectedColumnsProp,\n}: ColumPickerHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n }>({ searchText: \"\" });\n\n const [selectedColumns, setSelectedColumns] = useControlled({\n controlled: selectedColumnsProp,\n default: defaultSelectedColumns ?? [],\n name: \"ColumnPicker\",\n state: \"selectedColumns\",\n });\n\n const visibleColumnsRef = useRef({ availableColumns, selectedColumns });\n\n useMemo(() => {\n const value = searchState.searchText.toLowerCase();\n if (value) {\n const pattern = value.toLowerCase();\n visibleColumnsRef.current = {\n availableColumns: availableColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n selectedColumns: selectedColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n };\n } else {\n visibleColumnsRef.current = { availableColumns, selectedColumns };\n }\n }, [availableColumns, selectedColumns, searchState.searchText]);\n\n const handleChangeSearchInput = useCallback<FormEventHandler>((evt) => {\n const { value } = evt.target as HTMLInputElement;\n setSearchState({\n searchText: value,\n });\n }, []);\n\n const handleAddItemToSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, availableColumns);\n const newColumns = selectedColumns.concat(targetColumn);\n onChangeSelectedColumns(newColumns, SelectedColumnChangeType.ColumnAdded);\n setSelectedColumns(newColumns);\n },\n [\n availableColumns,\n onChangeSelectedColumns,\n selectedColumns,\n setSelectedColumns,\n ],\n );\n\n const handleRemoveItemFromSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, selectedColumns);\n const newColumns = selectedColumns.filter(\n (col) => col.name !== targetColumn.name,\n );\n onChangeSelectedColumns(\n newColumns,\n SelectedColumnChangeType.ColumnRemoved,\n );\n setSelectedColumns(newColumns);\n },\n [onChangeSelectedColumns, selectedColumns, setSelectedColumns],\n );\n\n return {\n availableColumns: nonSelectedColumns(visibleColumnsRef.current),\n onAddItemToSelectedList: handleAddItemToSelectedList,\n onRemoveItemFromSelectedList: handleRemoveItemFromSelectedList,\n onChangeSearchInput: handleChangeSearchInput,\n searchState,\n selectedColumns: visibleColumnsRef.current.selectedColumns,\n };\n};\n"],"names":["queryClosest","useState","useControlled","useRef","useMemo","useCallback"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnPicker.js","sources":["../../../../packages/vuu-table-extras/src/column-picker/useColumnPicker.tsx"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { queryClosest, ValueOf } from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n MouseEventHandler,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport type ColumnPickerAction = (column: ColumnDescriptor) => void;\n\nconst nonSelectedColumns = ({\n availableColumns,\n selectedColumns,\n}: {\n availableColumns: ColumnDescriptor[];\n selectedColumns: ColumnDescriptor[];\n}) =>\n availableColumns.filter(\n ({ name }) => selectedColumns.findIndex((c) => c.name === name) === -1,\n );\n\nconst byColumnName = (\n { name: n1, label: l1 = n1 }: ColumnDescriptor,\n { name: n2, label: l2 = n2 }: ColumnDescriptor,\n) => (l1 > l2 ? 1 : l2 > l1 ? -1 : 0);\n\nconst findColumn = (target: EventTarget, columns: ColumnDescriptor[]) => {\n const listItem = queryClosest(target, \".saltOption\", true);\n const { name } = listItem.dataset;\n const column = columns.find((col) => col.name === name);\n if (column) {\n return column;\n } else {\n throw Error(`[useColumnPicker] column ${name} not found`);\n }\n};\nexport const SelectedColumnChangeType = {\n ColumnAdded: \"column-added\",\n ColumnRemoved: \"column-removed\",\n ColumnsReordered: \"columns-reordered\",\n} as const;\nexport type SelectedColumnChangeType = ValueOf<typeof SelectedColumnChangeType>;\nexport type SelectedColumnsChangeHandler = (\n columns: ColumnDescriptor[],\n changeType: SelectedColumnChangeType,\n) => void;\n\nexport interface ColumPickerHookProps {\n /**\n * All available columns, including selected columns.\n */\n availableColumns: ColumnDescriptor[];\n /**\n * Columns already selected and rendered in Table,\n * columnPicker will be uncontrolled\n */\n defaultSelectedColumns?: ColumnDescriptor[];\n onChangeSelectedColumns: SelectedColumnsChangeHandler;\n /**\n * Columns already selected and rendered in Table.\n * columnPicker will be controlled\n */\n selectedColumns?: ColumnDescriptor[];\n}\n\nexport const useColumnPicker = ({\n availableColumns: availableColumnsProp,\n defaultSelectedColumns,\n onChangeSelectedColumns,\n selectedColumns: selectedColumnsProp,\n}: ColumPickerHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n }>({ searchText: \"\" });\n\n const availableColumns = useMemo(\n () => availableColumnsProp.toSorted(byColumnName),\n [availableColumnsProp],\n );\n\n const [selectedColumns, setSelectedColumns] = useControlled({\n controlled: selectedColumnsProp,\n default: defaultSelectedColumns ?? [],\n name: \"ColumnPicker\",\n state: \"selectedColumns\",\n });\n\n const visibleColumnsRef = useRef({ availableColumns, selectedColumns });\n\n useMemo(() => {\n const value = searchState.searchText.toLowerCase();\n if (value) {\n const pattern = value.toLowerCase();\n visibleColumnsRef.current = {\n availableColumns: availableColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n selectedColumns: selectedColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n };\n } else {\n visibleColumnsRef.current = { availableColumns, selectedColumns };\n }\n }, [availableColumns, selectedColumns, searchState.searchText]);\n\n const handleChangeSearchInput = useCallback<FormEventHandler>((evt) => {\n const { value } = evt.target as HTMLInputElement;\n setSearchState({\n searchText: value,\n });\n }, []);\n\n const handleAddItemToSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, availableColumns);\n const newColumns = selectedColumns.concat(targetColumn);\n onChangeSelectedColumns(newColumns, SelectedColumnChangeType.ColumnAdded);\n setSelectedColumns(newColumns);\n },\n [\n availableColumns,\n onChangeSelectedColumns,\n selectedColumns,\n setSelectedColumns,\n ],\n );\n\n const handleRemoveItemFromSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, selectedColumns);\n const newColumns = selectedColumns.filter(\n (col) => col.name !== targetColumn.name,\n );\n onChangeSelectedColumns(\n newColumns,\n SelectedColumnChangeType.ColumnRemoved,\n );\n setSelectedColumns(newColumns);\n },\n [onChangeSelectedColumns, selectedColumns, setSelectedColumns],\n );\n\n return {\n availableColumns: nonSelectedColumns(visibleColumnsRef.current),\n onAddItemToSelectedList: handleAddItemToSelectedList,\n onRemoveItemFromSelectedList: handleRemoveItemFromSelectedList,\n onChangeSearchInput: handleChangeSearchInput,\n searchState,\n selectedColumns: visibleColumnsRef.current.selectedColumns,\n };\n};\n"],"names":["queryClosest","useState","useMemo","useControlled","useRef","useCallback"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { useControlled } from '@salt-ds/core';
2
2
  import { queryClosest } from '@vuu-ui/vuu-utils';
3
- import { useState, useRef, useMemo, useCallback } from 'react';
3
+ import { useState, useMemo, useRef, useCallback } from 'react';
4
4
 
5
5
  const nonSelectedColumns = ({
6
6
  availableColumns,
@@ -8,6 +8,7 @@ const nonSelectedColumns = ({
8
8
  }) => availableColumns.filter(
9
9
  ({ name }) => selectedColumns.findIndex((c) => c.name === name) === -1
10
10
  );
11
+ const byColumnName = ({ name: n1, label: l1 = n1 }, { name: n2, label: l2 = n2 }) => l1 > l2 ? 1 : l2 > l1 ? -1 : 0;
11
12
  const findColumn = (target, columns) => {
12
13
  const listItem = queryClosest(target, ".saltOption", true);
13
14
  const { name } = listItem.dataset;
@@ -24,12 +25,16 @@ const SelectedColumnChangeType = {
24
25
  ColumnsReordered: "columns-reordered"
25
26
  };
26
27
  const useColumnPicker = ({
27
- availableColumns,
28
+ availableColumns: availableColumnsProp,
28
29
  defaultSelectedColumns,
29
30
  onChangeSelectedColumns,
30
31
  selectedColumns: selectedColumnsProp
31
32
  }) => {
32
33
  const [searchState, setSearchState] = useState({ searchText: "" });
34
+ const availableColumns = useMemo(
35
+ () => availableColumnsProp.toSorted(byColumnName),
36
+ [availableColumnsProp]
37
+ );
33
38
  const [selectedColumns, setSelectedColumns] = useControlled({
34
39
  controlled: selectedColumnsProp,
35
40
  default: defaultSelectedColumns ?? [],
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnPicker.js","sources":["../../../../packages/vuu-table-extras/src/column-picker/useColumnPicker.tsx"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { queryClosest, ValueOf } from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n MouseEventHandler,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport type ColumnPickerAction = (column: ColumnDescriptor) => void;\n\nconst nonSelectedColumns = ({\n availableColumns,\n selectedColumns,\n}: {\n availableColumns: ColumnDescriptor[];\n selectedColumns: ColumnDescriptor[];\n}) =>\n availableColumns.filter(\n ({ name }) => selectedColumns.findIndex((c) => c.name === name) === -1,\n );\n\nconst findColumn = (target: EventTarget, columns: ColumnDescriptor[]) => {\n const listItem = queryClosest(target, \".saltOption\", true);\n const { name } = listItem.dataset;\n const column = columns.find((col) => col.name === name);\n if (column) {\n return column;\n } else {\n throw Error(`[useColumnPicker] column ${name} not found`);\n }\n};\nexport const SelectedColumnChangeType = {\n ColumnAdded: \"column-added\",\n ColumnRemoved: \"column-removed\",\n ColumnsReordered: \"columns-reordered\",\n} as const;\nexport type SelectedColumnChangeType = ValueOf<typeof SelectedColumnChangeType>;\nexport type SelectedColumnsChangeHandler = (\n columns: ColumnDescriptor[],\n changeType: SelectedColumnChangeType,\n) => void;\n\nexport interface ColumPickerHookProps {\n /**\n * All available columns, including selected columns.\n */\n availableColumns: ColumnDescriptor[];\n /**\n * Columns already selected and rendered in Table,\n * columnPicker will be uncontrolled\n */\n defaultSelectedColumns?: ColumnDescriptor[];\n onChangeSelectedColumns: SelectedColumnsChangeHandler;\n /**\n * Columns already selected and rendered in Table.\n * columnPicker will be controlled\n */\n selectedColumns?: ColumnDescriptor[];\n}\n\nexport const useColumnPicker = ({\n availableColumns,\n defaultSelectedColumns,\n onChangeSelectedColumns,\n selectedColumns: selectedColumnsProp,\n}: ColumPickerHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n }>({ searchText: \"\" });\n\n const [selectedColumns, setSelectedColumns] = useControlled({\n controlled: selectedColumnsProp,\n default: defaultSelectedColumns ?? [],\n name: \"ColumnPicker\",\n state: \"selectedColumns\",\n });\n\n const visibleColumnsRef = useRef({ availableColumns, selectedColumns });\n\n useMemo(() => {\n const value = searchState.searchText.toLowerCase();\n if (value) {\n const pattern = value.toLowerCase();\n visibleColumnsRef.current = {\n availableColumns: availableColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n selectedColumns: selectedColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n };\n } else {\n visibleColumnsRef.current = { availableColumns, selectedColumns };\n }\n }, [availableColumns, selectedColumns, searchState.searchText]);\n\n const handleChangeSearchInput = useCallback<FormEventHandler>((evt) => {\n const { value } = evt.target as HTMLInputElement;\n setSearchState({\n searchText: value,\n });\n }, []);\n\n const handleAddItemToSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, availableColumns);\n const newColumns = selectedColumns.concat(targetColumn);\n onChangeSelectedColumns(newColumns, SelectedColumnChangeType.ColumnAdded);\n setSelectedColumns(newColumns);\n },\n [\n availableColumns,\n onChangeSelectedColumns,\n selectedColumns,\n setSelectedColumns,\n ],\n );\n\n const handleRemoveItemFromSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, selectedColumns);\n const newColumns = selectedColumns.filter(\n (col) => col.name !== targetColumn.name,\n );\n onChangeSelectedColumns(\n newColumns,\n SelectedColumnChangeType.ColumnRemoved,\n );\n setSelectedColumns(newColumns);\n },\n [onChangeSelectedColumns, selectedColumns, setSelectedColumns],\n );\n\n return {\n availableColumns: nonSelectedColumns(visibleColumnsRef.current),\n onAddItemToSelectedList: handleAddItemToSelectedList,\n onRemoveItemFromSelectedList: handleRemoveItemFromSelectedList,\n onChangeSearchInput: handleChangeSearchInput,\n searchState,\n selectedColumns: visibleColumnsRef.current.selectedColumns,\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useColumnPicker.js","sources":["../../../../packages/vuu-table-extras/src/column-picker/useColumnPicker.tsx"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { queryClosest, ValueOf } from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n MouseEventHandler,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport type ColumnPickerAction = (column: ColumnDescriptor) => void;\n\nconst nonSelectedColumns = ({\n availableColumns,\n selectedColumns,\n}: {\n availableColumns: ColumnDescriptor[];\n selectedColumns: ColumnDescriptor[];\n}) =>\n availableColumns.filter(\n ({ name }) => selectedColumns.findIndex((c) => c.name === name) === -1,\n );\n\nconst byColumnName = (\n { name: n1, label: l1 = n1 }: ColumnDescriptor,\n { name: n2, label: l2 = n2 }: ColumnDescriptor,\n) => (l1 > l2 ? 1 : l2 > l1 ? -1 : 0);\n\nconst findColumn = (target: EventTarget, columns: ColumnDescriptor[]) => {\n const listItem = queryClosest(target, \".saltOption\", true);\n const { name } = listItem.dataset;\n const column = columns.find((col) => col.name === name);\n if (column) {\n return column;\n } else {\n throw Error(`[useColumnPicker] column ${name} not found`);\n }\n};\nexport const SelectedColumnChangeType = {\n ColumnAdded: \"column-added\",\n ColumnRemoved: \"column-removed\",\n ColumnsReordered: \"columns-reordered\",\n} as const;\nexport type SelectedColumnChangeType = ValueOf<typeof SelectedColumnChangeType>;\nexport type SelectedColumnsChangeHandler = (\n columns: ColumnDescriptor[],\n changeType: SelectedColumnChangeType,\n) => void;\n\nexport interface ColumPickerHookProps {\n /**\n * All available columns, including selected columns.\n */\n availableColumns: ColumnDescriptor[];\n /**\n * Columns already selected and rendered in Table,\n * columnPicker will be uncontrolled\n */\n defaultSelectedColumns?: ColumnDescriptor[];\n onChangeSelectedColumns: SelectedColumnsChangeHandler;\n /**\n * Columns already selected and rendered in Table.\n * columnPicker will be controlled\n */\n selectedColumns?: ColumnDescriptor[];\n}\n\nexport const useColumnPicker = ({\n availableColumns: availableColumnsProp,\n defaultSelectedColumns,\n onChangeSelectedColumns,\n selectedColumns: selectedColumnsProp,\n}: ColumPickerHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n }>({ searchText: \"\" });\n\n const availableColumns = useMemo(\n () => availableColumnsProp.toSorted(byColumnName),\n [availableColumnsProp],\n );\n\n const [selectedColumns, setSelectedColumns] = useControlled({\n controlled: selectedColumnsProp,\n default: defaultSelectedColumns ?? [],\n name: \"ColumnPicker\",\n state: \"selectedColumns\",\n });\n\n const visibleColumnsRef = useRef({ availableColumns, selectedColumns });\n\n useMemo(() => {\n const value = searchState.searchText.toLowerCase();\n if (value) {\n const pattern = value.toLowerCase();\n visibleColumnsRef.current = {\n availableColumns: availableColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n selectedColumns: selectedColumns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(pattern) !== -1,\n ),\n };\n } else {\n visibleColumnsRef.current = { availableColumns, selectedColumns };\n }\n }, [availableColumns, selectedColumns, searchState.searchText]);\n\n const handleChangeSearchInput = useCallback<FormEventHandler>((evt) => {\n const { value } = evt.target as HTMLInputElement;\n setSearchState({\n searchText: value,\n });\n }, []);\n\n const handleAddItemToSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, availableColumns);\n const newColumns = selectedColumns.concat(targetColumn);\n onChangeSelectedColumns(newColumns, SelectedColumnChangeType.ColumnAdded);\n setSelectedColumns(newColumns);\n },\n [\n availableColumns,\n onChangeSelectedColumns,\n selectedColumns,\n setSelectedColumns,\n ],\n );\n\n const handleRemoveItemFromSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n ({ target }) => {\n const targetColumn = findColumn(target, selectedColumns);\n const newColumns = selectedColumns.filter(\n (col) => col.name !== targetColumn.name,\n );\n onChangeSelectedColumns(\n newColumns,\n SelectedColumnChangeType.ColumnRemoved,\n );\n setSelectedColumns(newColumns);\n },\n [onChangeSelectedColumns, selectedColumns, setSelectedColumns],\n );\n\n return {\n availableColumns: nonSelectedColumns(visibleColumnsRef.current),\n onAddItemToSelectedList: handleAddItemToSelectedList,\n onRemoveItemFromSelectedList: handleRemoveItemFromSelectedList,\n onChangeSearchInput: handleChangeSearchInput,\n searchState,\n selectedColumns: visibleColumnsRef.current.selectedColumns,\n };\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
- "version": "0.13.67",
2
+ "version": "0.13.68",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "devDependencies": {
6
- "@vuu-ui/vuu-filter-types": "0.13.67",
7
- "@vuu-ui/vuu-protocol-types": "0.13.67"
6
+ "@vuu-ui/vuu-filter-types": "0.13.68",
7
+ "@vuu-ui/vuu-protocol-types": "0.13.68"
8
8
  },
9
9
  "dependencies": {
10
- "@vuu-ui/vuu-codemirror": "0.13.67",
11
- "@vuu-ui/vuu-data-react": "0.13.67",
12
- "@vuu-ui/vuu-data-types": "0.13.67",
13
- "@vuu-ui/vuu-table-types": "0.13.67",
14
- "@vuu-ui/vuu-popups": "0.13.67",
15
- "@vuu-ui/vuu-table": "0.13.67",
16
- "@vuu-ui/vuu-utils": "0.13.67",
17
- "@vuu-ui/vuu-ui-controls": "0.13.67",
10
+ "@vuu-ui/vuu-codemirror": "0.13.68",
11
+ "@vuu-ui/vuu-data-react": "0.13.68",
12
+ "@vuu-ui/vuu-data-types": "0.13.68",
13
+ "@vuu-ui/vuu-table-types": "0.13.68",
14
+ "@vuu-ui/vuu-popups": "0.13.68",
15
+ "@vuu-ui/vuu-table": "0.13.68",
16
+ "@vuu-ui/vuu-utils": "0.13.68",
17
+ "@vuu-ui/vuu-ui-controls": "0.13.68",
18
18
  "@lezer/lr": "1.4.2",
19
19
  "@salt-ds/core": "1.48.0",
20
20
  "@salt-ds/styles": "0.2.1",
@@ -26,7 +26,7 @@ export interface ColumPickerHookProps {
26
26
  */
27
27
  selectedColumns?: ColumnDescriptor[];
28
28
  }
29
- export declare const useColumnPicker: ({ availableColumns, defaultSelectedColumns, onChangeSelectedColumns, selectedColumns: selectedColumnsProp, }: ColumPickerHookProps) => {
29
+ export declare const useColumnPicker: ({ availableColumns: availableColumnsProp, defaultSelectedColumns, onChangeSelectedColumns, selectedColumns: selectedColumnsProp, }: ColumPickerHookProps) => {
30
30
  availableColumns: ColumnDescriptor[];
31
31
  onAddItemToSelectedList: MouseEventHandler<HTMLButtonElement>;
32
32
  onRemoveItemFromSelectedList: MouseEventHandler<HTMLButtonElement>;