diff --git a/.changeset/strong-experts-act.md b/.changeset/strong-experts-act.md new file mode 100644 index 000000000..ecbda080f --- /dev/null +++ b/.changeset/strong-experts-act.md @@ -0,0 +1,5 @@ +--- +"@orchestrator-ui/orchestrator-ui-components": patch +--- + +inline edit for description of metadata pages diff --git a/.github/workflows/tag-example-ui.yml b/.github/workflows/tag-example-ui.yml index 3a03a0e32..0e6d91456 100644 --- a/.github/workflows/tag-example-ui.yml +++ b/.github/workflows/tag-example-ui.yml @@ -4,63 +4,63 @@ name: Tag example-orchestrator-ui on: - push: - tags: - - "@orchestrator-ui/orchestrator-ui-components@[0-9]+.[0-9]+.[0-9]+" - release: - types: - - published - tags: - - "@orchestrator-ui/orchestrator-ui-components@[0-9]+.[0-9]+.[0-9]+" + push: + tags: + - '@orchestrator-ui/orchestrator-ui-components@[0-9]+.[0-9]+.[0-9]+' + release: + types: + - published + tags: + - '@orchestrator-ui/orchestrator-ui-components@[0-9]+.[0-9]+.[0-9]+' # The main branch of the following repository will be tagged # with the version part (e.g. 0.3.1) of the tag trigger above. env: - REPO: "example-orchestrator-ui" + REPO: 'example-orchestrator-ui' jobs: - docker: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Create GitHub app token - uses: actions/create-github-app-token@v1 - id: app-token - with: - app-id: ${{ vars.RW_REPOSITORY_CONTENT_APP_ID }} - private-key: ${{ secrets.RW_REPOSITORY_CONTENT_PRIVATE_KEY }} - owner: ${{ github.repository_owner }} - repositories: ${{ env.REPO }} - - name: Get latest commit SHA - id: sha - uses: actions/github-script@v7 - with: - result-encoding: string - script: | - const commit = await github.rest.repos.getCommit({ - owner: github.repository_owner, - repo: env.REPO, - ref: 'heads/main', - }) - return commit.data.sha - - name: Extract REF from ref_name - run: | - REF_NAME=${{ github.ref_name }} - REF=${REF_NAME/@orchestrator-ui\/orchestrator-ui-components@/} - echo REF=${REF} >> $GITHUB_ENV - - name: Add tag to repository - uses: actions/github-script@v7 - env: - REF: ${{ format('refs/tags/{0}', env.REF) }} - SHA: ${{ steps.sha.outputs.result }} - with: - github-token: ${{ steps.app-token.outputs.token }} - script: | - await github.rest.git.createRef({ - owner: github.repository_owner, - repo: env.REPO, - ref: process.env.REF, - sha: process.env.SHA, - }) + docker: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Create GitHub app token + uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ vars.RW_REPOSITORY_CONTENT_APP_ID }} + private-key: ${{ secrets.RW_REPOSITORY_CONTENT_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + repositories: ${{ env.REPO }} + - name: Get latest commit SHA + id: sha + uses: actions/github-script@v7 + with: + result-encoding: string + script: | + const commit = await github.rest.repos.getCommit({ + owner: github.repository_owner, + repo: env.REPO, + ref: 'heads/main', + }) + return commit.data.sha + - name: Extract REF from ref_name + run: | + REF_NAME=${{ github.ref_name }} + REF=${REF_NAME/@orchestrator-ui\/orchestrator-ui-components@/} + echo REF=${REF} >> $GITHUB_ENV + - name: Add tag to repository + uses: actions/github-script@v7 + env: + REF: ${{ format('refs/tags/{0}', env.REF) }} + SHA: ${{ steps.sha.outputs.result }} + with: + github-token: ${{ steps.app-token.outputs.token }} + script: | + await github.rest.git.createRef({ + owner: github.repository_owner, + repo: env.REPO, + ref: process.env.REF, + sha: process.env.SHA, + }) diff --git a/apps/storybook/src/index.css b/apps/storybook/src/index.css index 6119ad9a8..279fff56b 100644 --- a/apps/storybook/src/index.css +++ b/apps/storybook/src/index.css @@ -1,68 +1,68 @@ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; + font-weight: 500; + color: #646cff; + text-decoration: inherit; } a:hover { - color: #535bf2; + color: #535bf2; } body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; } h1 { - font-size: 3.2em; - line-height: 1.1; + font-size: 3.2em; + line-height: 1.1; } button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; } button:hover { - border-color: #646cff; + border-color: #646cff; } button:focus, button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; + outline: 4px auto -webkit-focus-ring-color; } @media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } } diff --git a/packages/orchestrator-ui-components/src/components/WfoMetadata/WfoMetadataDescriptionField.tsx b/packages/orchestrator-ui-components/src/components/WfoMetadata/WfoMetadataDescriptionField.tsx new file mode 100644 index 000000000..cf9753376 --- /dev/null +++ b/packages/orchestrator-ui-components/src/components/WfoMetadata/WfoMetadataDescriptionField.tsx @@ -0,0 +1,22 @@ +import React, { FC } from 'react'; + +import { WfoInlineEdit } from '../WfoInlineEdit'; + +interface WfoMetadataDescriptionFieldProps { + onSave: (updatedNote: string) => void; + description: string; +} + +export const WfoMetadataDescriptionField: FC< + WfoMetadataDescriptionFieldProps +> = ({ onSave, description }) => { + return ( +
+ +
+ ); +}; diff --git a/packages/orchestrator-ui-components/src/configuration/constants.ts b/packages/orchestrator-ui-components/src/configuration/constants.ts index d67b686fd..05561adb7 100644 --- a/packages/orchestrator-ui-components/src/configuration/constants.ts +++ b/packages/orchestrator-ui-components/src/configuration/constants.ts @@ -27,3 +27,9 @@ export const IPAM_FREE_SUBNETS_ENDPOINT = `${IPAM_ENDPOINT}/free_subnets`; export const SUBSCRIPTION_ACTIONS_ENDPOINT = 'subscriptions/workflows'; export const CUSTOMER_DESCRIPTION_ENDPOINT = '/subscription_customer_descriptions'; + +//metadata +export const METADATA_PRODUCT_ENDPOINT = 'products'; +export const METADATA_PRODUCT_BLOCK_ENDPOINT = 'product_blocks'; +export const METADATA_RESOURCE_TYPE_ENDPOINT = 'resource_types'; +export const METADATA_WORKFLOWS_ENDPOINT = 'workflows'; diff --git a/packages/orchestrator-ui-components/src/pages/metadata/WfoProductBlocksPage.tsx b/packages/orchestrator-ui-components/src/pages/metadata/WfoProductBlocksPage.tsx index 1e708c0b1..0d109ce03 100644 --- a/packages/orchestrator-ui-components/src/pages/metadata/WfoProductBlocksPage.tsx +++ b/packages/orchestrator-ui-components/src/pages/metadata/WfoProductBlocksPage.tsx @@ -21,6 +21,7 @@ import { getPageSizeChangeHandler, getQueryStringHandler, } from '@/components'; +import { WfoMetadataDescriptionField } from '@/components/WfoMetadata/WfoMetadataDescriptionField'; import { WfoAdvancedTable } from '@/components/WfoTable/WfoAdvancedTable'; import { WfoAdvancedTableColumnConfig } from '@/components/WfoTable/WfoAdvancedTable/types'; import { ColumnType, Pagination } from '@/components/WfoTable/WfoTable'; @@ -30,7 +31,11 @@ import { useShowToastMessage, useStoredTableConfig, } from '@/hooks'; -import { useGetProductBlocksQuery, useLazyGetProductBlocksQuery } from '@/rtk'; +import { + useGetProductBlocksQuery, + useLazyGetProductBlocksQuery, + useUpdateProductBlockMutation, +} from '@/rtk'; import type { ProductBlocksResponse } from '@/rtk'; import { mapRtkErrorToWfoError } from '@/rtk/utils'; import { @@ -72,6 +77,7 @@ export const WfoProductBlocksPage = () => { const getStoredTableConfig = useStoredTableConfig( METADATA_PRODUCT_BLOCKS_TABLE_LOCAL_STORAGE_KEY, ); + const [updateProductBlock] = useUpdateProductBlockMutation(); useEffect(() => { const storedConfig = getStoredTableConfig(); @@ -121,7 +127,18 @@ export const WfoProductBlocksPage = () => { description: { columnType: ColumnType.DATA, label: t('description'), - width: '400px', + width: '700px', + renderData: (value, row) => ( + + updateProductBlock({ + id: row.productBlockId, + description: updatedNote, + }) + } + description={value} + /> + ), }, status: { columnType: ColumnType.DATA, diff --git a/packages/orchestrator-ui-components/src/pages/metadata/WfoProductsPage.tsx b/packages/orchestrator-ui-components/src/pages/metadata/WfoProductsPage.tsx index b6d1cc082..494ace35f 100644 --- a/packages/orchestrator-ui-components/src/pages/metadata/WfoProductsPage.tsx +++ b/packages/orchestrator-ui-components/src/pages/metadata/WfoProductsPage.tsx @@ -19,6 +19,7 @@ import { getDataSortHandler, getQueryStringHandler, } from '@/components'; +import { WfoMetadataDescriptionField } from '@/components/WfoMetadata/WfoMetadataDescriptionField'; import { WfoAdvancedTable } from '@/components/WfoTable/WfoAdvancedTable'; import { WfoAdvancedTableColumnConfig } from '@/components/WfoTable/WfoAdvancedTable/types'; import { WfoFirstPartUUID } from '@/components/WfoTable/WfoFirstPartUUID'; @@ -29,7 +30,11 @@ import { useShowToastMessage, useStoredTableConfig, } from '@/hooks'; -import { useGetProductsQuery, useLazyGetProductsQuery } from '@/rtk'; +import { + useGetProductsQuery, + useLazyGetProductsQuery, + useUpdateProductMutation, +} from '@/rtk'; import { ProductsResponse } from '@/rtk'; import { mapRtkErrorToWfoError } from '@/rtk/utils'; import type { GraphqlQueryVariables, ProductDefinition } from '@/types'; @@ -68,6 +73,7 @@ export const WfoProductsPage = () => { const getStoredTableConfig = useStoredTableConfig( METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY, ); + const [updateProduct] = useUpdateProductMutation(); useEffect(() => { const storedConfig = getStoredTableConfig(); @@ -122,8 +128,18 @@ export const WfoProductsPage = () => { description: { columnType: ColumnType.DATA, label: t('description'), - width: '400px', - renderTooltip: (value) => value, + width: '700px', + renderData: (value, row) => ( + + updateProduct({ + id: row.productId, + description: updatedNote, + }) + } + description={value} + /> + ), }, productType: { columnType: ColumnType.DATA, @@ -188,6 +204,7 @@ export const WfoProductsPage = () => { createdAt: { columnType: ColumnType.DATA, label: t('createdAt'), + width: '90px', renderData: (date) => , renderDetails: parseIsoString(parseDateToLocaleDateTimeString), clipboardText: parseIsoString(parseDateToLocaleDateTimeString), diff --git a/packages/orchestrator-ui-components/src/pages/metadata/WfoResourceTypesPage.tsx b/packages/orchestrator-ui-components/src/pages/metadata/WfoResourceTypesPage.tsx index e935e5e41..43d66e276 100644 --- a/packages/orchestrator-ui-components/src/pages/metadata/WfoResourceTypesPage.tsx +++ b/packages/orchestrator-ui-components/src/pages/metadata/WfoResourceTypesPage.tsx @@ -17,6 +17,7 @@ import { } from '@/components'; import type { StoredTableConfig, WfoDataSorting } from '@/components'; import { WfoFirstPartUUID } from '@/components'; +import { WfoMetadataDescriptionField } from '@/components/WfoMetadata/WfoMetadataDescriptionField'; import { WfoAdvancedTable } from '@/components/WfoTable/WfoAdvancedTable'; import { WfoAdvancedTableColumnConfig } from '@/components/WfoTable/WfoAdvancedTable/types'; import { ColumnType, Pagination } from '@/components/WfoTable/WfoTable'; @@ -30,6 +31,7 @@ import { ResourceTypesResponse, useGetResourceTypesQuery, useLazyGetResourceTypesQuery, + useUpdateResourceTypeMutation, } from '@/rtk'; import { mapRtkErrorToWfoError } from '@/rtk/utils'; import { @@ -67,6 +69,7 @@ export const WfoResourceTypesPage = () => { const getStoredTableConfig = useStoredTableConfig( METADATA_RESOURCE_TYPES_TABLE_LOCAL_STORAGE_KEY, ); + const [updateResourceType] = useUpdateResourceTypeMutation(); useEffect(() => { const storedConfig = getStoredTableConfig(); @@ -112,6 +115,17 @@ export const WfoResourceTypesPage = () => { columnType: ColumnType.DATA, label: t('description'), width: '700px', + renderData: (value, row) => ( + + updateResourceType({ + id: row.resourceTypeId, + description: updatedNote, + }) + } + description={value} + /> + ), }, productBlocks: { columnType: ColumnType.DATA, diff --git a/packages/orchestrator-ui-components/src/pages/metadata/WfoTasksPage.tsx b/packages/orchestrator-ui-components/src/pages/metadata/WfoTasksPage.tsx index f89476074..deb40398a 100644 --- a/packages/orchestrator-ui-components/src/pages/metadata/WfoTasksPage.tsx +++ b/packages/orchestrator-ui-components/src/pages/metadata/WfoTasksPage.tsx @@ -21,6 +21,7 @@ import { } from '@/components'; import { getDataSortHandler, getQueryStringHandler } from '@/components'; import { WfoDateTime } from '@/components/WfoDateTime/WfoDateTime'; +import { WfoMetadataDescriptionField } from '@/components/WfoMetadata/WfoMetadataDescriptionField'; import { WfoAdvancedTable } from '@/components/WfoTable/WfoAdvancedTable'; import { WfoAdvancedTableColumnConfig } from '@/components/WfoTable/WfoAdvancedTable/types'; import { @@ -33,7 +34,12 @@ import { useShowToastMessage, useStoredTableConfig, } from '@/hooks'; -import { TasksResponse, useGetTasksQuery, useLazyGetTasksQuery } from '@/rtk'; +import { + TasksResponse, + useGetTasksQuery, + useLazyGetTasksQuery, + useUpdateWorkflowMutation, +} from '@/rtk'; import { mapRtkErrorToWfoError } from '@/rtk/utils'; import type { GraphqlQueryVariables, TaskDefinition } from '@/types'; import { BadgeType, SortOrder } from '@/types'; @@ -71,13 +77,12 @@ export const WfoTasksPage = () => { const t = useTranslations('metadata.tasks'); const tError = useTranslations('errors'); const { showToastMessage } = useShowToastMessage(); - const [tableDefaults, setTableDefaults] = useState>(); - const getStoredTableConfig = useStoredTableConfig( METADATA_TASKS_TABLE_LOCAL_STORAGE_KEY, ); + const [updateWorkflow] = useUpdateWorkflowMutation(); useEffect(() => { const storedConfig = getStoredTableConfig(); @@ -122,8 +127,34 @@ export const WfoTasksPage = () => { description: { columnType: ColumnType.DATA, label: t('description'), - width: '500px', + width: '700px', + renderData: (value, row) => + value ? ( + + updateWorkflow({ + id: row.workflowId, + description: updatedNote, + }) + } + description={value} + /> + ) : null, }, + + // description: { + // columnType: ColumnType.DATA, + // label: t('description'), + // width: '450px', + // renderData: (value, row) => + // value ? ( + // + // ) : null, + // }, + target: { columnType: ColumnType.DATA, label: t('target'), diff --git a/packages/orchestrator-ui-components/src/pages/metadata/WfoWorkflowsPage.tsx b/packages/orchestrator-ui-components/src/pages/metadata/WfoWorkflowsPage.tsx index afe98ac72..8fa490f36 100644 --- a/packages/orchestrator-ui-components/src/pages/metadata/WfoWorkflowsPage.tsx +++ b/packages/orchestrator-ui-components/src/pages/metadata/WfoWorkflowsPage.tsx @@ -22,6 +22,7 @@ import { getDataSortHandler, getQueryStringHandler, } from '@/components'; +import { WfoMetadataDescriptionField } from '@/components/WfoMetadata/WfoMetadataDescriptionField'; import { WfoAdvancedTable } from '@/components/WfoTable/WfoAdvancedTable/WfoAdvancedTable'; import { WfoAdvancedTableColumnConfig } from '@/components/WfoTable/WfoAdvancedTable/types'; import { @@ -38,6 +39,7 @@ import { WorkflowsResponse, useGetWorkflowsQuery, useLazyGetWorkflowsQuery, + useUpdateWorkflowMutation, } from '@/rtk'; import { mapRtkErrorToWfoError } from '@/rtk/utils'; import type { GraphqlQueryVariables, WorkflowDefinition } from '@/types'; @@ -83,6 +85,7 @@ export const WfoWorkflowsPage = () => { const getStoredTableConfig = useStoredTableConfig( METADATA_WORKFLOWS_TABLE_LOCAL_STORAGE_KEY, ); + const [updateWorkflow] = useUpdateWorkflowMutation(); useEffect(() => { const storedConfig = getStoredTableConfig(); @@ -127,7 +130,19 @@ export const WfoWorkflowsPage = () => { description: { columnType: ColumnType.DATA, label: t('description'), - width: '450px', + width: '700px', + renderData: (value, row) => + value ? ( + + updateWorkflow({ + id: row.workflowId, + description: updatedNote, + }) + } + description={value} + /> + ) : null, }, target: { columnType: ColumnType.DATA, diff --git a/packages/orchestrator-ui-components/src/rtk/endpoints/index.ts b/packages/orchestrator-ui-components/src/rtk/endpoints/index.ts index dc8db17ca..d039f0c16 100644 --- a/packages/orchestrator-ui-components/src/rtk/endpoints/index.ts +++ b/packages/orchestrator-ui-components/src/rtk/endpoints/index.ts @@ -5,7 +5,7 @@ export * from './processDetail'; export * from './processList'; export * from './processListSummary'; export * from './processSteps'; -export * from './products'; +export * from './metadata/products'; export * from './productsSummary'; export * from './relatedSubscriptions'; export * from './settings'; diff --git a/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/productBlocks.ts b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/productBlocks.ts index fc901f2d3..3bcc40d32 100644 --- a/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/productBlocks.ts +++ b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/productBlocks.ts @@ -1,4 +1,6 @@ -import { orchestratorApi } from '@/rtk'; +import { METADATA_PRODUCT_BLOCK_ENDPOINT } from '@/configuration'; +import { BaseQueryTypes, orchestratorApi } from '@/rtk'; +import { MetadataDescriptionParams } from '@/types'; import { BaseGraphQlResult, GraphqlQueryVariables, @@ -86,3 +88,25 @@ const productBlocksApi = orchestratorApi.injectEndpoints({ export const { useGetProductBlocksQuery, useLazyGetProductBlocksQuery } = productBlocksApi; + +const productBlocksRestApi = orchestratorApi.injectEndpoints({ + endpoints: (build) => ({ + updateProductBlock: build.mutation({ + query: (productBlock) => ({ + url: `${METADATA_PRODUCT_BLOCK_ENDPOINT}/${productBlock.id}`, + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + body: { + description: productBlock.description, + }, + }), + extraOptions: { + baseQueryType: BaseQueryTypes.fetch, + }, + }), + }), +}); + +export const { useUpdateProductBlockMutation } = productBlocksRestApi; diff --git a/packages/orchestrator-ui-components/src/rtk/endpoints/products.ts b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/products.ts similarity index 69% rename from packages/orchestrator-ui-components/src/rtk/endpoints/products.ts rename to packages/orchestrator-ui-components/src/rtk/endpoints/metadata/products.ts index 936cba051..2313d4dcf 100644 --- a/packages/orchestrator-ui-components/src/rtk/endpoints/products.ts +++ b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/products.ts @@ -1,7 +1,9 @@ -import { orchestratorApi } from '@/rtk'; +import { METADATA_PRODUCT_ENDPOINT } from '@/configuration/constants'; +import { BaseQueryTypes, orchestratorApi } from '@/rtk'; import { BaseGraphQlResult, GraphqlQueryVariables, + MetadataDescriptionParams, ProductDefinition, ProductDefinitionsResult, } from '@/types'; @@ -74,3 +76,25 @@ const productsApi = orchestratorApi.injectEndpoints({ }); export const { useGetProductsQuery, useLazyGetProductsQuery } = productsApi; + +const productRestApi = orchestratorApi.injectEndpoints({ + endpoints: (build) => ({ + updateProduct: build.mutation({ + query: (product) => ({ + url: `${METADATA_PRODUCT_ENDPOINT}/${product.id}`, + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + body: { + description: product.description, + }, + }), + extraOptions: { + baseQueryType: BaseQueryTypes.fetch, + }, + }), + }), +}); + +export const { useUpdateProductMutation } = productRestApi; diff --git a/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/resourceTypes.ts b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/resourceTypes.ts index 3193fedd9..2b2035f0d 100644 --- a/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/resourceTypes.ts +++ b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/resourceTypes.ts @@ -1,7 +1,9 @@ -import { orchestratorApi } from '@/rtk'; +import { METADATA_RESOURCE_TYPE_ENDPOINT } from '@/configuration'; +import { BaseQueryTypes, orchestratorApi } from '@/rtk'; import { BaseGraphQlResult, GraphqlQueryVariables, + MetadataDescriptionParams, ResourceTypeDefinition, ResourceTypeDefinitionsResult, } from '@/types'; @@ -76,3 +78,25 @@ const resourceTypesApi = orchestratorApi.injectEndpoints({ export const { useGetResourceTypesQuery, useLazyGetResourceTypesQuery } = resourceTypesApi; + +const resourceTypesRestApi = orchestratorApi.injectEndpoints({ + endpoints: (build) => ({ + updateResourceType: build.mutation({ + query: (resourceType) => ({ + url: `${METADATA_RESOURCE_TYPE_ENDPOINT}/${resourceType.id}`, + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + body: { + description: resourceType.description, + }, + }), + extraOptions: { + baseQueryType: BaseQueryTypes.fetch, + }, + }), + }), +}); + +export const { useUpdateResourceTypeMutation } = resourceTypesRestApi; diff --git a/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/workflows.ts b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/workflows.ts index 87be97854..80bc62036 100644 --- a/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/workflows.ts +++ b/packages/orchestrator-ui-components/src/rtk/endpoints/metadata/workflows.ts @@ -1,7 +1,9 @@ -import { orchestratorApi } from '@/rtk'; +import { METADATA_WORKFLOWS_ENDPOINT } from '@/configuration'; +import { BaseQueryTypes, orchestratorApi } from '@/rtk'; import { BaseGraphQlResult, GraphqlQueryVariables, + MetadataDescriptionParams, WorkflowDefinition, WorkflowDefinitionsResult, } from '@/types'; @@ -134,3 +136,25 @@ export const { useLazyGetWorkflowsQuery, useGetDescriptionForWorkflowNameQuery, } = workflowsApi; + +const workflowsRestApi = orchestratorApi.injectEndpoints({ + endpoints: (build) => ({ + updateWorkflow: build.mutation({ + query: (workflow) => ({ + url: `${METADATA_WORKFLOWS_ENDPOINT}/${workflow.id}`, + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + }, + body: { + description: workflow.description, + }, + }), + extraOptions: { + baseQueryType: BaseQueryTypes.fetch, + }, + }), + }), +}); + +export const { useUpdateWorkflowMutation } = workflowsRestApi; diff --git a/packages/orchestrator-ui-components/src/stories/Button.jsx b/packages/orchestrator-ui-components/src/stories/Button.jsx index ccb6aa07a..a4f86ea60 100644 --- a/packages/orchestrator-ui-components/src/stories/Button.jsx +++ b/packages/orchestrator-ui-components/src/stories/Button.jsx @@ -1,5 +1,7 @@ import React from 'react'; + import PropTypes from 'prop-types'; + import './button.css'; /** diff --git a/packages/orchestrator-ui-components/src/stories/Configure.mdx b/packages/orchestrator-ui-components/src/stories/Configure.mdx index 899b90117..8cb080473 100644 --- a/packages/orchestrator-ui-components/src/stories/Configure.mdx +++ b/packages/orchestrator-ui-components/src/stories/Configure.mdx @@ -1,20 +1,21 @@ -import { Meta } from '@storybook/blocks'; import Image from 'next/image'; -import Github from './assets/github.svg'; -import Discord from './assets/discord.svg'; -import Youtube from './assets/youtube.svg'; -import Tutorials from './assets/tutorials.svg'; -import Styling from './assets/styling.png'; -import Context from './assets/context.png'; +import { Meta } from '@storybook/blocks'; + +import Accessibility from './assets/accessibility.png'; +import AddonLibrary from './assets/addon-library.png'; import Assets from './assets/assets.png'; +import Context from './assets/context.png'; +import Discord from './assets/discord.svg'; import Docs from './assets/docs.png'; -import Share from './assets/share.png'; import FigmaPlugin from './assets/figma-plugin.png'; +import Github from './assets/github.svg'; +import Share from './assets/share.png'; +import Styling from './assets/styling.png'; import Testing from './assets/testing.png'; -import Accessibility from './assets/accessibility.png'; import Theming from './assets/theming.png'; -import AddonLibrary from './assets/addon-library.png'; +import Tutorials from './assets/tutorials.svg'; +import Youtube from './assets/youtube.svg'; export const RightArrow = () => (