@aemforms/af-core 0.22.79 → 0.22.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/afb-events.js CHANGED
@@ -110,6 +110,11 @@ class Submit extends ActionImpl {
110
110
  super(payload, 'submit', { dispatch });
111
111
  }
112
112
  }
113
+ class Save extends ActionImpl {
114
+ constructor(payload, dispatch = false) {
115
+ super(payload, 'save', { dispatch });
116
+ }
117
+ }
113
118
  class SubmitSuccess extends ActionImpl {
114
119
  constructor(payload, dispatch = false) {
115
120
  super(payload, 'submitSuccess', { dispatch });
@@ -167,4 +172,4 @@ class RemoveInstance extends ActionImpl {
167
172
  }
168
173
  }
169
174
 
170
- export { AddInstance, AddItem, Blur, Change, Click, CustomEvent, ExecuteRule, FieldChanged, Focus, FormLoad, Initialize, Invalid, RemoveInstance, RemoveItem, Reset, Submit, SubmitError, SubmitFailure, SubmitSuccess, Valid, ValidationComplete, propertyChange };
175
+ export { AddInstance, AddItem, Blur, Change, Click, CustomEvent, ExecuteRule, FieldChanged, Focus, FormLoad, Initialize, Invalid, RemoveInstance, RemoveItem, Reset, Save, Submit, SubmitError, SubmitFailure, SubmitSuccess, Valid, ValidationComplete, propertyChange };
@@ -1,4 +1,4 @@
1
- import { propertyChange, ExecuteRule, Initialize, RemoveItem, SubmitSuccess, CustomEvent, SubmitError, SubmitFailure, Submit, RemoveInstance, AddInstance, Reset, AddItem, Click, Change, FormLoad, FieldChanged, ValidationComplete, Valid, Invalid } from './afb-events.js';
1
+ import { propertyChange, ExecuteRule, Initialize, RemoveItem, SubmitSuccess, CustomEvent, SubmitError, SubmitFailure, Submit, Save, RemoveInstance, AddInstance, Reset, AddItem, Click, Change, FormLoad, FieldChanged, ValidationComplete, Valid, Invalid } from './afb-events.js';
2
2
  import Formula from '@adobe/json-formula';
3
3
  import { parseDefaultDate, datetimeToNumber, format, parseDateSkeleton, formatDate, numberToDatetime } from '@aemforms/af-formatters';
4
4
 
@@ -2577,15 +2577,15 @@ const multipartFormData = (data, attachments) => {
2577
2577
  }
2578
2578
  return formData;
2579
2579
  };
2580
- const submit = async (context, success, error, submitAs = 'multipart/form-data', input_data = null) => {
2581
- const endpoint = context.form.action;
2580
+ const submit = async (context, success, error, submitAs = 'multipart/form-data', input_data = null, action = '', metadata = null) => {
2581
+ const endpoint = action || context.form.action;
2582
2582
  let data = input_data;
2583
2583
  if (typeof data != 'object' || data == null) {
2584
2584
  data = context.form.exportData();
2585
2585
  }
2586
2586
  const attachments = getAttachments(context.form, true);
2587
2587
  let submitContentType = submitAs;
2588
- const submitDataAndMetaData = { 'data': data, 'submitMetadata': context.form.exportSubmitMetaData() };
2588
+ const submitDataAndMetaData = { 'data': data, ...metadata };
2589
2589
  let formData = submitDataAndMetaData;
2590
2590
  if (Object.keys(attachments).length > 0 || submitAs === 'multipart/form-data') {
2591
2591
  formData = multipartFormData(submitDataAndMetaData, attachments);
@@ -2601,6 +2601,8 @@ const createAction = (name, payload = {}) => {
2601
2601
  return new Change(payload);
2602
2602
  case 'submit':
2603
2603
  return new Submit(payload);
2604
+ case 'save':
2605
+ return new Save(payload);
2604
2606
  case 'click':
2605
2607
  return new Click(payload);
2606
2608
  case 'addItem':
@@ -2806,6 +2808,18 @@ class FunctionRuntimeImpl {
2806
2808
  },
2807
2809
  _signature: []
2808
2810
  },
2811
+ saveForm: {
2812
+ _func: (args, data, interpreter) => {
2813
+ const action = toString(args[0]);
2814
+ const validate_form = args[2] || false;
2815
+ interpreter.globals.form.dispatch(new Save({
2816
+ action,
2817
+ validate_form
2818
+ }));
2819
+ return {};
2820
+ },
2821
+ _signature: []
2822
+ },
2809
2823
  request: {
2810
2824
  _func: (args, data, interpreter) => {
2811
2825
  const uri = toString(args[0]);
@@ -3210,7 +3224,35 @@ class Form extends Container {
3210
3224
  const payload = action?.payload || {};
3211
3225
  const successEventName = payload?.success ? payload?.success : 'submitSuccess';
3212
3226
  const failureEventName = payload?.error ? payload?.error : 'submitError';
3213
- submit(context, successEventName, failureEventName, payload?.submit_as, payload?.data);
3227
+ const formAction = payload.action || this.action;
3228
+ const metadata = payload.metadata || {
3229
+ 'submitMetadata': this.exportSubmitMetaData()
3230
+ };
3231
+ const contentType = payload?.save_as || payload?.submit_as;
3232
+ submit(context, successEventName, failureEventName, contentType, payload?.data, formAction, metadata);
3233
+ }
3234
+ }
3235
+ save(action, context) {
3236
+ const payload = action?.payload || {};
3237
+ payload.save_as = 'multipart/form-data';
3238
+ payload.metadata = {
3239
+ 'draftMetadata': {
3240
+ 'lang': this.lang,
3241
+ 'draftId': this.properties?.draftId || ''
3242
+ }
3243
+ };
3244
+ payload.success = 'custom:saveSuccess';
3245
+ payload.error = 'custom:saveError';
3246
+ this.submit(action, context);
3247
+ this.subscribe((action) => {
3248
+ this._saveSuccess(action);
3249
+ }, 'saveSuccess');
3250
+ }
3251
+ _saveSuccess(action) {
3252
+ const draftId = action?.payload?.body?.draftId || '';
3253
+ const properties = this.properties;
3254
+ if (draftId && properties) {
3255
+ properties.draftId = draftId;
3214
3256
  }
3215
3257
  }
3216
3258
  reset() {
@@ -3347,7 +3389,7 @@ class Fieldset extends Container {
3347
3389
  return undefined;
3348
3390
  }
3349
3391
  get items() {
3350
- return super.items;
3392
+ return super.items ? super.items : [];
3351
3393
  }
3352
3394
  get value() {
3353
3395
  return null;
@@ -4418,7 +4460,7 @@ class FormFieldFactoryImpl {
4418
4460
  };
4419
4461
  retVal = new InstanceManager(newJson, options);
4420
4462
  }
4421
- else if ('items' in child) {
4463
+ else if ('items' in child || child.fieldType === 'panel') {
4422
4464
  retVal = new Fieldset(child, options);
4423
4465
  }
4424
4466
  else {
@@ -120,6 +120,8 @@ declare class Form extends Container<FormJson> implements FormModel {
120
120
  isValid(): boolean;
121
121
  dispatch(action: Action): void;
122
122
  submit(action: Action, context: any): void;
123
+ save(action: Action, context: any): void;
124
+ _saveSuccess(action: Action): void;
123
125
  reset(): void;
124
126
  getElement(id: string): FieldModel | FieldsetModel | this;
125
127
  get qualifiedName(): string;
@@ -62,6 +62,9 @@ export declare class Focus extends ActionImpl {
62
62
  export declare class Submit extends ActionImpl {
63
63
  constructor(payload?: any, dispatch?: boolean);
64
64
  }
65
+ export declare class Save extends ActionImpl {
66
+ constructor(payload?: any, dispatch?: boolean);
67
+ }
65
68
  export declare class SubmitSuccess extends ActionImpl {
66
69
  constructor(payload?: any, dispatch?: boolean);
67
70
  }
@@ -1,6 +1,6 @@
1
1
  type HTTP_VERB = 'GET' | 'POST';
2
2
  export declare const request: (context: any, uri: string, httpVerb: HTTP_VERB, payload: any, success: string, error: string, headers: any) => Promise<void>;
3
- export declare const submit: (context: any, success: string, error: string, submitAs?: 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded', input_data?: any) => Promise<void>;
3
+ export declare const submit: (context: any, success: string, error: string, submitAs?: 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded', input_data?: any, action?: string, metadata?: any) => Promise<void>;
4
4
  export type CustomFunction = Function;
5
5
  export type FunctionDefinition = {
6
6
  _func: CustomFunction;
@@ -40,6 +40,10 @@ declare class FunctionRuntimeImpl {
40
40
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
41
41
  _signature: never[];
42
42
  };
43
+ saveForm: {
44
+ _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
45
+ _signature: never[];
46
+ };
43
47
  request: {
44
48
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
45
49
  _signature: never[];
package/lib/Fieldset.js CHANGED
@@ -35,7 +35,7 @@ class Fieldset extends Container_1.default {
35
35
  return undefined;
36
36
  }
37
37
  get items() {
38
- return super.items;
38
+ return super.items ? super.items : [];
39
39
  }
40
40
  get value() {
41
41
  return null;
package/lib/Form.d.ts CHANGED
@@ -120,6 +120,8 @@ declare class Form extends Container<FormJson> implements FormModel {
120
120
  isValid(): boolean;
121
121
  dispatch(action: Action): void;
122
122
  submit(action: Action, context: any): void;
123
+ save(action: Action, context: any): void;
124
+ _saveSuccess(action: Action): void;
123
125
  reset(): void;
124
126
  getElement(id: string): FieldModel | FieldsetModel | this;
125
127
  get qualifiedName(): string;
package/lib/Form.js CHANGED
@@ -254,7 +254,37 @@ class Form extends Container_1.default {
254
254
  const payload = (action === null || action === void 0 ? void 0 : action.payload) || {};
255
255
  const successEventName = (payload === null || payload === void 0 ? void 0 : payload.success) ? payload === null || payload === void 0 ? void 0 : payload.success : 'submitSuccess';
256
256
  const failureEventName = (payload === null || payload === void 0 ? void 0 : payload.error) ? payload === null || payload === void 0 ? void 0 : payload.error : 'submitError';
257
- (0, FunctionRuntime_1.submit)(context, successEventName, failureEventName, payload === null || payload === void 0 ? void 0 : payload.submit_as, payload === null || payload === void 0 ? void 0 : payload.data);
257
+ const formAction = payload.action || this.action;
258
+ const metadata = payload.metadata || {
259
+ 'submitMetadata': this.exportSubmitMetaData()
260
+ };
261
+ const contentType = (payload === null || payload === void 0 ? void 0 : payload.save_as) || (payload === null || payload === void 0 ? void 0 : payload.submit_as);
262
+ (0, FunctionRuntime_1.submit)(context, successEventName, failureEventName, contentType, payload === null || payload === void 0 ? void 0 : payload.data, formAction, metadata);
263
+ }
264
+ }
265
+ save(action, context) {
266
+ var _a;
267
+ const payload = (action === null || action === void 0 ? void 0 : action.payload) || {};
268
+ payload.save_as = 'multipart/form-data';
269
+ payload.metadata = {
270
+ 'draftMetadata': {
271
+ 'lang': this.lang,
272
+ 'draftId': ((_a = this.properties) === null || _a === void 0 ? void 0 : _a.draftId) || ''
273
+ }
274
+ };
275
+ payload.success = 'custom:saveSuccess';
276
+ payload.error = 'custom:saveError';
277
+ this.submit(action, context);
278
+ this.subscribe((action) => {
279
+ this._saveSuccess(action);
280
+ }, 'saveSuccess');
281
+ }
282
+ _saveSuccess(action) {
283
+ var _a, _b;
284
+ const draftId = ((_b = (_a = action === null || action === void 0 ? void 0 : action.payload) === null || _a === void 0 ? void 0 : _a.body) === null || _b === void 0 ? void 0 : _b.draftId) || '';
285
+ const properties = this.properties;
286
+ if (draftId && properties) {
287
+ properties.draftId = draftId;
258
288
  }
259
289
  }
260
290
  reset() {
@@ -62,6 +62,9 @@ export declare class Focus extends ActionImpl {
62
62
  export declare class Submit extends ActionImpl {
63
63
  constructor(payload?: any, dispatch?: boolean);
64
64
  }
65
+ export declare class Save extends ActionImpl {
66
+ constructor(payload?: any, dispatch?: boolean);
67
+ }
65
68
  export declare class SubmitSuccess extends ActionImpl {
66
69
  constructor(payload?: any, dispatch?: boolean);
67
70
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RemoveInstance = exports.AddInstance = exports.RemoveItem = exports.AddItem = exports.CustomEvent = exports.FieldChanged = exports.Reset = exports.SubmitError = exports.SubmitFailure = exports.SubmitSuccess = exports.Submit = exports.Focus = exports.ValidationComplete = exports.Blur = exports.Click = exports.FormLoad = exports.Initialize = exports.propertyChange = exports.ExecuteRule = exports.Valid = exports.Invalid = exports.Change = void 0;
3
+ exports.RemoveInstance = exports.AddInstance = exports.RemoveItem = exports.AddItem = exports.CustomEvent = exports.FieldChanged = exports.Reset = exports.SubmitError = exports.SubmitFailure = exports.SubmitSuccess = exports.Save = exports.Submit = exports.Focus = exports.ValidationComplete = exports.Blur = exports.Click = exports.FormLoad = exports.Initialize = exports.propertyChange = exports.ExecuteRule = exports.Valid = exports.Invalid = exports.Change = void 0;
4
4
  class ActionImpl {
5
5
  constructor(payload, type, _metadata) {
6
6
  this._metadata = _metadata;
@@ -120,6 +120,12 @@ class Submit extends ActionImpl {
120
120
  }
121
121
  }
122
122
  exports.Submit = Submit;
123
+ class Save extends ActionImpl {
124
+ constructor(payload, dispatch = false) {
125
+ super(payload, 'save', { dispatch });
126
+ }
127
+ }
128
+ exports.Save = Save;
123
129
  class SubmitSuccess extends ActionImpl {
124
130
  constructor(payload, dispatch = false) {
125
131
  super(payload, 'submitSuccess', { dispatch });
@@ -1,6 +1,6 @@
1
1
  declare type HTTP_VERB = 'GET' | 'POST';
2
2
  export declare const request: (context: any, uri: string, httpVerb: HTTP_VERB, payload: any, success: string, error: string, headers: any) => Promise<void>;
3
- export declare const submit: (context: any, success: string, error: string, submitAs?: 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded', input_data?: any) => Promise<void>;
3
+ export declare const submit: (context: any, success: string, error: string, submitAs?: 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded', input_data?: any, action?: string, metadata?: any) => Promise<void>;
4
4
  export declare type CustomFunction = Function;
5
5
  export declare type FunctionDefinition = {
6
6
  _func: CustomFunction;
@@ -40,6 +40,10 @@ declare class FunctionRuntimeImpl {
40
40
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
41
41
  _signature: never[];
42
42
  };
43
+ saveForm: {
44
+ _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
45
+ _signature: never[];
46
+ };
43
47
  request: {
44
48
  _func: (args: Array<unknown>, data: unknown, interpreter: any) => {};
45
49
  _signature: never[];
@@ -123,15 +123,15 @@ const multipartFormData = (data, attachments) => {
123
123
  }
124
124
  return formData;
125
125
  };
126
- const submit = (context, success, error, submitAs = 'multipart/form-data', input_data = null) => __awaiter(void 0, void 0, void 0, function* () {
127
- const endpoint = context.form.action;
126
+ const submit = (context, success, error, submitAs = 'multipart/form-data', input_data = null, action = '', metadata = null) => __awaiter(void 0, void 0, void 0, function* () {
127
+ const endpoint = action || context.form.action;
128
128
  let data = input_data;
129
129
  if (typeof data != 'object' || data == null) {
130
130
  data = context.form.exportData();
131
131
  }
132
132
  const attachments = (0, FormUtils_1.getAttachments)(context.form, true);
133
133
  let submitContentType = submitAs;
134
- const submitDataAndMetaData = { 'data': data, 'submitMetadata': context.form.exportSubmitMetaData() };
134
+ const submitDataAndMetaData = Object.assign({ 'data': data }, metadata);
135
135
  let formData = submitDataAndMetaData;
136
136
  if (Object.keys(attachments).length > 0 || submitAs === 'multipart/form-data') {
137
137
  formData = multipartFormData(submitDataAndMetaData, attachments);
@@ -148,6 +148,8 @@ const createAction = (name, payload = {}) => {
148
148
  return new Events_1.Change(payload);
149
149
  case 'submit':
150
150
  return new Events_1.Submit(payload);
151
+ case 'save':
152
+ return new Events_1.Save(payload);
151
153
  case 'click':
152
154
  return new Events_1.Click(payload);
153
155
  case 'addItem':
@@ -353,6 +355,18 @@ class FunctionRuntimeImpl {
353
355
  },
354
356
  _signature: []
355
357
  },
358
+ saveForm: {
359
+ _func: (args, data, interpreter) => {
360
+ const action = toString(args[0]);
361
+ const validate_form = args[2] || false;
362
+ interpreter.globals.form.dispatch(new Events_1.Save({
363
+ action,
364
+ validate_form
365
+ }));
366
+ return {};
367
+ },
368
+ _signature: []
369
+ },
356
370
  request: {
357
371
  _func: (args, data, interpreter) => {
358
372
  const uri = toString(args[0]);
@@ -43,7 +43,7 @@ class FormFieldFactoryImpl {
43
43
  });
44
44
  retVal = new InstanceManager_1.InstanceManager(newJson, options);
45
45
  }
46
- else if ('items' in child) {
46
+ else if ('items' in child || child.fieldType === 'panel') {
47
47
  retVal = new Fieldset_1.Fieldset(child, options);
48
48
  }
49
49
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aemforms/af-core",
3
- "version": "0.22.79",
3
+ "version": "0.22.80",
4
4
  "description": "Core Module for Forms Runtime",
5
5
  "author": "Adobe Systems",
6
6
  "license": "Adobe Proprietary",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@adobe/json-formula": "0.1.50",
40
- "@aemforms/af-formatters": "^0.22.79"
40
+ "@aemforms/af-formatters": "^0.22.80"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@babel/preset-env": "^7.20.2",