feat(inventory,dashboard,types,core-flows,js-sdk,medusa): Improve inventory UX (#10630)
* feat(dashboard): Add UI for bulk editing inventory stock (#10556) * progress * cleanup types * add changeset * fix 0 values * format schema * add delete event and allow copy/pasting enabled for some fields * add response types * add tests * work on fixing setValue behaviour * cleanup toggle logic * add loading state * format schema * add support for bidirectional actions in DataGrid and update Checkbox and RadioGroup * update lock * lint * fix 404 * address feedback * update cursor on bidirectional select
This commit is contained in:
@@ -15,15 +15,15 @@ export class InventoryItem {
|
||||
}
|
||||
|
||||
/**
|
||||
* This method creates an inventory item. It sends a request to the
|
||||
* This method creates an inventory item. It sends a request to the
|
||||
* [Create Inventory Item](https://docs.medusajs.com/api/admin#inventory-items_postinventoryitems)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param body - The inventory item's details.
|
||||
* @param query - Configure the fields to retrieve in the inventory item.
|
||||
* @param headers - Headers to pass in the request.
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.create({
|
||||
* sku: "SHIRT"
|
||||
@@ -52,13 +52,13 @@ export class InventoryItem {
|
||||
* This method updates an inventory level. It sends a request to the
|
||||
* [Update Inventory Item](https://docs.medusajs.com/api/admin#inventory-items_postinventoryitemsid)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param body - The data to update.
|
||||
* @param query - Configure the fields to retrieve in the inventory item.
|
||||
* @param headers - Headers to pass in the request.
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.update("iitem_123", {
|
||||
* sku: "SHIRT"
|
||||
@@ -85,28 +85,28 @@ export class InventoryItem {
|
||||
}
|
||||
|
||||
/**
|
||||
* This method retrieves a paginated list of inventory items. It sends a request to the
|
||||
* This method retrieves a paginated list of inventory items. It sends a request to the
|
||||
* [List Inventory Items](https://docs.medusajs.com/api/admin#inventory-items_getinventoryitems)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param query - Filters and pagination configurations.
|
||||
* @param headers - Headers to pass in the request.
|
||||
* @returns The paginated list of inventory items.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* To retrieve the list of inventory items:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.list()
|
||||
* .then(({ inventory_items, count, limit, offset }) => {
|
||||
* console.log(inventory_items)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* To configure the pagination, pass the `limit` and `offset` query parameters.
|
||||
*
|
||||
*
|
||||
* For example, to retrieve only 10 items and skip 10 items:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.list({
|
||||
* limit: 10,
|
||||
@@ -116,10 +116,10 @@ export class InventoryItem {
|
||||
* console.log(inventory_items)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Using the `fields` query parameter, you can specify the fields and relations to retrieve
|
||||
* in each inventory item:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.list({
|
||||
* fields: "id,*location_levels"
|
||||
@@ -128,7 +128,7 @@ export class InventoryItem {
|
||||
* console.log(inventory_items)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Learn more about the `fields` property in the [API reference](https://docs.medusajs.com/api/store#select-fields-and-relations).
|
||||
*/
|
||||
async list(
|
||||
@@ -145,26 +145,26 @@ export class InventoryItem {
|
||||
}
|
||||
|
||||
/**
|
||||
* This method retrieves an inventory item by its ID. It sends a request to the
|
||||
* This method retrieves an inventory item by its ID. It sends a request to the
|
||||
* [Get Inventory Item](https://docs.medusajs.com/api/admin#inventory-items_getinventoryitemsid) API route.
|
||||
*
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param query - Configure the fields to retrieve in the inventory item.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* To retrieve an inventory item by its ID:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.retrieve("iitem_123")
|
||||
* .then(({ inventory_item }) => {
|
||||
* console.log(inventory_item)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* To specify the fields and relations to retrieve:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.retrieve("iitem_123", {
|
||||
* fields: "id,*location_levels"
|
||||
@@ -173,7 +173,7 @@ export class InventoryItem {
|
||||
* console.log(inventory_item)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Learn more about the `fields` property in the [API reference](https://docs.medusajs.com/api/store#select-fields-and-relations).
|
||||
*/
|
||||
async retrieve(id: string, query?: SelectParams, headers?: ClientHeaders) {
|
||||
@@ -190,11 +190,11 @@ export class InventoryItem {
|
||||
* This method deletes an inventory item. This sends a request to the
|
||||
* [Delete Inventory Item](https://docs.medusajs.com/api/admin#inventory-items_deleteinventoryitemsid)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The deletion's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.delete("iitem_123")
|
||||
* .then(({ deleted }) => {
|
||||
@@ -215,26 +215,26 @@ export class InventoryItem {
|
||||
* This method retrieves a paginated list of inventory levels that belong to an inventory item.
|
||||
* It sends a request to the [List Inventory Items](https://docs.medusajs.com/api/admin#inventory-items_getinventoryitems)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param query - Filters and pagination configurations.
|
||||
* @param headers - Headers to pass in the request.
|
||||
* @returns The paginated list of inventory levels.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* To retrieve the list of inventory levels:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.listLevels("iitem_123")
|
||||
* .then(({ inventory_levels, count, limit, offset }) => {
|
||||
* console.log(inventory_levels)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* To configure the pagination, pass the `limit` and `offset` query parameters.
|
||||
*
|
||||
*
|
||||
* For example, to retrieve only 10 items and skip 10 items:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.listLevels("iitem_123", {
|
||||
* limit: 10,
|
||||
@@ -244,10 +244,10 @@ export class InventoryItem {
|
||||
* console.log(inventory_levels)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Using the `fields` query parameter, you can specify the fields and relations to retrieve
|
||||
* in each inventory level:
|
||||
*
|
||||
*
|
||||
* ```ts
|
||||
* sdk.admin.inventoryItem.listLevels("iitem_123", {
|
||||
* fields: "id,*inventory_item"
|
||||
@@ -256,7 +256,7 @@ export class InventoryItem {
|
||||
* console.log(inventory_levels)
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Learn more about the `fields` property in the [API reference](https://docs.medusajs.com/api/store#select-fields-and-relations).
|
||||
*/
|
||||
async listLevels(
|
||||
@@ -276,18 +276,18 @@ export class InventoryItem {
|
||||
/**
|
||||
* This method updates the inventory level of the specified inventory item and
|
||||
* stock location.
|
||||
*
|
||||
* This method sends a request to the
|
||||
*
|
||||
* This method sends a request to the
|
||||
* [Update Inventory Level](https://docs.medusajs.com/api/admin#inventory-items_postinventoryitemsidlocationlevelslocation_id)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param locationId - The stock location's ID.
|
||||
* @param body - The details to update.
|
||||
* @param query - Configure the fields to retrieve in the inventory item.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.updateLevel(
|
||||
* "iitem_123",
|
||||
@@ -321,16 +321,16 @@ export class InventoryItem {
|
||||
/**
|
||||
* This method deletes an inventory level associated with an inventory item
|
||||
* and a stock location.
|
||||
*
|
||||
* This method sends a request to the
|
||||
*
|
||||
* This method sends a request to the
|
||||
* [Remove Inventory Level](https://docs.medusajs.com/api/admin#inventory-items_deleteinventoryitemsidlocationlevelslocation_id)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param locationId - The stock location's ID.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The deletion's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.deleteLevel(
|
||||
* "iitem_123",
|
||||
@@ -354,32 +354,34 @@ export class InventoryItem {
|
||||
* This method manages the inventory levels of an inventory item. It sends a request to the
|
||||
* [Manage Inventory Levels](https://docs.medusajs.com/api/admin#inventory-items_postinventoryitemsidlocationlevelsbatch)
|
||||
* API route.
|
||||
*
|
||||
*
|
||||
* @deprecated Use `batchInventoryItemLocationLevels` instead.
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param body - The inventory levels to create or delete.
|
||||
* @param query - Configure the fields to retrieve in the inventory item.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.batchUpdateLevels("iitem_123", {
|
||||
* create: [{
|
||||
* location_id: "sloc_123",
|
||||
* stocked_quantity: 10
|
||||
* }],
|
||||
* delete: ["sloc_123"]
|
||||
* delete: ["ilvl_123"]
|
||||
* })
|
||||
* .then(({ inventory_item }) => {
|
||||
* console.log(inventory_item)
|
||||
* .then(({ created, updated, deleted }) => {
|
||||
* console.log(created, updated, deleted)
|
||||
* })
|
||||
*/
|
||||
async batchUpdateLevels(
|
||||
id: string,
|
||||
body: HttpTypes.AdminBatchUpdateInventoryLevelLocation,
|
||||
body: HttpTypes.AdminBatchInventoryItemLocationLevels,
|
||||
query?: SelectParams,
|
||||
headers?: ClientHeaders
|
||||
) {
|
||||
return await this.client.fetch<HttpTypes.AdminInventoryItemResponse>(
|
||||
return await this.client.fetch<HttpTypes.AdminBatchInventoryItemLocationLevelsResponse>(
|
||||
`/admin/inventory-items/${id}/location-levels/batch`,
|
||||
{
|
||||
method: "POST",
|
||||
@@ -389,4 +391,75 @@ export class InventoryItem {
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* This method manages the inventory levels of an inventory item. It sends a request to the
|
||||
* [Manage Inventory Levels](https://docs.medusajs.com/api/admin#inventory-items_postinventoryitemsidlocationlevelsbatch)
|
||||
* API route.
|
||||
*
|
||||
* @param id - The inventory item's ID.
|
||||
* @param body - The inventory levels to create, update or delete, and an optional `force` flag.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.batchInventoryItemLocationLevels("iitem_123", {
|
||||
* create: [{
|
||||
* location_id: "sloc_123",
|
||||
* stocked_quantity: 10
|
||||
* }],
|
||||
* delete: ["ilvl_123"]
|
||||
* })
|
||||
* .then(({ created, updated, deleted }) => {
|
||||
* console.log(created, updated, deleted)
|
||||
* })
|
||||
*/
|
||||
async batchInventoryItemLocationLevels(
|
||||
id: string,
|
||||
body: HttpTypes.AdminBatchInventoryItemLocationLevels,
|
||||
headers?: ClientHeaders
|
||||
) {
|
||||
return await this.client.fetch<HttpTypes.AdminBatchInventoryItemLocationLevelsResponse>(
|
||||
`/admin/inventory-items/${id}/location-levels/batch`,
|
||||
{
|
||||
method: "POST",
|
||||
headers,
|
||||
body,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* This method manages the inventory levels of multiple inventory items.
|
||||
*
|
||||
* @param body - The inventory levels to create, update or delete, and an optional `force` flag.
|
||||
* @param headers - Headers to pass in the request
|
||||
* @returns The inventory item's details.
|
||||
*
|
||||
* @example
|
||||
* sdk.admin.inventoryItem.batchInventoryItemsLocationLevels({
|
||||
* create: [{
|
||||
* inventory_item_id: "iitem_123",
|
||||
* location_id: "sloc_123",
|
||||
* stocked_quantity: 10
|
||||
* }],
|
||||
* delete: ["ilvl_123"]
|
||||
* })
|
||||
* .then(({ created, updated, deleted }) => {
|
||||
* console.log(created, updated, deleted)
|
||||
* })
|
||||
*/
|
||||
async batchInventoryItemsLocationLevels(
|
||||
body: HttpTypes.AdminBatchInventoryItemsLocationLevels,
|
||||
headers?: ClientHeaders
|
||||
) {
|
||||
return await this.client.fetch<HttpTypes.AdminBatchInventoryItemsLocationLevelsResponse>(
|
||||
`/admin/inventory-items/location-levels/batch`,
|
||||
{
|
||||
method: "POST",
|
||||
headers,
|
||||
body,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user