import { DefaultButton, DirectionalHint, Icon, IconButton, Link, Stack, Text, TooltipHost } from "@fluentui/react"; import * as Constants from "Common/Constants"; import { getPartitionKeyName, getPartitionKeyPlaceHolder, getPartitionKeyTooltipText, } from "Explorer/Panes/AddCollectionPanel/AddCollectionPanelUtility"; import React from "react"; export interface PartitionKeyComponentProps { partitionKey?: string; setPartitionKey: React.Dispatch>; subPartitionKeys: string[]; setSubPartitionKeys: React.Dispatch>; useHashV1: boolean; } export const PartitionKeyComponent = (props: PartitionKeyComponentProps): JSX.Element => { const { partitionKey, setPartitionKey, subPartitionKeys, setSubPartitionKeys, useHashV1 } = props; const partitionKeyValueOnChange = (value: string): void => { if (!partitionKey && !value.startsWith("/")) { setPartitionKey("/" + value); } else { setPartitionKey(value); } }; const subPartitionKeysValueOnChange = (value: string, index: number): void => { const updatedSubPartitionKeys: string[] = [...subPartitionKeys]; if (!updatedSubPartitionKeys[index] && !value.startsWith("/")) { updatedSubPartitionKeys[index] = "/" + value.trim(); } else { updatedSubPartitionKeys[index] = value.trim(); } setSubPartitionKeys(updatedSubPartitionKeys); }; return ( Partition key ) => { partitionKeyValueOnChange(event.target.value); }} /> {subPartitionKeys.map((subPartitionKey: string, subPartitionKeyIndex: number) => { return (
0 ? 1 : 0} className="panelTextField" autoComplete="off" placeholder={getPartitionKeyPlaceHolder(subPartitionKeyIndex)} aria-label={getPartitionKeyName()} pattern={".*"} title={""} value={subPartitionKey} onChange={(event: React.ChangeEvent) => { subPartitionKeysValueOnChange(event.target.value, subPartitionKeyIndex); }} /> { const updatedSubPartitionKeys = subPartitionKeys.filter( (_, subPartitionKeyIndexToRemove) => subPartitionKeyIndex !== subPartitionKeyIndexToRemove, ); setSubPartitionKeys(updatedSubPartitionKeys); }} />
); })} {subPartitionKeys.length > 0 && ( This feature allows you to partition your data with up to three levels of keys for better data distribution. Requires .NET V3, Java V4 SDK, or preview JavaScript V3 SDK.{" "} Learn more )}
); };