Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
run: npm ci

- name: Run build SDK
run: npm run build --if-present
run: npm run build-release --if-present

- name: Run unit test
run: npm test
Expand Down
2 changes: 1 addition & 1 deletion .npmrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ always-auth=true
//pkgs.dev.azure.com/EpiserverEngineering/netCore/_packaging/HeadlessForms/npm/:username=${AZURE_USERNAME}
//pkgs.dev.azure.com/EpiserverEngineering/netCore/_packaging/HeadlessForms/npm/:_password=${AZURE_TOKEN}
//pkgs.dev.azure.com/EpiserverEngineering/netCore/_packaging/HeadlessForms/npm/:email=${AZURE_EMAIL}
; end auth token
; end auth token
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
# Headless Form JS SDK (beta release)

This is a JS SDK package that helps render a form based on metadata taken from the Headless Form API. In this package, there are 2 main parts:
This JS SDK package helps render a form based on metadata taken from the Headless Form API. In this package, there are 2 main parts:

| Project | Description | Doc |
| --------------------------------| ------------------------| ------------------------|
| @episerver/forms-sdk | JS SDK for models, client validation, form loader, form dependencies, form submit | https://github.com/episerver/content-headless-form-js-sdk/tree/develop/src/%40episerver/forms-sdk#readme
| @episerver/forms-react | React SDK for rendering a form as a React component | https://github.com/episerver/content-headless-form-js-sdk/tree/develop/src/%40episerver/forms-react#readme

ref: https://docs.developers.optimizely.com/content-management-system/v1.2.0-forms/docs/get-started-with-headless-optimizely-forms
ref:

https://docs.developers.optimizely.com/content-management-system/v1.2.0-forms/docs/get-started-with-headless-optimizely-forms

https://world.optimizely.com/blogs/linh-hoang/dates/2024/8/optimizely-headless-form-setup/

Wiki:

[Setup AAD with Form Headless API](https://github.com/episerver/content-headless-form-js-sdk/wiki/Setup-AAD-with-Form-Headless-API)

[Setup Anonymous token provider with Headless Forms](https://github.com/episerver/content-headless-form-js-sdk/wiki/Setup-Anonymous-token-provider-with-Headless-Form)

[Setup Form Headless API with OIDC](https://github.com/episerver/content-headless-form-js-sdk/wiki/Setup-Form-Headless-API-with-OIDC)

## Getting Started

### Installation
Expand Down
8 changes: 2 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "content-headless-form-js-sdk",
"version": "1.0.1",
"version": "1.0.2",
"description": "Workspace root",
"workspaces": [
"src/@episerver/forms-react",
Expand All @@ -26,7 +26,9 @@
"build-backend": "npm run build -w managementsite",
"build-forms-sdk": "npm run build -w @episerver/forms-sdk",
"build-forms-react": "npm run build -w @episerver/forms-react",
"build": "npm run build-forms-sdk && npm run build-forms-react",
"build-forms-react-dev": "npm run dev -w @episerver/forms-react",
"build": "npm run build-forms-sdk && npm run build-forms-react-dev",
"build-release": "npm run build-forms-sdk && npm run build-forms-react",
"test-forms-sdk": "npm run test -w @episerver/forms-sdk",
"test": "npm run test-forms-sdk",
"start-backend": "npm start -w managementsite",
Expand Down
6 changes: 4 additions & 2 deletions samples/ManagementSite/Alloy.ManagementSite.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<CmsUIVersion>12.30.0</CmsUIVersion>
<CmsCoreVersion>12.21.4</CmsCoreVersion>
<HeadlessFormVersion>1.0.0</HeadlessFormVersion>
<ContentApiVersion>12.20.1</ContentApiVersion>
<FormVersion>5.9.0</FormVersion>
<ContentApiVersion>3.10.2</ContentApiVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EPiServer.CMS.AspNetCore" Version="$(CmsCoreVersion)" />
Expand All @@ -30,7 +30,9 @@
<PackageReference Include="Optimizely.Cms.Forms.ContentGraph" Version="$(HeadlessFormVersion)" />
<PackageReference Include="Optimizely.Cms.Forms.Core" Version="$(HeadlessFormVersion)" />
<PackageReference Include="Optimizely.Cms.Forms.Service" Version="$(HeadlessFormVersion)" />
<PackageReference Include="Optimizely.ContentGraph.Cms" Version="3.5.1" />
<PackageReference Include="Optimizely.ContentGraph.Cms" Version="3.9.0" />
<PackageReference Include="EPiServer.ContentDeliveryApi.Cms" Version="$(ContentApiVersion)" />
<PackageReference Include="EPiServer.ContentDeliveryApi.Core" Version="$(ContentApiVersion)" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
Expand Down
14 changes: 12 additions & 2 deletions samples/ManagementSite/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
using EPiServer.DependencyInjection;
using Optimizely.Cms.Forms.DependencyInjection;
using Optimizely.Cms.Forms;
using EPiServer.Cms.Shell.UI;

namespace Alloy.ManagementSite
{
Expand All @@ -46,7 +47,6 @@ public void ConfigureServices(IServiceCollection services)
if (_environment.IsDevelopment())
{
//NETCORE: Consider add appsettings support for this

services.Configure<StaticFileOptions>(o =>
{
o.OnPrepareResponse = context =>
Expand Down Expand Up @@ -88,7 +88,9 @@ public void ConfigureServices(IServiceCollection services)
.Configure<ExternalApplicationOptions>(options => options.OptimizeForDelivery = true)
.ConfigureDisplayOptions()
.AddContentDelivery(managementSiteOptions)
.ConfigureDxp(managementSiteOptions, _configuration);
.ConfigureDxp(managementSiteOptions, _configuration)
.AddAdminUserRegistration(options => options.Behavior = RegisterAdminUserBehaviors.Enabled |
RegisterAdminUserBehaviors.LocalRequestsOnly);

services.AddCors(opts =>
{
Expand Down Expand Up @@ -194,6 +196,14 @@ public void PostConfigure(string name, OptimizelyFormsServiceOptions options)
client.EncryptionKeys.Add(key);
}
}

foreach (var client in options.OpenIDConnectClients)
{
foreach (var key in _options.SigningCredentials.Select(c => c.Key))
{
client.SigningKeys.Add(key);
}
}
}
}
}
8 changes: 5 additions & 3 deletions src/@episerver/forms-react/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@episerver/forms-react",
"version": "1.0.1",
"version": "1.0.2",
"description": "Forms react components render a form from JSON data",
"author": "Optimizely",
"license": "ISC",
Expand All @@ -11,11 +11,13 @@
],
"types": "dist/index.d.ts",
"scripts": {
"build": "rollup -c --context window"
"build": "rollup -c --context window",
"dev": "npm link ../forms-sdk && npm run build",
"dev:unlink": "npm unlink @episerver/forms-sdk"
},
"keywords": [],
"dependencies": {
"@episerver/forms-sdk": "file:../forms-sdk"
"@episerver/forms-sdk": "^1.0.1"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.4",
Expand Down
2 changes: 1 addition & 1 deletion src/@episerver/forms-sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@episerver/forms-sdk",
"version": "1.0.1",
"version": "1.0.2",
"description": "Forms SDK with client validation, step navigation, submit form, element depends",
"author": "Optimizely",
"license": "ISC",
Expand Down
4 changes: 2 additions & 2 deletions src/@episerver/forms-sdk/src/models/elements/Choice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import { SelectionBase, SelectionBaseProperties } from "./base/SelectionBase";
* This element can be rendered as Radio or Checkbox, base on SelectionBase's allowMultiSelect property
*/
export interface Choice extends SelectionBase {
propperties: ChoiceProperties
properties: ChoiceProperties
}

export interface ChoiceProperties extends SelectionBaseProperties {
placeHolder: string
}
}
Loading