saleor-dashboard/src/shipping/components/ShippingZoneSettingsCard/ChannelsSection.tsx

68 lines
2.1 KiB
TypeScript
Raw Normal View History

Add channel shipping zones (#1015) * Add naked input option to SingleAutocompleteSelectField and update it's stories * Add new icons - chevron up, down & trash * Add deletable item component and stories * Add card add items footer component to be used in warehouses and product stocks assign * Update schema and types * Add shipping zones card components * Update channel details page form to also include shipping zones * Update makeTopLevelSearch hook files directory and add getSearchFetchMoreProps function to avoid extracting it manually every time * Update channels types & fragments * Move getDefaultNotifierSuccessErrorData function to useNotifier utils, update dir etc., also make order discount provider use it from the new dir * Add shippinh zone to channel update and create and add shipping zone search * Update messages * Fix types * Fix lint, types etc * Small refactor from review and quick fix styles of shipping zones card * Refactor a bit and update snapshots * Refactor a bit and update snapshots * Addd / refactor channels availability components * Add useChannelsWithProductVariants hook with utils and types * Add / refactor more channels availability components * Move avatar from table cell avatar to separate component for it to be usable outside of tables * Add channels with variants logic to product create and update pages & views * Refactor components to use updated channels availability components * Remove unnecessary comments * Update storybook * Update types * Update messages * Fix prices for variants / simple product not uodating properly * Post merge cleanup, update schema, types, etc. * Change shipping zone details warehouses card into settings card and add ability to assign channels to shipping zone * Update types * Update snapshots * Fix selecting / deselecting all channels in channels with variants modal * Fixes after review, some types changes etc. * Update snapshots * Small types fixes * Make price rates views use parent shipping method channels instead of all * Make price rates views use parent shipping method channels instead of all * Update types * Fix bugs * Fixes after review * Fix channels availability data submission * Fix lint * Fix variant pricing card showing not related channels * Fixes after review * Fix types * Hide unaviable variants in add products to draft order dialog * Fix channels with variants availability modal showing confirm button as enabled when it shouldn't * Fix types * Update semi checked icon to match old designs * Update types * Update channels icon in channels with variants availability * Fix product cypress test after product channels mutation changed * Fix trash and chevron down colors in dark mode * Fix shipping zones card footer not updating query after click away * Fix types in schema, add condition not to display shipping zones select in channel details if all zones have already been selected * Fix products adding in order draft dialog * Fix simple productupdate * Update snapshots after merge with master * Update messages * Fix product api request for cypress * Add missing test id * Fix selecting if product is simple -> form being submitted with empty data sometimes * Update snapshots, messages and add fix for invalid date at product update * Remove unnecessary imports * Fix failing test in saleor 2552 (#1061) * fix * fix * fix Co-authored-by: Jakub Majorek <majorek.jakub@gmail.com> Co-authored-by: Karolina <rakoczy.karolina@gmail.com>
2021-04-14 13:44:25 +00:00
import { useChannelsSearch } from "@saleor/channels/components/ChannelsAvailabilityDialog/utils";
import { Channels_channels } from "@saleor/channels/types/Channels";
import CardSpacer from "@saleor/components/CardSpacer";
import MultiAutocompleteSelectField, {
MultiAutocompleteChoiceType
} from "@saleor/components/MultiAutocompleteSelectField";
import { FormChange } from "@saleor/hooks/useForm";
import { mapNodeToChoice } from "@saleor/utils/maps";
import React from "react";
import { useIntl } from "react-intl";
import { defineMessages, FormattedMessage } from "react-intl";
const messages = defineMessages({
subtitle: {
defaultMessage:
"Assign channels to this shipping zone so we know which orders will be supported",
description: "ChannelsSection subtitle"
},
selectFieldLabel: {
defaultMessage: "Channel",
description: "ChannelsSection select field label",
id: "shippingZoneChannels.autocomplete.label"
},
selectFieldPlaceholder: {
defaultMessage: "Add Channel",
description: "ChannelsSection select field placeholder"
}
});
interface ChannelsSectionProps {
onChange: FormChange;
selectedChannels: string[];
allChannels?: Channels_channels[];
channelsDisplayValues: MultiAutocompleteChoiceType[];
}
const ChannelsSection: React.FC<ChannelsSectionProps> = ({
onChange,
allChannels = [],
selectedChannels,
channelsDisplayValues
}) => {
const { onQueryChange, filteredChannels } = useChannelsSearch(allChannels);
const intl = useIntl();
return (
<>
<FormattedMessage {...messages.subtitle} />
<CardSpacer />
<MultiAutocompleteSelectField
choices={mapNodeToChoice(filteredChannels)}
displayValues={channelsDisplayValues}
fetchChoices={onQueryChange}
hasMore={false}
label={intl.formatMessage(messages.selectFieldLabel)}
loading={false}
name="channels"
onChange={onChange}
placeholder={intl.formatMessage(messages.selectFieldPlaceholder)}
value={selectedChannels}
/>
</>
);
};
export default ChannelsSection;