@vendure/dashboard 3.3.6-master-202507021511 → 3.3.6-master-202507030648
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -4
- package/dist/plugin/vite-plugin-config.js +4 -2
- package/package.json +4 -4
- package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +1 -1
- package/src/app/routes/_authenticated/_channels/components/channel-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_collections/components/collection-contents-table.tsx +1 -1
- package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_countries/components/country-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +1 -1
- package/src/app/routes/_authenticated/_customers/components/customer-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +1 -1
- package/src/app/routes/_authenticated/_customers/components/customer-order-table.tsx +1 -1
- package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +1 -1
- package/src/app/routes/_authenticated/_facets/components/edit-facet-value.tsx +1 -1
- package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +1 -1
- package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/money-gross-net.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/order-address.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/order-history/order-history.tsx +6 -1
- package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +3 -3
- package/src/app/routes/_authenticated/_orders/components/order-table.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +2 -2
- package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +1 -1
- package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +4 -1
- package/src/app/routes/_authenticated/_products/components/option-value-input.tsx +5 -1
- package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +6 -1
- package/src/app/routes/_authenticated/_promotions/components/promotion-actions-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_promotions/components/promotion-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_roles/components/expandable-permissions.tsx +1 -1
- package/src/app/routes/_authenticated/_roles/components/permissions-grid.tsx +1 -1
- package/src/app/routes/_authenticated/_roles/components/role-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_sellers/components/seller-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx +1 -1
- package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx +1 -2
- package/src/app/routes/_authenticated/_system/components/payload-dialog.tsx +1 -1
- package/src/app/routes/_authenticated/_tax-categories/components/tax-category-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_tax-rates/components/tax-rate-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_zones/components/zone-bulk-actions.tsx +1 -1
- package/src/app/routes/_authenticated/_zones/components/zone-countries-sheet.tsx +1 -1
- package/src/app/routes/_authenticated/_zones/components/zone-countries-table.tsx +1 -1
- package/src/app/routes/_authenticated/index.tsx +1 -1
- package/src/lib/components/data-display/boolean.tsx +1 -1
- package/src/lib/components/data-display/date-time.tsx +1 -1
- package/src/lib/components/data-display/json.tsx +1 -1
- package/src/lib/components/data-input/affixed-input.tsx +1 -1
- package/src/lib/components/data-input/index.ts +11 -0
- package/src/lib/components/data-input/relation-input.tsx +156 -0
- package/src/lib/components/data-input/relation-selector.tsx +350 -0
- package/src/lib/components/data-input/{richt-text-input.tsx → rich-text-input.tsx} +1 -1
- package/src/lib/components/data-table/add-filter-menu.tsx +1 -1
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +1 -1
- package/src/lib/components/data-table/data-table-column-header.tsx +1 -1
- package/src/lib/components/data-table/data-table-filter-dialog.tsx +1 -1
- package/src/lib/components/data-table/data-table.tsx +1 -1
- package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +4 -1
- package/src/lib/components/data-table/filters/data-table-datetime-filter.tsx +4 -1
- package/src/lib/components/data-table/filters/data-table-id-filter.tsx +1 -1
- package/src/lib/components/data-table/filters/data-table-number-filter.tsx +5 -1
- package/src/lib/components/data-table/filters/data-table-string-filter.tsx +4 -1
- package/src/lib/components/data-table/refresh-button.tsx +4 -1
- package/src/lib/components/layout/nav-main.tsx +1 -1
- package/src/lib/components/shared/asset/asset-bulk-actions.tsx +1 -1
- package/src/lib/components/shared/asset/asset-preview-selector.tsx +1 -1
- package/src/lib/components/shared/asset/asset-preview.tsx +1 -1
- package/src/lib/components/shared/asset/asset-properties.tsx +1 -1
- package/src/lib/components/shared/asset/focal-point-control.tsx +1 -1
- package/src/lib/components/shared/channel-code-label.tsx +1 -1
- package/src/lib/components/shared/copyable-text.tsx +2 -3
- package/src/lib/components/shared/custom-fields-form.tsx +1 -1
- package/src/lib/components/shared/error-page.tsx +1 -1
- package/src/lib/components/shared/history-timeline/history-entry.tsx +7 -1
- package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +1 -1
- package/src/lib/components/shared/history-timeline/history-note-input.tsx +1 -1
- package/src/lib/components/shared/history-timeline/history-timeline.tsx +1 -1
- package/src/lib/components/shared/option-value-input.tsx +1 -1
- package/src/lib/components/shared/paginated-list-data-table.tsx +1 -1
- package/src/lib/components/shared/permission-guard.tsx +1 -1
- package/src/lib/components/shared/product-variant-selector.tsx +1 -1
- package/src/lib/components/shared/role-code-label.tsx +1 -1
- package/src/lib/components/shared/stock-level-label.tsx +5 -5
- package/src/lib/components/shared/tax-category-selector.tsx +1 -1
- package/src/lib/components/shared/zone-selector.tsx +1 -1
- package/src/lib/framework/alert/alert-extensions.tsx +2 -3
- package/src/lib/framework/alert/alert-item.tsx +2 -1
- package/src/lib/framework/dashboard-widget/base-widget.tsx +2 -10
- package/src/lib/framework/dashboard-widget/widget-extensions.tsx +1 -1
- package/src/lib/framework/data-table/data-table-extensions.ts +1 -1
- package/src/lib/framework/extension-api/extension-api-types.ts +0 -3
- package/src/lib/framework/extension-api/types/data-table.ts +25 -2
- package/src/lib/framework/extension-api/types/widgets.ts +7 -4
- package/src/lib/framework/layout-engine/location-wrapper.tsx +4 -1
- package/src/lib/framework/layout-engine/page-layout.tsx +16 -9
- package/src/lib/framework/page/list-page.tsx +2 -8
- package/src/lib/framework/registry/registry-types.ts +7 -7
- package/src/lib/graphql/graphql-env.d.ts +31 -14
- package/src/lib/index.ts +7 -12
- package/src/lib/lib/trans.tsx +3 -3
- package/src/lib/providers/auth.tsx +1 -1
- package/src/lib/providers/channel-provider.tsx +1 -1
- package/src/lib/providers/theme-provider.tsx +2 -3
- package/vite/vite-plugin-config.ts +2 -1
- package/src/lib/framework/alert/types.ts +0 -13
- package/src/lib/framework/dashboard-widget/types.ts +0 -22
- package/src/lib/framework/data-table/data-table-types.ts +0 -25
package/README.md
CHANGED
|
@@ -1,13 +1,50 @@
|
|
|
1
1
|
# Vendure Dashboard
|
|
2
2
|
|
|
3
|
-
This is
|
|
4
|
-
|
|
5
|
-
Current status: early work in progress
|
|
3
|
+
This is a React-based admin dashboard for Vendure. It is a standalone application that can be extended to suit the
|
|
4
|
+
needs of any Vendure project.
|
|
6
5
|
|
|
7
6
|
## Development
|
|
8
7
|
|
|
9
8
|
Run `npx vite` to start Vite in dev mode.
|
|
10
9
|
|
|
10
|
+
### Note on internal `@/vdb` imports
|
|
11
|
+
|
|
12
|
+
You will notice that the dashboard uses internal Vendure Dashboard imports prefixed with `@/vdb`. This is adapted from the
|
|
13
|
+
convention of Shadcn which uses a `@/*` path alias for internal imports.
|
|
14
|
+
|
|
15
|
+
**Why not just use relative imports?**
|
|
16
|
+
|
|
17
|
+
The problem with using relative imports is that they are handled differently by Vite when compiling the dashboard. This
|
|
18
|
+
manifests as things like React Context not working correctly. The underlying reason is that Vite will selectively
|
|
19
|
+
pre-compile source code and mixing the imports between alias and relative can result in 2 "versions" of the same code
|
|
20
|
+
being loaded, which causes issues with React Context and other things that rely on a single instance of a module.
|
|
21
|
+
|
|
22
|
+
For this reason, try to use the `@/vdb` alias for all internal Vendure Dashboard imports to the "src/lib" directory.
|
|
23
|
+
|
|
24
|
+
This is especially import for hooks (since many of them use React Context) and there is even a pre-commit hook
|
|
25
|
+
that will run [a script](./scripts/check-internal-imports.js) to ensure that you are not using relative imports for
|
|
26
|
+
internal Vendure Dashboard code.
|
|
27
|
+
|
|
28
|
+
**Type Safety for Consumers**
|
|
29
|
+
|
|
30
|
+
Because we ship source code in the npm package, consumers need to tell TypeScript how to resolve these internal
|
|
31
|
+
imports by adding the path alias to _their_ `tsconfig.json` file.
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"compilerOptions": {
|
|
36
|
+
"paths": {
|
|
37
|
+
"@/vdb/*": [
|
|
38
|
+
"./node_modules/@vendure/dashboard/src/lib/*"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Note: even without that path alias, the vite compilation will still work, but TypeScript types will not resolve correctly
|
|
46
|
+
when developing dashboard extensions.
|
|
47
|
+
|
|
11
48
|
## Testing
|
|
12
49
|
|
|
13
|
-
Run `npm run test` to run tests once, or `npx vitest` to run tests in watch mode
|
|
50
|
+
Run `npm run test` to run tests once, or `npx vitest` to run tests in watch mode
|
|
@@ -7,7 +7,7 @@ export function viteConfigPlugin({ packageRoot }) {
|
|
|
7
7
|
// Only set the vite `root` to the dashboard package when running the dev server.
|
|
8
8
|
// During a production build we still need to reference the dashboard source which
|
|
9
9
|
// lives in `node_modules`, but we don't want the build output to be emitted in there.
|
|
10
|
-
// Therefore we set `root` only for `serve` and, for `build`, we instead make sure that
|
|
10
|
+
// Therefore, we set `root` only for `serve` and, for `build`, we instead make sure that
|
|
11
11
|
// an `outDir` **outside** of `node_modules` is used (defaulting to the current working
|
|
12
12
|
// directory if the user did not provide one already).
|
|
13
13
|
config.root = packageRoot;
|
|
@@ -26,7 +26,9 @@ export function viteConfigPlugin({ packageRoot }) {
|
|
|
26
26
|
config.build = Object.assign(Object.assign({}, buildConfig), { outDir: normalizedOutDir });
|
|
27
27
|
}
|
|
28
28
|
config.resolve = {
|
|
29
|
-
alias: Object.assign(Object.assign({}, ((_c = (_b = config.resolve) === null || _b === void 0 ? void 0 : _b.alias) !== null && _c !== void 0 ? _c : {})), {
|
|
29
|
+
alias: Object.assign(Object.assign({}, ((_c = (_b = config.resolve) === null || _b === void 0 ? void 0 : _b.alias) !== null && _c !== void 0 ? _c : {})), {
|
|
30
|
+
// See the readme for an explanation of this alias.
|
|
31
|
+
'@/vdb': path.resolve(packageRoot, './src/lib'), '@/graphql': path.resolve(packageRoot, './src/lib/graphql') }),
|
|
30
32
|
};
|
|
31
33
|
// This is required to prevent Vite from pre-bundling the
|
|
32
34
|
// dashboard source when it resides in node_modules.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vendure/dashboard",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "3.3.6-master-
|
|
4
|
+
"version": "3.3.6-master-202507030648",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
"@types/react-dom": "^19.0.4",
|
|
87
87
|
"@types/react-grid-layout": "^1.3.5",
|
|
88
88
|
"@uidotdev/usehooks": "^2.4.1",
|
|
89
|
-
"@vendure/common": "^3.3.6-master-
|
|
90
|
-
"@vendure/core": "^3.3.6-master-
|
|
89
|
+
"@vendure/common": "^3.3.6-master-202507030648",
|
|
90
|
+
"@vendure/core": "^3.3.6-master-202507030648",
|
|
91
91
|
"@vitejs/plugin-react": "^4.3.4",
|
|
92
92
|
"awesome-graphql-client": "^2.1.0",
|
|
93
93
|
"class-variance-authority": "^0.7.1",
|
|
@@ -130,5 +130,5 @@
|
|
|
130
130
|
"lightningcss-linux-arm64-musl": "^1.29.3",
|
|
131
131
|
"lightningcss-linux-x64-musl": "^1.29.1"
|
|
132
132
|
},
|
|
133
|
-
"gitHead": "
|
|
133
|
+
"gitHead": "04f25e9d0bd06d8031d2f5dbc4373ec0e322f535"
|
|
134
134
|
}
|
package/src/app/routes/_authenticated/_administrators/components/administrator-bulk-actions.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/
|
|
1
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
2
2
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
3
|
import { deleteAdministratorsDocument } from '../administrators.graphql.js';
|
|
4
4
|
|
package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx
CHANGED
|
@@ -28,7 +28,7 @@ interface RolePermissionsDisplayProps {
|
|
|
28
28
|
value: string[];
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function RolePermissionsDisplay({ value = [] }: RolePermissionsDisplayProps) {
|
|
31
|
+
export function RolePermissionsDisplay({ value = [] }: Readonly<RolePermissionsDisplayProps>) {
|
|
32
32
|
const { i18n } = useLingui();
|
|
33
33
|
const groupedPermissions = useGroupedPermissions();
|
|
34
34
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
2
1
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
2
|
import { deleteChannelsDocument } from '../channels.graphql.js';
|
|
3
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
4
4
|
|
|
5
5
|
export const DeleteChannelsBulkAction: BulkActionComponent<any> = ({ selection, table }) => {
|
|
6
6
|
return (
|
|
@@ -2,9 +2,8 @@ import { useQueryClient } from '@tanstack/react-query';
|
|
|
2
2
|
|
|
3
3
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
4
4
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
5
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
6
5
|
import { api } from '@/vdb/graphql/api.js';
|
|
7
|
-
import { useChannel } from '@/vdb/index.js';
|
|
6
|
+
import { BulkActionComponent, useChannel } from '@/vdb/index.js';
|
|
8
7
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
9
8
|
import { DuplicateBulkAction } from '../../../../common/duplicate-bulk-action.js';
|
|
10
9
|
import {
|
|
@@ -28,7 +28,7 @@ export interface CollectionContentsTableProps {
|
|
|
28
28
|
collectionId?: string;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function CollectionContentsTable({ collectionId }: CollectionContentsTableProps) {
|
|
31
|
+
export function CollectionContentsTable({ collectionId }: Readonly<CollectionContentsTableProps>) {
|
|
32
32
|
const [sorting, setSorting] = useState<SortingState>([]);
|
|
33
33
|
const [page, setPage] = useState(1);
|
|
34
34
|
const [pageSize, setPageSize] = useState(10);
|
package/src/app/routes/_authenticated/_collections/components/collection-filters-selector.tsx
CHANGED
|
@@ -19,7 +19,7 @@ export interface CollectionFiltersSelectorProps {
|
|
|
19
19
|
onChange: (filters: ConfigurableOperationInputType[]) => void;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export function CollectionFiltersSelector({ value, onChange }: CollectionFiltersSelectorProps) {
|
|
22
|
+
export function CollectionFiltersSelector({ value, onChange }: Readonly<CollectionFiltersSelectorProps>) {
|
|
23
23
|
const { data: filtersData } = useQuery(getCollectionFiltersQueryOptions);
|
|
24
24
|
|
|
25
25
|
const filters = filtersData?.collectionFilters;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/
|
|
1
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
2
2
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
3
|
import { deleteCountriesDocument } from '../countries.graphql.js';
|
|
4
4
|
|
package/src/app/routes/_authenticated/_customer-groups/components/customer-group-bulk-actions.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/
|
|
1
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
2
2
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
3
|
import { deleteCustomerGroupsDocument } from '../customer-groups.graphql.js';
|
|
4
4
|
|
|
@@ -58,7 +58,7 @@ interface CustomerAddressFormProps {
|
|
|
58
58
|
onCancel?: () => void;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
export function CustomerAddressForm({ address, onSubmit, onCancel }: CustomerAddressFormProps) {
|
|
61
|
+
export function CustomerAddressForm({ address, onSubmit, onCancel }: Readonly<CustomerAddressFormProps>) {
|
|
62
62
|
const { i18n } = useLingui();
|
|
63
63
|
|
|
64
64
|
// Fetch available countries
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/
|
|
1
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
2
2
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
3
|
import { deleteCustomersDocument } from '../customers.graphql.js';
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ interface CustomerHistoryContainerProps {
|
|
|
10
10
|
customerId: string;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function CustomerHistoryContainer({ customerId }: CustomerHistoryContainerProps) {
|
|
13
|
+
export function CustomerHistoryContainer({ customerId }: Readonly<CustomerHistoryContainerProps>) {
|
|
14
14
|
const {
|
|
15
15
|
historyEntries,
|
|
16
16
|
customer,
|
|
@@ -11,7 +11,7 @@ interface CustomerOrderTableProps {
|
|
|
11
11
|
customerId: string;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export function CustomerOrderTable({ customerId }: CustomerOrderTableProps) {
|
|
14
|
+
export function CustomerOrderTable({ customerId }: Readonly<CustomerOrderTableProps>) {
|
|
15
15
|
const [page, setPage] = useState(1);
|
|
16
16
|
const [pageSize, setPageSize] = useState(10);
|
|
17
17
|
const [sorting, setSorting] = useState<SortingState>([{ id: 'orderPlacedAt', desc: true }]);
|
|
@@ -8,7 +8,7 @@ export interface CustomerStatusBadgeProps {
|
|
|
8
8
|
user?: { verified: boolean } | null;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export function CustomerStatusBadge({ user }: CustomerStatusBadgeProps) {
|
|
11
|
+
export function CustomerStatusBadge({ user }: Readonly<CustomerStatusBadgeProps>) {
|
|
12
12
|
const status = user ? (user.verified ? 'verified' : 'registered') : 'guest';
|
|
13
13
|
return (
|
|
14
14
|
<Badge variant="outline">
|
|
@@ -40,7 +40,7 @@ export interface EditFacetValueProps {
|
|
|
40
40
|
onSuccess?: () => void;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export function EditFacetValue({ facetValueId, onSuccess }: EditFacetValueProps) {
|
|
43
|
+
export function EditFacetValue({ facetValueId, onSuccess }: Readonly<EditFacetValueProps>) {
|
|
44
44
|
const {
|
|
45
45
|
settings: { contentLanguage },
|
|
46
46
|
} = useUserSettings();
|
|
@@ -2,10 +2,9 @@ import { toast } from 'sonner';
|
|
|
2
2
|
|
|
3
3
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
4
4
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
5
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
6
5
|
import { api } from '@/vdb/graphql/api.js';
|
|
7
6
|
import { ResultOf } from '@/vdb/graphql/graphql.js';
|
|
8
|
-
import { useChannel } from '@/vdb/index.js';
|
|
7
|
+
import { BulkActionComponent, useChannel } from '@/vdb/index.js';
|
|
9
8
|
import { useLingui } from '@/vdb/lib/trans.js';
|
|
10
9
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
11
10
|
import { DuplicateBulkAction } from '../../../../common/duplicate-bulk-action.js';
|
|
@@ -17,7 +17,7 @@ export interface FacetValuesSheetProps {
|
|
|
17
17
|
children?: React.ReactNode;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export function FacetValuesSheet({ facetName, facetId, children }: FacetValuesSheetProps) {
|
|
20
|
+
export function FacetValuesSheet({ facetName, facetId, children }: Readonly<FacetValuesSheetProps>) {
|
|
21
21
|
return (
|
|
22
22
|
<Sheet>
|
|
23
23
|
<SheetTrigger asChild>
|
|
@@ -28,7 +28,7 @@ export interface FacetValuesTableProps {
|
|
|
28
28
|
facetId: string;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function FacetValuesTable({ facetId }: FacetValuesTableProps) {
|
|
31
|
+
export function FacetValuesTable({ facetId }: Readonly<FacetValuesTableProps>) {
|
|
32
32
|
const [sorting, setSorting] = useState<SortingState>([]);
|
|
33
33
|
const [page, setPage] = useState(1);
|
|
34
34
|
const [pageSize, setPageSize] = useState(10);
|
|
@@ -31,7 +31,7 @@ interface CustomerAddressSelectorProps {
|
|
|
31
31
|
onSelect: (address: ResultOf<typeof addressFragment>) => void;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
export function CustomerAddressSelector({ customerId, onSelect }: CustomerAddressSelectorProps) {
|
|
34
|
+
export function CustomerAddressSelector({ customerId, onSelect }: Readonly<CustomerAddressSelectorProps>) {
|
|
35
35
|
const { i18n } = useLingui();
|
|
36
36
|
const [open, setOpen] = useState(false);
|
|
37
37
|
|
|
@@ -6,7 +6,7 @@ export interface MoneyGrossNetProps {
|
|
|
6
6
|
currencyCode: string;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export function MoneyGrossNet({ priceWithTax, price, currencyCode }: MoneyGrossNetProps) {
|
|
9
|
+
export function MoneyGrossNet({ priceWithTax, price, currencyCode }: Readonly<MoneyGrossNetProps>) {
|
|
10
10
|
return (
|
|
11
11
|
<div className="flex flex-col gap-1">
|
|
12
12
|
<div>
|
|
@@ -5,7 +5,7 @@ import { orderAddressFragment } from '../orders.graphql.js';
|
|
|
5
5
|
|
|
6
6
|
type OrderAddress = ResultOf<typeof orderAddressFragment>;
|
|
7
7
|
|
|
8
|
-
export function OrderAddress({ address }: { address?: OrderAddress }) {
|
|
8
|
+
export function OrderAddress({ address }: Readonly<{ address?: OrderAddress }>) {
|
|
9
9
|
if (!address) {
|
|
10
10
|
return null;
|
|
11
11
|
}
|
package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx
CHANGED
|
@@ -10,7 +10,7 @@ interface OrderHistoryContainerProps {
|
|
|
10
10
|
orderId: string;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function OrderHistoryContainer({ orderId }: OrderHistoryContainerProps) {
|
|
13
|
+
export function OrderHistoryContainer({ orderId }: Readonly<OrderHistoryContainerProps>) {
|
|
14
14
|
const {
|
|
15
15
|
historyEntries,
|
|
16
16
|
order,
|
|
@@ -17,7 +17,12 @@ interface OrderHistoryProps {
|
|
|
17
17
|
onDeleteNote?: (entryId: string) => void;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export function OrderHistory({
|
|
20
|
+
export function OrderHistory({
|
|
21
|
+
historyEntries,
|
|
22
|
+
onAddNote,
|
|
23
|
+
onUpdateNote,
|
|
24
|
+
onDeleteNote,
|
|
25
|
+
}: Readonly<OrderHistoryProps>) {
|
|
21
26
|
const getTimelineIcon = (entry: OrderHistoryProps['historyEntries'][0]) => {
|
|
22
27
|
switch (entry.type) {
|
|
23
28
|
case 'ORDER_PAYMENT_TRANSITION':
|
|
@@ -10,7 +10,7 @@ interface OrderLineCustomFieldsFormProps {
|
|
|
10
10
|
form: UseFormReturn<any>;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function OrderLineCustomFieldsForm({ onUpdate, form }: OrderLineCustomFieldsFormProps) {
|
|
13
|
+
export function OrderLineCustomFieldsForm({ onUpdate, form }: Readonly<OrderLineCustomFieldsFormProps>) {
|
|
14
14
|
const onSubmit = (values: any) => {
|
|
15
15
|
onUpdate(values.input?.customFields);
|
|
16
16
|
};
|
|
@@ -11,14 +11,14 @@ export interface OrderTableTotalsProps {
|
|
|
11
11
|
columnCount: number;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export function OrderTableTotals({ order, columnCount }: OrderTableTotalsProps) {
|
|
14
|
+
export function OrderTableTotals({ order, columnCount }: Readonly<OrderTableTotalsProps>) {
|
|
15
15
|
const currencyCode = order.currencyCode;
|
|
16
16
|
|
|
17
17
|
return (
|
|
18
18
|
<>
|
|
19
19
|
{order.discounts?.length > 0
|
|
20
|
-
? order.discounts.map(discount => (
|
|
21
|
-
<TableRow>
|
|
20
|
+
? order.discounts.map((discount, index) => (
|
|
21
|
+
<TableRow key={`${discount.description}-${index}`}>
|
|
22
22
|
<TableCell colSpan={columnCount - 1} className="h-12">
|
|
23
23
|
<Trans>Discount</Trans>: {discount.description}
|
|
24
24
|
</TableCell>
|
|
@@ -20,7 +20,7 @@ export interface OrderTableProps {
|
|
|
20
20
|
order: OrderFragment;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export function OrderTable({ order }: OrderTableProps) {
|
|
23
|
+
export function OrderTable({ order }: Readonly<OrderTableProps>) {
|
|
24
24
|
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});
|
|
25
25
|
|
|
26
26
|
const currencyCode = order.currencyCode;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/vdb/components/ui/table.js';
|
|
2
2
|
import { useLocalFormat } from '@/vdb/hooks/use-local-format.js';
|
|
3
|
-
import { Trans } from '@/vdb/lib/trans';
|
|
3
|
+
import { Trans } from '@/vdb/lib/trans.js';
|
|
4
4
|
import { ResultOf } from 'gql.tada';
|
|
5
5
|
import { orderDetailFragment } from '../orders.graphql.js';
|
|
6
6
|
|
|
7
|
-
export function OrderTaxSummary({ order }: { order: ResultOf<typeof orderDetailFragment> }) {
|
|
7
|
+
export function OrderTaxSummary({ order }: Readonly<{ order: ResultOf<typeof orderDetailFragment> }>) {
|
|
8
8
|
const { formatCurrency } = useLocalFormat();
|
|
9
9
|
return (
|
|
10
10
|
<div>
|
|
@@ -8,7 +8,7 @@ type PaymentDetailsProps = {
|
|
|
8
8
|
currencyCode: string;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
export function PaymentDetails({ payment, currencyCode }: PaymentDetailsProps) {
|
|
11
|
+
export function PaymentDetails({ payment, currencyCode }: Readonly<PaymentDetailsProps>) {
|
|
12
12
|
const { formatCurrency, formatDate } = useLocalFormat();
|
|
13
13
|
const t = (key: string) => key;
|
|
14
14
|
|
|
@@ -20,7 +20,7 @@ export function ShippingMethodSelector({
|
|
|
20
20
|
selectedShippingMethodId,
|
|
21
21
|
currencyCode,
|
|
22
22
|
onSelect,
|
|
23
|
-
}: ShippingMethodSelectorProps) {
|
|
23
|
+
}: Readonly<ShippingMethodSelectorProps>) {
|
|
24
24
|
return (
|
|
25
25
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
26
26
|
{eligibleShippingMethods?.length ? (
|
package/src/app/routes/_authenticated/_payment-methods/components/payment-handler-selector.tsx
CHANGED
|
@@ -33,7 +33,7 @@ interface PaymentHandlerSelectorProps {
|
|
|
33
33
|
onChange: (value: ConfigurableOperationInputType | undefined) => void;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export function PaymentHandlerSelector({ value, onChange }: PaymentHandlerSelectorProps) {
|
|
36
|
+
export function PaymentHandlerSelector({ value, onChange }: Readonly<PaymentHandlerSelectorProps>) {
|
|
37
37
|
const { data: handlersData } = useQuery({
|
|
38
38
|
queryKey: ['paymentMethodHandlers'],
|
|
39
39
|
queryFn: () => api.query(paymentHandlersDocument),
|
package/src/app/routes/_authenticated/_payment-methods/components/payment-method-bulk-actions.tsx
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
2
2
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
3
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
4
3
|
import { api } from '@/vdb/graphql/api.js';
|
|
5
|
-
import { useChannel } from '@/vdb/index.js';
|
|
4
|
+
import { BulkActionComponent, useChannel } from '@/vdb/index.js';
|
|
6
5
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
7
6
|
|
|
8
7
|
import {
|
package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx
CHANGED
|
@@ -5,9 +5,8 @@ import { DataTableBulkActionItem } from '@/vdb/components/data-table/data-table-
|
|
|
5
5
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
6
6
|
import { usePriceFactor } from '@/vdb/components/shared/assign-to-channel-dialog.js';
|
|
7
7
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
8
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
9
8
|
import { api } from '@/vdb/graphql/api.js';
|
|
10
|
-
import { useChannel, usePaginatedList } from '@/vdb/index.js';
|
|
9
|
+
import { BulkActionComponent, useChannel, usePaginatedList } from '@/vdb/index.js';
|
|
11
10
|
import { Trans } from '@/vdb/lib/trans.js';
|
|
12
11
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
13
12
|
|
|
@@ -97,7 +97,10 @@ interface CreateProductVariantsProps {
|
|
|
97
97
|
onChange?: ({ data }: { data: VariantConfiguration }) => void;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
export function CreateProductVariants({
|
|
100
|
+
export function CreateProductVariants({
|
|
101
|
+
currencyCode = 'USD',
|
|
102
|
+
onChange,
|
|
103
|
+
}: Readonly<CreateProductVariantsProps>) {
|
|
101
104
|
const { data: stockLocationsResult } = useQuery({
|
|
102
105
|
queryKey: ['stockLocations'],
|
|
103
106
|
queryFn: () => api.query(getStockLocationsDocument, { options: { take: 100 } }),
|
|
@@ -32,7 +32,11 @@ interface OptionValueInputProps {
|
|
|
32
32
|
disabled?: boolean;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
export function OptionValueInput({
|
|
35
|
+
export function OptionValueInput({
|
|
36
|
+
groupName,
|
|
37
|
+
groupIndex,
|
|
38
|
+
disabled = false,
|
|
39
|
+
}: Readonly<OptionValueInputProps>) {
|
|
36
40
|
const { control, watch } = useFormContext<FormValues>();
|
|
37
41
|
const { fields, append, remove } = useFieldArray({
|
|
38
42
|
control,
|
|
@@ -5,9 +5,8 @@ import { DataTableBulkActionItem } from '@/vdb/components/data-table/data-table-
|
|
|
5
5
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
6
6
|
import { usePriceFactor } from '@/vdb/components/shared/assign-to-channel-dialog.js';
|
|
7
7
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
8
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
9
8
|
import { api } from '@/vdb/graphql/api.js';
|
|
10
|
-
import { useChannel, usePaginatedList } from '@/vdb/index.js';
|
|
9
|
+
import { BulkActionComponent, useChannel, usePaginatedList } from '@/vdb/index.js';
|
|
11
10
|
import { Trans } from '@/vdb/lib/trans.js';
|
|
12
11
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
13
12
|
import { DuplicateBulkAction } from '../../../../common/duplicate-bulk-action.js';
|
|
@@ -33,7 +33,12 @@ interface ProductOptionSelectProps {
|
|
|
33
33
|
onCreateOption: (name: string) => void;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export function ProductOptionSelect({
|
|
36
|
+
export function ProductOptionSelect({
|
|
37
|
+
group,
|
|
38
|
+
value,
|
|
39
|
+
onChange,
|
|
40
|
+
onCreateOption,
|
|
41
|
+
}: Readonly<ProductOptionSelectProps>) {
|
|
37
42
|
const [open, setOpen] = useState(false);
|
|
38
43
|
const [newOptionInput, setNewOptionInput] = useState('');
|
|
39
44
|
const { i18n } = useLingui();
|
|
@@ -34,7 +34,7 @@ interface PromotionActionsSelectorProps {
|
|
|
34
34
|
onChange: (value: ConfigurableOperationInputType[]) => void;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
export function PromotionActionsSelector({ value, onChange }: PromotionActionsSelectorProps) {
|
|
37
|
+
export function PromotionActionsSelector({ value, onChange }: Readonly<PromotionActionsSelectorProps>) {
|
|
38
38
|
const { data: actionsData } = useQuery({
|
|
39
39
|
queryKey: ['promotionActions'],
|
|
40
40
|
queryFn: () => api.query(promotionActionsDocument),
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
2
2
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
3
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
4
3
|
import { api } from '@/vdb/graphql/api.js';
|
|
5
|
-
import { useChannel } from '@/vdb/index.js';
|
|
4
|
+
import { BulkActionComponent, useChannel } from '@/vdb/index.js';
|
|
6
5
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
7
6
|
import { DuplicateBulkAction } from '../../../../common/duplicate-bulk-action.js';
|
|
8
7
|
|
package/src/app/routes/_authenticated/_promotions/components/promotion-conditions-selector.tsx
CHANGED
|
@@ -34,7 +34,7 @@ interface PromotionConditionsSelectorProps {
|
|
|
34
34
|
onChange: (value: ConfigurableOperationInputType[]) => void;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
export function PromotionConditionsSelector({ value, onChange }: PromotionConditionsSelectorProps) {
|
|
37
|
+
export function PromotionConditionsSelector({ value, onChange }: Readonly<PromotionConditionsSelectorProps>) {
|
|
38
38
|
const { data: conditionsData } = useQuery({
|
|
39
39
|
queryKey: ['promotionConditions'],
|
|
40
40
|
queryFn: () => api.query(promotionConditionsDocument),
|
|
@@ -13,7 +13,7 @@ import { ResultOf } from 'gql.tada';
|
|
|
13
13
|
import { PlusIcon } from 'lucide-react';
|
|
14
14
|
import { roleItemFragment } from '../roles.graphql.js';
|
|
15
15
|
|
|
16
|
-
export function ExpandablePermissions({ role }: { role: ResultOf<typeof roleItemFragment> }) {
|
|
16
|
+
export function ExpandablePermissions({ role }: Readonly<{ role: ResultOf<typeof roleItemFragment> }>) {
|
|
17
17
|
const permissionsToPreview = role.permissions.slice(0, 3);
|
|
18
18
|
|
|
19
19
|
return (
|
|
@@ -18,7 +18,7 @@ interface PermissionsGridProps {
|
|
|
18
18
|
readonly?: boolean;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export function PermissionsGrid({ value, onChange, readonly = false }: PermissionsGridProps) {
|
|
21
|
+
export function PermissionsGrid({ value, onChange, readonly = false }: Readonly<PermissionsGridProps>) {
|
|
22
22
|
const { i18n } = useLingui();
|
|
23
23
|
const groupedPermissions = useGroupedPermissions();
|
|
24
24
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/
|
|
1
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
2
2
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
3
|
import { deleteRolesDocument } from '../roles.graphql.js';
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BulkActionComponent } from '@/vdb/framework/
|
|
1
|
+
import { BulkActionComponent } from '@/vdb/framework/extension-api/types/index.js';
|
|
2
2
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
3
3
|
import { deleteSellersDocument } from '../sellers.graphql.js';
|
|
4
4
|
|
package/src/app/routes/_authenticated/_shipping-methods/components/fulfillment-handler-selector.tsx
CHANGED
|
@@ -20,7 +20,7 @@ interface FulfillmentHandlerSelectorProps {
|
|
|
20
20
|
onChange: (value: string | undefined) => void;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export function FulfillmentHandlerSelector({ value, onChange }: FulfillmentHandlerSelectorProps) {
|
|
23
|
+
export function FulfillmentHandlerSelector({ value, onChange }: Readonly<FulfillmentHandlerSelectorProps>) {
|
|
24
24
|
const { data: fulfillmentHandlersData } = useQuery({
|
|
25
25
|
queryKey: ['fulfillmentHandlers'],
|
|
26
26
|
queryFn: () => api.query(fulfillmentHandlersDocument),
|
package/src/app/routes/_authenticated/_shipping-methods/components/shipping-calculator-selector.tsx
CHANGED
|
@@ -33,7 +33,7 @@ interface ShippingCalculatorSelectorProps {
|
|
|
33
33
|
onChange: (value: ConfigurableOperationInputType | undefined) => void;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export function ShippingCalculatorSelector({ value, onChange }: ShippingCalculatorSelectorProps) {
|
|
36
|
+
export function ShippingCalculatorSelector({ value, onChange }: Readonly<ShippingCalculatorSelectorProps>) {
|
|
37
37
|
const { data: calculatorsData } = useQuery({
|
|
38
38
|
queryKey: ['shippingCalculators'],
|
|
39
39
|
queryFn: () => api.query(shippingCalculatorsDocument),
|
package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-bulk-actions.tsx
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
2
2
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
3
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
4
3
|
import { api } from '@/vdb/graphql/api.js';
|
|
5
|
-
import { useChannel } from '@/vdb/index.js';
|
|
4
|
+
import { BulkActionComponent, useChannel } from '@/vdb/index.js';
|
|
6
5
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
7
6
|
|
|
8
7
|
import {
|
package/src/app/routes/_authenticated/_stock-locations/components/stock-location-bulk-actions.tsx
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AssignToChannelBulkAction } from '@/vdb/components/shared/assign-to-channel-bulk-action.js';
|
|
2
2
|
import { RemoveFromChannelBulkAction } from '@/vdb/components/shared/remove-from-channel-bulk-action.js';
|
|
3
|
-
import { BulkActionComponent } from '@/vdb/framework/data-table/data-table-types.js';
|
|
4
3
|
import { api } from '@/vdb/graphql/api.js';
|
|
5
|
-
import { useChannel } from '@/vdb/index.js';
|
|
4
|
+
import { BulkActionComponent, useChannel } from '@/vdb/index.js';
|
|
6
5
|
import { DeleteBulkAction } from '../../../../common/delete-bulk-action.js';
|
|
7
6
|
|
|
8
7
|
import {
|
|
@@ -16,7 +16,7 @@ type PayloadDialogProps = {
|
|
|
16
16
|
description?: string | React.ReactNode;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
export function PayloadDialog({ payload, trigger, title, description }: PayloadDialogProps) {
|
|
19
|
+
export function PayloadDialog({ payload, trigger, title, description }: Readonly<PayloadDialogProps>) {
|
|
20
20
|
return (
|
|
21
21
|
<Dialog>
|
|
22
22
|
<DialogTrigger asChild>{trigger}</DialogTrigger>
|