diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index d99ad12484..4123c6ff09 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.7.4", + "version": "7.7.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.7.4", + "version": "7.7.5", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index fdb3cebc7f..51c01d530d 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.7.4", + "version": "7.7.5", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index fc3565b0bc..7f165fdd73 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -1,6 +1,10 @@ # @labkey/components Components, models, actions, and utility functions for LabKey applications and pages +### version 7.7.5 +*Released*: 22 January 2026 +- [GitHub Issue #798](https://github.com/LabKey/internal-issues/issues/798) - add product feature flag for advanced workflow + ### version 7.7.4 *Released*: 8 January 2026 - [GitHub Issue #723](https://github.com/LabKey/internal-issues/issues/723) diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index 0549a3b02a..0a408789e3 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -738,6 +738,7 @@ import { isSharedContainer, isSourceTypeEnabled, isWorkflowEnabled, + isAdvancedWorkflowEnabled, setFolderDataExclusion, setProductFolders, useMenuSectionConfigs, @@ -853,6 +854,7 @@ import { TEST_BIO_LIMS_ENTERPRISE_MODULE_CONTEXT, TEST_BIO_LIMS_STARTER_MODULE_CONTEXT, TEST_LKS_STARTER_MODULE_CONTEXT, + TEST_LK_LIMS_MODULE_CONTEXT, TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT, TEST_LKSM_STARTER_AND_WORKFLOW_MODULE_CONTEXT, TEST_LKSM_STARTER_MODULE_CONTEXT, @@ -931,6 +933,7 @@ const App = { isConditionalFormattingEnabled, isMediaEnabled, isWorkflowEnabled, + isAdvancedWorkflowEnabled, isELNEnabled, isFreezerManagementEnabled, isPlatesEnabled, @@ -1055,6 +1058,7 @@ const App = { TEST_LKSM_STARTER_MODULE_CONTEXT, TEST_LKSM_STARTER_AND_WORKFLOW_MODULE_CONTEXT, TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT, + TEST_LK_LIMS_MODULE_CONTEXT, TEST_PROJECT, TEST_PROJECT_CONTAINER, TEST_PROJECT_CONTAINER_ADMIN, diff --git a/packages/components/src/internal/app/constants.ts b/packages/components/src/internal/app/constants.ts index 531745460c..07131d83fd 100644 --- a/packages/components/src/internal/app/constants.ts +++ b/packages/components/src/internal/app/constants.ts @@ -120,6 +120,7 @@ export const BASE_APP_HELP_LINK = 'https://www.labkey.org/SampleManagerHelp/wiki // The enum values here should align with the ProductFeature.java enum values (some not currently used but included for completeness) export enum ProductFeature { + AdvancedWorkflow = 'AdvancedWorkflow', ApiKeys = 'ApiKeys', Assay = 'Assay', AssayQC = 'AssayQC', diff --git a/packages/components/src/internal/app/utils.ts b/packages/components/src/internal/app/utils.ts index 7951db1094..daefea1f7f 100644 --- a/packages/components/src/internal/app/utils.ts +++ b/packages/components/src/internal/app/utils.ts @@ -384,6 +384,13 @@ export function isWorkflowEnabled(moduleContext?: ModuleContext): boolean { ); } +export function isAdvancedWorkflowEnabled(moduleContext?: ModuleContext): boolean { + return ( + hasModule(SAMPLE_MANAGER_APP_PROPERTIES.moduleName, moduleContext) && + isFeatureEnabled(ProductFeature.AdvancedWorkflow, moduleContext) + ); +} + export function isDataChangeCommentRequirementFeatureEnabled(moduleContext?: ModuleContext): boolean { return isFeatureEnabled(ProductFeature.DataChangeCommentRequirement, moduleContext); } diff --git a/packages/components/src/internal/productFixtures.ts b/packages/components/src/internal/productFixtures.ts index 4db20a445d..ad0108e811 100644 --- a/packages/components/src/internal/productFixtures.ts +++ b/packages/components/src/internal/productFixtures.ts @@ -1,17 +1,36 @@ import { BIOLOGICS_APP_PROPERTIES, FREEZER_MANAGER_APP_PROPERTIES, + LIMS_APP_PROPERTIES, ProductFeature, SAMPLE_MANAGER_APP_PROPERTIES, } from './app/constants'; -import { - BIOLOGICS_ENTERPRISE_PRODUCT_KEY, - BIOLOGICS_PRODUCT_ID, - BIOLOGICS_STARTER_PRODUCT_KEY, - SAMPLE_MANAGER_PRODUCT_ID, - SAMPLE_MANAGER_PROFESSIONAL_PRODUCT_KEY, - SAMPLE_MANAGER_STARTER_PRODUCT_KEY -} from './app/products'; +import { BIOLOGICS_PRODUCT_ID, LIMS_PRODUCT_ID, SAMPLE_MANAGER_PRODUCT_ID } from './app/products'; + +export const TEST_LK_LIMS_MODULE_CONTEXT = { + api: { + moduleNames: ['samplemanagement', 'inventory', 'assay', 'labbook'], + }, + samplemanagement: { + productId: LIMS_APP_PROPERTIES.productId, + }, + inventory: { + productId: FREEZER_MANAGER_APP_PROPERTIES.productId, + }, + core: { + productFeatures: [ + ProductFeature.Workflow, + ProductFeature.ELN, + ProductFeature.Assay, + ProductFeature.ApiKeys, + ProductFeature.CalculatedFields, + ProductFeature.DataChangeCommentRequirement, + ProductFeature.CustomImportTemplates, + ProductFeature.AdvancedWorkflow, + ], + primaryApplicationId: LIMS_PRODUCT_ID, + } +}; export const TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT = { api: {