Skip to content

use/listInstance

Classes

ListInstanceError

Defines a custom error class specific to list instance operations, encapsulating details about errors that occur during list manipulation and processing.

Extends

  • Error

Constructors

Constructor

new ListInstanceError(message, code): ListInstanceError

Creates an instance of ListInstanceError.

Parameters
message

string

The error message.

code

string

The error code.

Returns

ListInstanceError

Overrides

Error.constructor

Properties

code

code: string

name

name: string

Inherited from

Error.name

Interfaces

ClearListOptions

Options to control which reactive state is reset when clearing the list.

Properties

keepColumnTotals?

optional keepColumnTotals?: boolean

When true, keep the current column totals.

keepError?

optional keepError?: boolean

When true, keep the current error state.

keepPagination?

optional keepPagination?: boolean

When true, keep the current pagination information.


ListInstanceMyFunctions

Defines the methods provided by the list instance for managing objects in the list.

Properties

addListObject

addListObject: (object) => void

Adds an object to the list.

Parameters
object

ExistingCrudObject

Returns

void

bulkDelete

bulkDelete: (args?) => Promise<boolean>

Deletes objects from the list by pk, returning a promise to a boolean indicating success.

Parameters
args?

object & AdditionalListArgs

Returns

Promise<boolean>

clearList

clearList: (options?) => void

Clears the list objects and optionally keeps pagination, totals, or error state.

Parameters
options?

ClearListOptions

Returns

void

deleteListObject

deleteListObject: (objectId) => void

Deletes an object from the list by pk.

Parameters
objectId

PkInput

Returns

void

executeAction

executeAction: (args) => Promise<any>

Initiates an action on all objects in the list, returning the response, or null if the action failed.

Parameters
args

object & AdditionalListArgs

Returns

Promise<any>

getFakePk

getFakePk: () => string

Generates a unique fake pk for use within the list.

Returns

string

list

list: (args?) => MaybeCancellablePromise<boolean>

Initiates a fetch to retrieve objects according to the CRUD configuration, returning a promise to a boolean indicating success.

Parameters
args?

AdditionalListArgs

Returns

MaybeCancellablePromise<boolean>

pushObjects

pushObjects: PushObjectsFn

Customizable callback for handling new objects per page.

setColumnTotals

setColumnTotals: (total) => void

The method to update column totals.

Parameters
total

ColumnTotals

Returns

void

setPaginateInfo

setPaginateInfo: (info) => void

The method to update pagination information.

Parameters
info

PaginateInfo

Returns

void

updateListObject

updateListObject: (object) => void

Updates an object in the list.

Parameters
object

ExistingCrudObject

Returns

void


ListInstanceOptions

The configuration options used to create a list instance.

Properties

handlers?

optional handlers?: object

Default implementation are used as set by setListCrud.

bulkDelete?

optional bulkDelete?: CrudBulkDeleteFn

Provide the implementation for the bulkDelete function.

executeAction?

optional executeAction?: CrudExecuteActionFn

Provide the implementation for the executeAction function.

list?

optional list?: CrudListFn

Provide the implementation for the list function.

subscribe?

optional subscribe?: CrudListSubscribeFn

Provide the implementation for the subscribe function.

props

props: object

The props for the list instance.

params

params: any

The arguments passed to the server.

pkKey

pkKey: string

The primary key field for the list objects.

target

target: any

Implementation specific arguments.


ListInstanceProps

The reactive arguments for the list instance.

Properties

params

params: any

The arguments passed to the server.

pkKey

pkKey: string

The primary key field for the list objects.

target

target: any

Implementation specific arguments.


ListInstanceRawMyState

The raw state object for the list instance, defining the reactive properties and their types.

Properties

columnTotals

columnTotals: ShallowReactive<ColumnTotals>

Column totals for the list.

crud

crud: object

CRUD handlers and their configurations for the list.

args

args: Reactive<{ } | TargetArgs>

The arguments to be passed to the crud handlers.

bulkDelete

bulkDelete: CrudBulkDeleteFn

The bulk delete function.

executeAction

executeAction: CrudExecuteActionFn

The execute action function.

list

list: CrudListFn

The list function.

subscribe

subscribe: CrudListSubscribeFn

The subscribe function.

objects

objects: ObjectsByPk

The list objects stored by their pks.

objectsInOrder

objectsInOrder: ComputedRef<ExistingCrudObject[]>

The objects in the order specified by the list.

objectsMap

objectsMap: ObjectsMap

The map of objects stored by their pks.

objectsVersion

objectsVersion: number

Increments when the set of object keys changes.

order

order: ComputedRef<string[]>

The order of objects in the list.

paginateInfo

paginateInfo: ShallowReactive<PaginateInfo>

Pagination information for the list.

params

params: any

Arguments passed to the server for listing operations.

pkKey

pkKey: string

The primary key field for the list objects.


ListInstanceRawStateCrud

The raw CRUD handlers and target args stored in a list instance's reactive state.

Properties

args

args: Reactive<{ } | TargetArgs>

The arguments to be passed to the crud handlers.

bulkDelete

bulkDelete: CrudBulkDeleteFn

The bulk delete function.

executeAction

executeAction: CrudExecuteActionFn

The execute action function.

list

list: CrudListFn

The list function.

subscribe

subscribe: CrudListSubscribeFn

The subscribe function.


PaginateInfo

Pagination details for a list, including total records, total pages, per-page count, and current page.

Properties

page?

optional page?: number

The page you are giving us results for.

perPage?

optional perPage?: number

The per page.

totalPages?

optional totalPages?: number

The total pages.

totalRecords?

optional totalRecords?: number

The total records.

Type Aliases

ColumnTotals

ColumnTotals = object

A map of column names to their aggregate total values for a list.

Type Parameters

Index Signature

[key: string]: string | number


ListInstance

ListInstance = ListInstanceStateMixIn & ListInstanceFunctions

The list instance, combining state management and functional operations for managing a list of objects.

Type Parameters


ListInstanceFunctions

ListInstanceFunctions = ListInstanceMyFunctions & Pick<LoadingErrorStatus, "clearError">

The methods contributed by the list instance, including its CRUD operations plus clearError.

Type Parameters


ListInstanceRawState

ListInstanceRawState = ListInstanceRawMyState & Pick<LoadingErrorStatus, "loading" | "error" | "errored">

The raw, pre-unwrapped state of a list instance, combining its own state with loading and error status.

Type Parameters


ListInstanceState

ListInstanceState = UnwrapNestedRefs

Defines the reactive state used by the list instance.

Type Parameters


ListInstanceStateMixIn

ListInstanceStateMixIn = object

Helper type to facilitate the combination of state and functions into a single type.

Type Parameters

Type Declaration

state

state: ListInstanceState


ListOrder

ListOrder = ComputedRef

The order of the objects in the list.

Type Parameters


ObjectsByPk

ObjectsByPk = object

The objects by pk.

Type Parameters

Index Signature

[pk: string]: ExistingCrudObject


ObjectsInOrder

ObjectsInOrder = ComputedRef

The objects in order, based on .order & .objects.

Type Parameters


ObjectsMap

ObjectsMap = Map<Pk, Reactive>

A Map of primary keys to the list's reactive existing objects.

Type Parameters


PushObjectsFn

PushObjectsFn = (newObjects) => void

Signature for the function that pushes a page of newly received objects into the list.

Type Parameters

Parameters

newObjects

ExistingCrudObject[]

Returns

void

Functions

useListInstance()

useListInstance(options): ListInstance

Creates and manages a reactive list of objects, providing utilities to add, update, delete, and fetch objects according to the specified CRUD operations.

Parameters

options

ListInstanceOptions

Specifies the configuration options for creating a list instance, including properties for CRUD operations and UI behaviours like page persistence.

Returns

ListInstance

The list instance.

Example

vue
<script setup>
import { useListInstance } from "@arrai-innovations/reactive-helpers";
import { reactive, toRef } from "vue";

const props = defineProps({
    // whatever props are required for your configured list instance
    someListFilter: {
        type: string,
        default: "",
    },
});

const listInstanceProps = reactive({
    target: {
        // whatever arguments are required for your configured list crud function to get the right endpoint
    },
    params: {
        // whatever arguments are required for your configured list function to get the right list
        someListFilter: toRef(props, "someListFilter"),
    },
});
const listInstance = useListInstance({ props: listInstanceProps });
watch(toRef(props, "someListFilter"), (newValue, oldValue) => {
    if (newValue !== oldValue && !isEmpty(newValue)) {
        listInstance.list();
    }
}, {
   immediate: true,
   deep: true,
});
</script>
<template>
    <ul>
        <!-- reactive list of objects, re-retrieving the list as someListFilter changes. -->
        <li v-for="obj in listInstance.state.objectsInOrder">
            {{ obj }}
        </li>
    </ul>
</template>

Throws

If the props are missing.


useListInstances()

useListInstances(listInstanceArgs): object

Creates and manages multiple list instances.

Parameters

listInstanceArgs

The arguments for each list instance.

Returns

object

An object of list instances.

References

ClearListFn

Renames and re-exports ClearObjectsFn


SetColumnTotalsFn

Renames and re-exports SetColumnTotals


SetPaginateInfoFn

Renames and re-exports SetPaginateInfo