diff --git a/packages/manager/.changeset/pr-13568-upcoming-features-1775671959206.md b/packages/manager/.changeset/pr-13568-upcoming-features-1775671959206.md new file mode 100644 index 00000000000..9296046d031 --- /dev/null +++ b/packages/manager/.changeset/pr-13568-upcoming-features-1775671959206.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Upcoming Features +--- + +Private Image Sharing: include public images in images table in Linode Rebuild dialog ([#13568](https://github.com/linode/manager/pull/13568)) diff --git a/packages/manager/src/components/ImageSelect/ImageSelectTable.tsx b/packages/manager/src/components/ImageSelect/ImageSelectTable.tsx index 46c5456320c..86e224ffd9e 100644 --- a/packages/manager/src/components/ImageSelect/ImageSelectTable.tsx +++ b/packages/manager/src/components/ImageSelect/ImageSelectTable.tsx @@ -56,6 +56,10 @@ interface Props { * Error message to display above the table, e.g. from form validation. */ errorText?: string; + /** + * Determines whether additional filtering of images should be applied, typically if there is a StackScript selected. + */ + filter?: (image: Image) => boolean; /** * Callback fired when the user selects an image row. */ @@ -79,6 +83,7 @@ export const ImageSelectTable = (props: Props) => { const { currentRoute, errorText, + filter, onSelect, pendoIDs, queryParamsPrefix, @@ -121,7 +126,7 @@ export const ImageSelectTable = (props: Props) => { }); const { - data: imagesData, + data: _imagesData, error: imagesError, isFetching, isLoading, @@ -129,11 +134,11 @@ export const ImageSelectTable = (props: Props) => { {}, { ...combinedFilter, - is_public: false, - type: 'manual', } ); + const imagesData = filter ? _imagesData?.filter(filter) : _imagesData; + const pagination = usePaginationV2({ clientSidePaginationData: imagesData, currentRoute, diff --git a/packages/manager/src/components/ImageSelect/ImageSelectTableRow.tsx b/packages/manager/src/components/ImageSelect/ImageSelectTableRow.tsx index 98dd251e9a4..b87aba40b6e 100644 --- a/packages/manager/src/components/ImageSelect/ImageSelectTableRow.tsx +++ b/packages/manager/src/components/ImageSelect/ImageSelectTableRow.tsx @@ -47,7 +47,7 @@ export const ImageSelectTableRow = (props: Props) => { id, image_sharing, label, - regions: imageRegions, + regions: _imageRegions, size, status, type, @@ -77,6 +77,8 @@ export const ImageSelectTableRow = (props: Props) => { return '—'; }; + const imageRegions = _imageRegions ?? []; // Failsafe for manual images whose `regions` property is null + const FormattedRegionList = () => ( {imageRegions.map((region: ImageRegion, idx) => { @@ -125,7 +127,9 @@ export const ImageSelectTableRow = (props: Props) => { ? pluralize('Region', 'Regions', imageRegions.length) : '—' } - tooltipText={} + tooltipText={ + imageRegions?.length > 0 ? : 'N/A' + } /> diff --git a/packages/manager/src/features/Linodes/LinodesDetail/LinodeRebuild/Image.tsx b/packages/manager/src/features/Linodes/LinodesDetail/LinodeRebuild/Image.tsx index 53b582e89c6..b356473981b 100644 --- a/packages/manager/src/features/Linodes/LinodesDetail/LinodeRebuild/Image.tsx +++ b/packages/manager/src/features/Linodes/LinodesDetail/LinodeRebuild/Image.tsx @@ -48,6 +48,7 @@ export const Image = (props: Props) => { : '/linodes') as LinkProps['to'] } errorText={fieldState.error?.message} + filter={getImageSelectFilter(stackscript)} onSelect={(image) => field.onChange(image?.id ?? null)} pendoIDs={IMAGE_SELECT_TABLE_LINODE_REBUILD_PENDO_IDS} queryParamsPrefix="images"