Index: components/AdHocPartQueue/AdHocPartQueue.component.tsx
===================================================================
diff -u -r451cae9ef65528cd5cf450d91b614f6b90f3bcbc -r3f1c728b3341799d0c5c17a2b0c5d36f51a7b031
--- components/AdHocPartQueue/AdHocPartQueue.component.tsx (.../AdHocPartQueue.component.tsx) (revision 451cae9ef65528cd5cf450d91b614f6b90f3bcbc)
+++ components/AdHocPartQueue/AdHocPartQueue.component.tsx (.../AdHocPartQueue.component.tsx) (revision 3f1c728b3341799d0c5c17a2b0c5d36f51a7b031)
@@ -1,4 +1,4 @@
-import { EditOutlined, ExportOutlined, UndoOutlined } from '@ant-design/icons';
+import { CheckOutlined, EditOutlined, ExportOutlined, UndoOutlined } from '@ant-design/icons';
import { Alert, Button, Col, Input, notification, Row, Spin, Table } from 'antd';
import { useRowSelection } from 'lemans-common';
import { columnFilter, filterDropdown, onFilterVisibile } from 'lemans-common/components/FilterForm/FilterForm.helper';
@@ -14,6 +14,9 @@
import { AdHocPartQueueProps } from './AdHocPartQueue.types';
export const AdHocPartQueueComponent = ({
+ asSelector,
+ onSelect,
+ setRefresh,
loader,
partNumbers, updatePartNumbers,
fetchParts, parts, reset,
@@ -26,6 +29,17 @@
setSelectedParts([]);
};
+ const onSelectParts = (partNumbers: string[]) => {
+ if(onSelect) {
+ onSelect(partNumbers);
+ }
+ if(setRefresh) {
+ setRefresh(true);
+ }
+ setSelectedParts([]);
+ reset();
+ }
+
const actionBarOptions: IGenericActionBarOption[] = [
{
icon: ,
@@ -59,12 +73,25 @@
>}
{parts.length !== 0 && <>
-
+
+
+
+ {!!asSelector &&
+
+
+
+ }
+
+ {!asSelector &&
+
+ }
@@ -79,6 +106,14 @@
{featureToggle.isEU && }
+
+ {!!asSelector &&
+
+
+
+ }
>}
);
Index: components/AdHocPartQueue/AdHocPartQueue.types.ts
===================================================================
diff -u -r87df89b28344e49a43332b839631d8ad07ff557c -r3f1c728b3341799d0c5c17a2b0c5d36f51a7b031
--- components/AdHocPartQueue/AdHocPartQueue.types.ts (.../AdHocPartQueue.types.ts) (revision 87df89b28344e49a43332b839631d8ad07ff557c)
+++ components/AdHocPartQueue/AdHocPartQueue.types.ts (.../AdHocPartQueue.types.ts) (revision 3f1c728b3341799d0c5c17a2b0c5d36f51a7b031)
@@ -4,7 +4,9 @@
// What gets passed into the component from the parent as attributes
export declare interface IAdHocPartQueueInputProps {
-
+ asSelector?: boolean;
+ onSelect?: (partNumbers:string[]) => void;
+ setRefresh?: (value: React.SetStateAction) => void;
}
export declare interface IPartProps {
Index: components/PublicationCategoryParts/PublicationCategoryParts.component.tsx
===================================================================
diff -u -r70a024eadf29b5eaf86ddc25de3955e8fd8450f8 -r3f1c728b3341799d0c5c17a2b0c5d36f51a7b031
--- components/PublicationCategoryParts/PublicationCategoryParts.component.tsx (.../PublicationCategoryParts.component.tsx) (revision 70a024eadf29b5eaf86ddc25de3955e8fd8450f8)
+++ components/PublicationCategoryParts/PublicationCategoryParts.component.tsx (.../PublicationCategoryParts.component.tsx) (revision 3f1c728b3341799d0c5c17a2b0c5d36f51a7b031)
@@ -1,5 +1,5 @@
-import { CloseOutlined, CopyOutlined, DeleteOutlined } from '@ant-design/icons';
-import { Select, Spin, Table } from 'antd';
+import { CloseOutlined, CopyOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons';
+import { Button, Modal, Select, Spin, Table } from 'antd';
import { SelectValue } from 'antd/lib/select';
import { IPart } from 'lemans-api';
import { ICategory } from 'lemans-api/models/Category/category.types';
@@ -8,10 +8,11 @@
import { GenericActionBar } from 'lemans-common/components/GenericActionBar';
import { genericActionBarModal } from 'lemans-common/components/GenericActionBar/GenericActionBar.container';
import { GenericActionBarProps, IGenericActionBarOption, IGenericActionBarStateProps, Props } from 'lemans-common/components/GenericActionBar/GenericActionBar.types';
-import { useLoader } from 'lemans-common/libs/useToggle';
+import { useLoader, useToggle } from 'lemans-common/libs/useToggle';
import { service } from 'lemans-dashboard-common';
import moment from 'moment';
import React from 'react';
+import { AdHocPartQueue } from '../AdHocPartQueue';
import { IsDigiActiveFilter } from '../Filters/IsDigiActiveFilter';
import { PartStatusFilter } from '../Filters/PartStatusFilter';
import { PartBrandColumn, PartDetailsColumn } from '../PartList/PartColumns/PartColumns.component';
@@ -29,8 +30,11 @@
const [selectedParts, setSelectedParts] = React.useState([]);
const updateSelectedParts = (ids:React.Key[]) => {setSelectedParts(ids.map(id => `${id}`))};
-
+ const [refresh, setRefresh] = React.useState(false);
+ const adHocPartSelectorModal = useToggle();
+
const reload = () => {
+ adHocPartSelectorModal.off();
loader.start();
service.publicationCategory.parts.search(props.categoryId, filters)
.then(setParts)
@@ -49,7 +53,7 @@
return true;
}
- React.useEffect(reload, [filters, props.categoryId]);
+ React.useEffect(reload, [filters, props.categoryId, refresh]);
const onSortEnd = (src: IPart, dest:IPart, mode: "BEFORE" | "AFTER") => {
if(!!src.partNumber && !!dest.partNumber) {
@@ -163,7 +167,28 @@
];
return
-
+
+
+ Cancel,
+ ]}
+ title={'Ad hoc Part Selector'}
+ open={adHocPartSelectorModal.isOn}
+ onCancel={adHocPartSelectorModal.off}
+ width={"80%"}
+ destroyOnClose={true}
+ transitionName=""
+ maskTransitionName=""
+ >
+
+
+
- {props.label || <> Add Parts>}
+ {<> {props.label} > || <> Add Parts>}