saleor-dashboard/src/attributes/urls.ts

63 lines
1.8 KiB
TypeScript
Raw Normal View History

2019-08-09 10:17:04 +00:00
import { stringify as stringifyQs } from "qs";
import urlJoin from "url-join";
2019-09-10 15:32:47 +00:00
import {
ActiveTab,
BulkAction,
Dialog,
Filters,
Pagination,
SingleAction,
2019-12-17 17:13:56 +00:00
Sort,
2019-09-10 15:32:47 +00:00
TabActionDialog
} from "../types";
2019-08-09 10:17:04 +00:00
export const attributeSection = "/attributes/";
2019-09-10 15:32:47 +00:00
export enum AttributeListUrlFiltersEnum {
query = "query"
}
export type AttributeListUrlFilters = Filters<AttributeListUrlFiltersEnum>;
export type AttributeListUrlDialog = "remove" | TabActionDialog;
2019-12-17 17:13:56 +00:00
export enum AttributeListUrlSortField {
name = "name",
slug = "slug",
visible = "visible",
searchable = "searchable",
useInFacetedSearch = "use-in-faceted-search"
}
export type AttributeListUrlSort = Sort<AttributeListUrlSortField>;
2019-09-10 15:32:47 +00:00
export type AttributeListUrlQueryParams = ActiveTab &
AttributeListUrlFilters &
2019-12-17 17:13:56 +00:00
AttributeListUrlSort &
2019-09-10 15:32:47 +00:00
BulkAction &
2019-08-09 10:17:04 +00:00
Dialog<AttributeListUrlDialog> &
Pagination;
export const attributeListPath = attributeSection;
export const attributeListUrl = (params?: AttributeListUrlQueryParams) =>
attributeListPath + "?" + stringifyQs(params);
export type AttributeAddUrlDialog =
| "add-value"
| "edit-value"
| "remove-value"
| "remove-values";
export type AttributeAddUrlQueryParams = Dialog<AttributeAddUrlDialog> &
SingleAction;
export const attributeAddPath = urlJoin(attributeSection, "add");
export const attributeAddUrl = (params?: AttributeAddUrlQueryParams) =>
attributeAddPath + "?" + stringifyQs(params);
export type AttributeUrlDialog =
| "add-value"
| "edit-value"
| "remove"
| "remove-value"
| "remove-values";
export type AttributeUrlQueryParams = BulkAction &
Dialog<AttributeUrlDialog> &
SingleAction;
export const attributePath = (id: string) => urlJoin(attributeSection, id);
export const attributeUrl = (id: string, params?: AttributeUrlQueryParams) =>
attributePath(encodeURIComponent(id)) + "?" + stringifyQs(params);