1.0.17 ā€¢ Published 12 months ago

@jeeny/jeeny-react-hooks v1.0.17

Weekly downloads
-
License
ISC
Repository
github
Last release
12 months ago

jeeny-react-hooks

The jeeny-react-hooks package provides an intuitive and typesafe way to interact with the Jeeny API. It is primarily designed to be "headless", just like the Jeeny API.

What is Jeeny?

Jeeny is a warehouse management system and enterprise resource planning API. It is a headless system for procurement, inventory, standard operating procedures, manufacturing, and fulfillment. Without replacing your current systems you can extend, enhance, and embed in order to create the customizations your teams need.

Table of contents

What is a headless front end?

A headless front end library separates the UI from the logic. This lets the developer focus on user experience without having to think too much about how to retrieve, manipulate, and store data.

The goal is twofold - make it impossible to fail and let the API documentation fade into the background by making it part of the components. You will of course need to be using TypeScript to take full advantage of these features. The package can be used with good old JavaScript too though.

Installation

Yarn yarn add @jeeny/jeeny-react-hooks

npm npm install @jeeny/jeeny-react-hooks

Running tests

Yarn yarn test

npm npm run test

Authentication

You must wrap your application in the JeenyProvider component and pass it your headless API key. This provider allows downstream components to authenticate with the Jeeny graphql server.

It includes the ApolloProvider component from the React Apollo Client. This means that the Jeeny hooks and components can take advantage of features like caching and the Apollo devtools.

You can get your free API key from the Jeeny Hub under the Headless menu.

import { JeenyProvider } from "@jeeny/jeeny-react"
<React.StrictMode>
	<JeenyProvider apiKey="YOUR_API_KEY">
		<App  />
	</JeenyProvider>
</React.StrictMode>

Hooks

The hooks in this package provide an easy way to get direct access to the API. The API hooks can be considered a wrapper around the Apollo Client hooks. The hooks return functions you can use to retrieve or mutate data, the loading state of the actions, and the response data. Like the other utilities in this package, they are fully typed.

Each query function is actually a wrapper around the Apollo Client useLazyQuery hook and the mutations are a wrapper around the useMutation hook. This means that the full APIs for both of those hooks are provided on each and every Jeeny hook. You can find Apollo's documentation on useLazyQuery here and their documentation on useMutation here. This will let you customize options such as fetch policy, caching, error handling, and more.

The hooks can be thought of as a self-documenting API package.

const {
  getItem: {
    query: getItem,
    data,
    loading
  }
} = useItem({
  getItem: {
    options: {
      onCompleted: (data) => dropTheBalloons();
    }
  }
})

useEffect(() => {
  getItem({variables: { id }})
}, [getItem, id])

if (isLoading) {
  return <Loader />
}

const item = data.getItem;

return <div>
  {item.name}
</div>

The following hooks are available for use. useApi is also available to access all of the below hooks at once.

HookRecord associations
useAppApiApp
useArrivalApiArrival, ArrivalDetails, ArrivalRelease, ArrivalDelivery, ArrivalLineItem, ArrivalReleaseLineItem, ArrivalDeliveryLineItem
useBidApiBidRequest, Bid, BidRequestLineItem, BidLineItem
useCompanyApiCompany
useCompanyUserApiCompanyUser
useDepartureApiDeparture, DeparturePickList, DeparturePick, DepartureLineItem, DeparturePickListLineItem, DeparturePickLineItem
useDeviceApiDevice
useDynamicContainerApiDynamicContainer
useEventApiEvent
useFacilityApiFacility, FacilityDetails
useFacilityItemApiFacilityItem
useInstructionApiInstructionTemplate, InstructionExecution, InstructionSubject
useInventoryAreaApiStorageInventoryArea
useInventoryRecordApiInventoryRecord, InventoryLog
useItemStorageInventoryAreaLocationApiItemStorageInventoryAreaLocation
useItemStorageInventoryAreaRuleApiItemStorageInventoryAreaRule
useItemApiItem, ItemDetails
useItemGroupApiItemGroup
useKioskApiKiosk
useKitApiKitTemplate, KitTemplatePart, KitTemplatePartOption, KitTemplateTree, KitTemplateBomEntry
useOperatorApiOperator, SafeOperator
useProductApiProduct
useStorageInventoryApiStorageInventory
useStorageInventoryAreaLocationApiStorageInventoryAreaLocation, StorageInventoryAreaLocationPayload
useStorageInventoryAreaRuleApiStorageInventoryAreaRule
useSupplierApiSupplier
useSupplierItemApiSupplierItem
useTeamApiTeam

React SDK

If you're looking for a more full featured React SDK you might be interested in this. Table, form, and action components are provided (fully typed and validated). Check it out here.

JavaScript SDK

If you're not working with React you might be looking for our JavaScript/TypeScript SDK. Check it out here.

Author

šŸ‘¤ Jeeny

šŸ¤ Contributing

Contributions, issues and feature requests are welcome!Feel free to check issues page.

Show your support

Give a ā­ļø if this project helped you!

šŸ“ License

Copyright Ā© 2023 Jeeny. This project is MIT licensed.


This README was generated with ā¤ļø by readme-md-generator

1.0.17

12 months ago

1.0.16

12 months ago

1.0.9

1 year ago

1.0.11

12 months ago

1.0.10

12 months ago

1.0.15

12 months ago

1.0.14

12 months ago

1.0.13

12 months ago

1.0.12

12 months ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago