fix: improve aggrid selectedRow output + make first selectedRow configurable

This commit is contained in:
Ruben Fiszel
2023-12-08 23:42:08 +01:00
parent b85103e3b5
commit 651d99824d
3 changed files with 35 additions and 18 deletions
@@ -47,7 +47,7 @@
: [{ error: 'input was not an array' }]
if (api && loaded) {
let selected = api.getSelectedNodes()
if (selected && selected.length > 0) {
if (selected && selected.length > 0 && resolvedConfig?.selectFirstRowByDefault != false) {
let data = { ...selected[0].data }
delete data['__index']
outputs?.selectedRow?.set(data)
@@ -83,9 +83,11 @@
delete data['__index']
if (selectedRowIndex !== rowIndex) {
selectedRowIndex = rowIndex
outputs?.selectedRow.set(data)
outputs?.selectedRowIndex.set(rowIndex)
}
if (!deepEqual(outputs?.selectedRow?.peak(), data)) {
outputs?.selectedRow.set(data)
}
}
}
@@ -159,7 +161,7 @@
onGridReady: (e) => {
outputs?.ready.set(true)
value = value
if (result && result.length > 0) {
if (result && result.length > 0 && resolvedConfig?.selectFirstRowByDefault != false) {
e.api.getRowNode('0')?.setSelected(true)
}
$componentControl[id] = {
@@ -171,17 +173,7 @@
api = e.api
},
onSelectionChanged: (e) => {
if (resolvedConfig?.multipleSelectable) {
const rows = e.api.getSelectedNodes()
if (rows != undefined) {
toggleRows(rows)
}
} else {
const row = e.api.getSelectedNodes()?.[0]
if (row != undefined) {
toggleRow(row)
}
}
onSelectionChanged(e.api)
},
getRowId: (data) => data.data['__index']
},
@@ -201,8 +193,25 @@
}
}
function onSelectionChanged(api: GridApi<any>) {
if (resolvedConfig?.multipleSelectable) {
const rows = api.getSelectedNodes()
if (rows != undefined) {
toggleRows(rows)
}
} else {
const row = api.getSelectedNodes()?.[0]
if (row != undefined) {
toggleRow(row)
}
}
}
function updateValue() {
api?.updateGridOptions({ rowData: value })
if (api) {
onSelectionChanged(api)
}
}
function updateOptions() {
api?.updateGridOptions({
@@ -574,6 +574,12 @@ const aggridcomponentconst = {
fieldType: 'boolean',
value: false
},
selectFirstRowByDefault: {
type: 'static',
fieldType: 'boolean',
value: true as boolean,
tooltip: 'Select the first row by default on start'
},
extraConfig: {
type: 'static',
fieldType: 'object',
@@ -56,6 +56,8 @@
}
$: keyLimit = isArray ? 1 : 100
$: fullyCollapsed = keys.length > 1 && collapsed
</script>
<Portal>
@@ -63,9 +65,9 @@
</Portal>
{#if keys.length > 0}
{#if !collapsed}
{#if !fullyCollapsed}
<span>
{#if level != 0}
{#if level != 0 && keys.length > 1}
<!-- svelte-ignore a11y-click-events-have-key-events -->
<!-- svelte-ignore a11y-no-static-element-interactions -->
<span class="cursor-pointer border hover:bg-surface-hover px-1 rounded" on:click={collapse}>
@@ -149,12 +151,12 @@
<!-- svelte-ignore a11y-no-static-element-interactions -->
<span
class="border border-blue-600 rounded px-1 cursor-pointer hover:bg-gray-200"
class:hidden={!collapsed}
class:hidden={!fullyCollapsed}
on:click={collapse}
>
{openBracket}{collapsedSymbol}{closeBracket}
</span>
{#if collapsed}
{#if fullyCollapsed}
<span class="text-tertiary text-xs">
{pluralize(Object.keys(json).length, Array.isArray(json) ? 'item' : 'key')}
</span>