Skip to main content

Core Services

@codella-software/utils contains the framework-agnostic API.

Root exports

Form builder

import { FormBuilder, MultiStepFormBuilder } from '@codella-software/utils'

FormBuilder is created with FormBuilder.create() or FormBuilder.fromConfig().

Table builder

import {
TableBuilder,
createTableBuilder,
createColumn,
createColumns,
} from '@codella-software/utils'

Filters and sort

import {
FiltersAndSortService,
createFiltersAndSortService,
SORT_DIRECTIONS,
} from '@codella-software/utils'

Tabs

import { TabsService } from '@codella-software/utils'

Rich content

import {
RichContentService,
DefaultContentEditableAdapter,
HTMLSerializer,
JSONSerializer,
PlainTextSerializer,
} from '@codella-software/utils'

Subpath-only modules

API service

import {
ApiService,
AuthService,
TokenManager,
createApiClient,
createCustomQuery,
createFirebaseAuthProvider,
createFirebaseAppCheckProvider,
createCustomAuthProvider,
createCustomAppCheckProvider,
} from '@codella-software/utils/api-service'

Live updates

import {
LiveUpdateService,
SSEService,
WebsocketService,
} from '@codella-software/utils/live-updates'

Example

import {
FormBuilder,
FiltersAndSortService,
TableBuilder,
createColumn,
} from '@codella-software/utils'

type Filters = { search: string }
type User = { id: number; name: string }

const filters = new FiltersAndSortService<Filters>({
storageKey: 'users',
defaultFilters: { search: '' },
})

const form = FormBuilder.create<{ name: string }>()
.addField({ name: 'name', type: 'text', label: 'Name' })
.setInitialValues({ name: '' })

const table = new TableBuilder<User, Filters>()
.data([])
.totalRows(0)
.columns([createColumn('name', 'name', 'Name', { sortable: true })])
.filtersAndSort(filters.getCurrentState(), filters.getActions())
.build()