@oneuptime/common 7.0.4064 → 7.0.4078

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.
Files changed (33) hide show
  1. package/Server/API/StatusPageAPI.ts +426 -0
  2. package/Server/EnvironmentConfig.ts +7 -0
  3. package/Server/Services/OnCallDutyPolicyScheduleService.ts +1 -1
  4. package/Server/Utils/StartServer.ts +34 -5
  5. package/Types/Email/EmailTemplateType.ts +1 -0
  6. package/UI/Components/Button/DropdownButton.tsx +93 -0
  7. package/UI/Components/Forms/BasicForm.tsx +14 -2
  8. package/UI/Components/Forms/BasicModelForm.tsx +8 -1
  9. package/UI/Components/Forms/Fields/FormField.tsx +32 -18
  10. package/UI/Components/Forms/ModelForm.tsx +13 -3
  11. package/UI/Components/Forms/Types/Field.ts +7 -1
  12. package/UI/Images/favicon/status-green.png +0 -0
  13. package/build/dist/Server/API/StatusPageAPI.js +320 -36
  14. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  15. package/build/dist/Server/EnvironmentConfig.js +2 -1
  16. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  17. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +1 -1
  18. package/build/dist/Server/Utils/StartServer.js +16 -4
  19. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  20. package/build/dist/Types/Email/EmailTemplateType.js +1 -0
  21. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  22. package/build/dist/UI/Components/Button/DropdownButton.js +20 -0
  23. package/build/dist/UI/Components/Button/DropdownButton.js.map +1 -0
  24. package/build/dist/UI/Components/Forms/BasicForm.js +8 -2
  25. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  26. package/build/dist/UI/Components/Forms/BasicModelForm.js +1 -1
  27. package/build/dist/UI/Components/Forms/BasicModelForm.js.map +1 -1
  28. package/build/dist/UI/Components/Forms/Fields/FormField.js +23 -18
  29. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  30. package/build/dist/UI/Components/Forms/ModelForm.js +2 -2
  31. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  32. package/package.json +2 -2
  33. package/UI/webpack-middleware.js +0 -65
@@ -23,7 +23,12 @@ export interface ComponentProps<TBaseModel extends BaseModel> {
23
23
  values: FormValues<TBaseModel>,
24
24
  onSubmitSuccessful: () => void,
25
25
  ) => void;
26
- onChange?: undefined | ((values: FormValues<TBaseModel>) => void);
26
+ onChange?:
27
+ | undefined
28
+ | ((
29
+ values: FormValues<TBaseModel>,
30
+ setNewFormValues: (newValues: FormValues<TBaseModel>) => void,
31
+ ) => void);
27
32
  onValidate?:
28
33
  | undefined
29
34
  | ((values: FormValues<TBaseModel>) => FormErrors<FormValues<TBaseModel>>);
@@ -48,6 +53,7 @@ export interface ComponentProps<TBaseModel extends BaseModel> {
48
53
  formRef?: undefined | MutableRefObject<FormProps<FormValues<TBaseModel>>>;
49
54
  initialValues?: FormValues<TBaseModel> | undefined;
50
55
  summary?: FormSummaryConfig | undefined;
56
+ values?: FormValues<TBaseModel> | undefined;
51
57
  }
52
58
 
53
59
  const BasicModelForm: <TBaseModel extends BaseModel>(
@@ -99,6 +105,7 @@ const BasicModelForm: <TBaseModel extends BaseModel>(
99
105
 
100
106
  return (
101
107
  <BasicForm
108
+ values={props.values}
102
109
  isLoading={props.isLoading || false}
103
110
  fields={formFields}
104
111
  id={props.id}
@@ -47,6 +47,7 @@ export interface ComponentProps<T extends GenericObject> {
47
47
  setFieldValue: (fieldName: string, value: JSONValue) => void;
48
48
  disableAutofocus?: boolean;
49
49
  submitForm?: (() => void) | undefined;
50
+ setFormValues?: ((values: FormValues<T>) => void) | undefined;
50
51
  }
51
52
 
52
53
  const FormField: <T extends GenericObject>(
@@ -54,6 +55,19 @@ const FormField: <T extends GenericObject>(
54
55
  ) => ReactElement = <T extends GenericObject>(
55
56
  props: ComponentProps<T>,
56
57
  ): ReactElement => {
58
+ type onChangeFunction = (value: JSONValue) => void;
59
+
60
+ const onChange: onChangeFunction = (value: JSONValue): void => {
61
+ props.field.onChange &&
62
+ props.field.onChange(
63
+ value,
64
+ props.currentValues,
65
+ (newFormValues: FormValues<T>) => {
66
+ props.setFormValues && props.setFormValues(newFormValues);
67
+ },
68
+ );
69
+ };
70
+
57
71
  type GetFieldTypeFunction = (fieldType: FormFieldSchemaType) => string;
58
72
 
59
73
  const getFieldType: GetFieldTypeFunction = (
@@ -116,8 +130,8 @@ const FormField: <T extends GenericObject>(
116
130
  description={`${props.field.description}`}
117
131
  onSubmit={() => {
118
132
  setShowMultiSelectCheckboxCategoryModal(false);
119
- props.field.onChange &&
120
- props.field.onChange(checkboxCategoryValues);
133
+
134
+ onChange(checkboxCategoryValues);
121
135
  props.setFieldValue(props.fieldName, checkboxCategoryValues);
122
136
  }}
123
137
  onClose={() => {
@@ -268,7 +282,7 @@ const FormField: <T extends GenericObject>(
268
282
  error={props.touched && props.error ? props.error : undefined}
269
283
  dataTestId={props.field.dataTestId}
270
284
  onChange={async (value: Color | null) => {
271
- props.field.onChange && props.field.onChange(value);
285
+ onChange(value);
272
286
  props.setFieldValue(props.fieldName, value);
273
287
  props.setFieldTouched(props.fieldName, true);
274
288
  }}
@@ -294,7 +308,7 @@ const FormField: <T extends GenericObject>(
294
308
  onChange={async (
295
309
  value: DropdownValue | Array<DropdownValue> | null,
296
310
  ) => {
297
- props.field.onChange && props.field.onChange(value);
311
+ onChange(value);
298
312
  props.setFieldValue(props.fieldName, value);
299
313
  }}
300
314
  onBlur={async () => {
@@ -322,7 +336,7 @@ const FormField: <T extends GenericObject>(
322
336
  disabled={props.isDisabled || props.field.disabled}
323
337
  error={props.touched && props.error ? props.error : undefined}
324
338
  onChange={(value: ObjectID) => {
325
- props.field.onChange && props.field.onChange(value);
339
+ onChange(value);
326
340
  props.setFieldValue(props.fieldName, value);
327
341
  }}
328
342
  onEnterPress={() => {
@@ -351,7 +365,7 @@ const FormField: <T extends GenericObject>(
351
365
  : props.field.defaultValue || {}
352
366
  }
353
367
  onChange={(value: Dictionary<string | number | boolean>) => {
354
- props.field.onChange && props.field.onChange(value);
368
+ onChange(value);
355
369
  props.setFieldValue(props.fieldName, value);
356
370
  }}
357
371
  />
@@ -363,7 +377,7 @@ const FormField: <T extends GenericObject>(
363
377
  error={props.touched && props.error ? props.error : undefined}
364
378
  dataTestId={props.field.dataTestId}
365
379
  onChange={async (value: string) => {
366
- props.field.onChange && props.field.onChange(value);
380
+ onChange(value);
367
381
  props.setFieldValue(props.fieldName, value);
368
382
  }}
369
383
  options={props.field.radioButtonOptions || []}
@@ -381,7 +395,7 @@ const FormField: <T extends GenericObject>(
381
395
  error={props.touched && props.error ? props.error : undefined}
382
396
  dataTestId={props.field.dataTestId}
383
397
  onChange={async (value: RadioValue | null) => {
384
- props.field.onChange && props.field.onChange(value);
398
+ onChange(value);
385
399
  props.setFieldValue(props.fieldName, value);
386
400
  }}
387
401
  options={
@@ -410,7 +424,7 @@ const FormField: <T extends GenericObject>(
410
424
  tabIndex={index}
411
425
  dataTestId={props.field.dataTestId}
412
426
  onChange={async (value: string) => {
413
- props.field.onChange && props.field.onChange(value);
427
+ onChange(value);
414
428
  props.setFieldValue(props.fieldName, value);
415
429
  }}
416
430
  onBlur={async () => {
@@ -433,7 +447,7 @@ const FormField: <T extends GenericObject>(
433
447
  tabIndex={index}
434
448
  dataTestId={props.field.dataTestId}
435
449
  onChange={async (value: string) => {
436
- props.field.onChange && props.field.onChange(value);
450
+ onChange(value);
437
451
  props.setFieldValue(props.fieldName, value);
438
452
  }}
439
453
  onBlur={async () => {
@@ -462,7 +476,7 @@ const FormField: <T extends GenericObject>(
462
476
  tabIndex={index}
463
477
  type={CodeType.Markdown}
464
478
  onChange={async (value: string) => {
465
- props.field.onChange && props.field.onChange(value);
479
+ onChange(value);
466
480
  props.setFieldValue(props.fieldName, value);
467
481
  }}
468
482
  onBlur={async () => {
@@ -484,7 +498,7 @@ const FormField: <T extends GenericObject>(
484
498
  error: props.touched && props.error ? props.error : undefined,
485
499
  tabIndex: index,
486
500
  onChange: async (value: string) => {
487
- props.field.onChange && props.field.onChange(value);
501
+ onChange(value);
488
502
  props.setFieldValue(props.fieldName, value);
489
503
  },
490
504
  onBlur: async () => {
@@ -507,7 +521,7 @@ const FormField: <T extends GenericObject>(
507
521
  error={props.touched && props.error ? props.error : undefined}
508
522
  tabIndex={index}
509
523
  onChange={async (value: string) => {
510
- props.field.onChange && props.field.onChange(value);
524
+ onChange(value);
511
525
  props.setFieldValue(props.fieldName, value);
512
526
  }}
513
527
  onBlur={async () => {
@@ -551,7 +565,7 @@ const FormField: <T extends GenericObject>(
551
565
  }
552
566
  }
553
567
 
554
- props.field.onChange && props.field.onChange(fileResult);
568
+ onChange(fileResult);
555
569
  props.setFieldValue(props.fieldName, fileResult);
556
570
  }}
557
571
  onBlur={async () => {
@@ -577,7 +591,7 @@ const FormField: <T extends GenericObject>(
577
591
  <Toggle
578
592
  error={props.touched && props.error ? props.error : undefined}
579
593
  onChange={async (value: boolean) => {
580
- props.field.onChange && props.field.onChange(value);
594
+ onChange(value);
581
595
  props.setFieldValue(props.fieldName, value);
582
596
  }}
583
597
  onBlur={async () => {
@@ -594,7 +608,7 @@ const FormField: <T extends GenericObject>(
594
608
  title={props.field.title || ""}
595
609
  description={props.field.description || ""}
596
610
  onChange={async (value: boolean) => {
597
- props.field.onChange && props.field.onChange(value);
611
+ onChange(value);
598
612
  props.setFieldValue(props.fieldName, value);
599
613
  }}
600
614
  dataTestId={props.field.dataTestId}
@@ -621,7 +635,7 @@ const FormField: <T extends GenericObject>(
621
635
  error={props.touched && props.error ? props.error : undefined}
622
636
  dataTestId={props.field.dataTestId}
623
637
  onChange={async (value: Array<CategoryCheckboxValue>) => {
624
- props.field.onChange && props.field.onChange(value);
638
+ onChange(value);
625
639
  props.setFieldValue(props.fieldName, value);
626
640
  }}
627
641
  initialValue={
@@ -657,7 +671,7 @@ const FormField: <T extends GenericObject>(
657
671
  dataTestId={props.field.dataTestId}
658
672
  type={fieldType as InputType}
659
673
  onChange={(value: string) => {
660
- props.field.onChange && props.field.onChange(value);
674
+ onChange(value);
661
675
  props.setFieldValue(props.fieldName, value);
662
676
  }}
663
677
  onEnterPress={() => {
@@ -80,7 +80,12 @@ export interface ComponentProps<TBaseModel extends BaseModel> {
80
80
  footer?: ReactElement | undefined;
81
81
  onCancel?: undefined | (() => void);
82
82
  name?: string | undefined;
83
- onChange?: undefined | ((values: FormValues<TBaseModel>) => void);
83
+ onChange?:
84
+ | undefined
85
+ | ((
86
+ values: FormValues<TBaseModel>,
87
+ setNewFormValues: (newValues: FormValues<TBaseModel>) => void,
88
+ ) => void);
84
89
  onSuccess?: undefined | ((data: TBaseModel, miscData?: JSONObject) => void);
85
90
  cancelButtonText?: undefined | string;
86
91
  maxPrimaryButtonWidth?: undefined | boolean;
@@ -102,6 +107,7 @@ export interface ComponentProps<TBaseModel extends BaseModel> {
102
107
  doNotFetchExistingModel?: boolean | undefined;
103
108
  modelAPI?: typeof ModelAPI | undefined;
104
109
  summary?: FormSummaryConfig | undefined;
110
+ values?: FormValues<TBaseModel> | undefined;
105
111
  }
106
112
 
107
113
  const ModelForm: <TBaseModel extends BaseModel>(
@@ -751,6 +757,7 @@ const ModelForm: <TBaseModel extends BaseModel>(
751
757
  return (
752
758
  <div>
753
759
  <BasicModelForm<TBaseModel>
760
+ values={props.values}
754
761
  title={props.title}
755
762
  description={props.description}
756
763
  disableAutofocus={props.disableAutofocus}
@@ -761,9 +768,12 @@ const ModelForm: <TBaseModel extends BaseModel>(
761
768
  onIsLastFormStep={props.onIsLastFormStep}
762
769
  fields={fields}
763
770
  steps={props.steps}
764
- onChange={(values: FormValues<TBaseModel>) => {
771
+ onChange={(
772
+ values: FormValues<TBaseModel>,
773
+ setNewFormValues: (newValues: FormValues<TBaseModel>) => void,
774
+ ) => {
765
775
  if (!isLoading) {
766
- props.onChange && props.onChange(values);
776
+ props.onChange && props.onChange(values, setNewFormValues);
767
777
  }
768
778
  }}
769
779
  showAsColumns={props.showAsColumns}
@@ -82,7 +82,13 @@ export default interface Field<TEntity> {
82
82
  | undefined;
83
83
  styleType?: FormFieldStyleType | undefined;
84
84
  showIf?: ((item: FormValues<TEntity>) => boolean) | undefined;
85
- onChange?: ((value: any) => void) | undefined;
85
+ onChange?:
86
+ | ((
87
+ value: any,
88
+ currentFormValues: FormValues<TEntity>,
89
+ setNewFormValues: (currentFormValues: FormValues<TEntity>) => void,
90
+ ) => void)
91
+ | undefined;
86
92
  fieldType?: FormFieldSchemaType;
87
93
  overrideFieldKey?: string;
88
94
  defaultValue?: boolean | string | Date | number | undefined;