diff --git a/npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts new file mode 100644 index 0000000000..02e20a5c04 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/form-utils.spec.ts @@ -0,0 +1,30 @@ +import { mapEnumToOptions } from '../utils/form-utils'; + +enum SomeEnum { + NotApplicable = 'N/A', + Foo = 0, + Bar, +} + +describe('Form Utils', () => { + describe('#mapEnumToOptions', () => { + it('should return options from enum', () => { + const options = mapEnumToOptions(SomeEnum); + + expect(options).toEqual([ + { + key: 'NotApplicable', + value: SomeEnum.NotApplicable, + }, + { + key: 'Foo', + value: SomeEnum.Foo, + }, + { + key: 'Bar', + value: SomeEnum.Bar, + }, + ]); + }); + }); +}); diff --git a/npm/ng-packs/packages/core/src/lib/utils/form-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/form-utils.ts new file mode 100644 index 0000000000..414b259ab9 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/form-utils.ts @@ -0,0 +1,15 @@ +import { ABP } from '../models/common'; +import { isNumber } from './number-utils'; + +export function mapEnumToOptions(_enum: T): ABP.Option[] { + const options: ABP.Option[] = []; + + for (const member in _enum) + if (!isNumber(member)) + options.push({ + key: member, + value: _enum[member], + }); + + return options; +}