@methodexists/me-core

0.1.2 • Public • Published

me-core

Core functionality for MethodExists apps.

Usage

Init core module

core.init({
  apiService: APIService, // api service module with REST methods
  getLocale: () => app._store.getState().app.locale, // getter of the current app locale (for error messages i18n)
});

apiService is required for me-core functioning. getLocale is optional. 'en-US' locale is used by default.

Register formulas in records model

import recordsModel, { init as recordsModelInit } from '~/models/records';

app.model(recordsModel);
recordsModelInit({
  formulas: {
    users: record => ({
      ...record,
      generatedByFormula: Math.random(),
    }),
  },
});

Provide options into notifications model

import notificationsModel, { init as notificationsModelInit } from '~/models/notifications';
import icon from '~/assets/images/icon.png';
import { profileUsernameSelector } from '~/selectors';

app.model(notificationsModel);
notificationsModelInit({
  icon,
  profileUsernameSelector,
});

Examples

ListProvider passing props:

<ListProvider namespace="users" table="users" primaryKey="username">
  {({ list, isLoading } => (
    isLoading ? <div>Loading...</div> : <div>{ list.map(renderListItem) }</div>
  )}
</ListProvider>

API

<ListProvider /> component

import { ListProvider } from 'me-core';
Prop Type Default Description
* namespace string
* table string
* children element or func If children is func then ListProvider will pass { isLoading, list, total, schema } as arguments
filters object {}
esQuery object undefined
sort object { 'name.raw': 'asc' }
limit number 20
primaryKey string 'id'
source object

<RecordProvider /> component

import { RecordProvider } from 'me-core';
Prop Type Default Description
* namespace string
* table string
* children element or func If children is func then RecordProvider will pass { isLoading, record, schema } as arguments
primaryKey string 'id'
id string

<AuditLogProvider /> component

import { AuditLogProvider } from 'me-core';
Prop Type Description
* namespace string
* table string
* children element or func If children is func then provider will pass { isLoading, log, schema } as argument
* id string

Selectors

recordHasUnsavedChangesSelector

Compares metafields lastSynced and lastChanged to figure out if the record was changed and not saved. lastSynced field updated on any Save/Fetch operation (setRecord action). lastChanged field updated on any Update operation (update action).

Models

lists

Lists model works with /table API by default. If the tableName is users it calls /user API. To use /dynamo API you need to set params.useDynamo = true.

Contributing

See CONTRIBUTING.md for how to develop a component.

Dependents (0)

Package Sidebar

Install

npm i @methodexists/me-core

Weekly Downloads

1

Version

0.1.2

License

MIT

Last publish

Collaborators

  • ffab00
  • oluckyman
  • alexeyme