hl-core 0.0.9-beta.27 → 0.0.9-beta.28

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.
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <v-form class="dynamic-form">
3
+ <base-form-section v-for="(section, sectionIndex) in form.sections" :key="sectionIndex" class="rounded-lg" :title="section.title">
4
+ <base-dynamic-input :fields="section.fields" />
5
+ </base-form-section>
6
+ </v-form>
7
+ </template>
8
+
9
+ <script lang="ts">
10
+ export default defineComponent({
11
+ props: {
12
+ form: {
13
+ type: Object as PropType<DynamicForm>,
14
+ required: true,
15
+ },
16
+ },
17
+ });
18
+ </script>
@@ -187,6 +187,15 @@ export default defineComponent({
187
187
  },
188
188
  );
189
189
 
190
+ onBeforeUnmount(() => {
191
+ if (!isReadonly.value) {
192
+ const areValid = !!formStore.SaleChanellPolicy.nameRu && !!formStore.RegionPolicy.nameRu && !!formStore.ManagerPolicy.nameRu && !!formStore.AgentData.fullName;
193
+ if (areValid) {
194
+ dataStore.setINSISWorkData(false);
195
+ }
196
+ }
197
+ });
198
+
190
199
  return {
191
200
  // State
192
201
  formStore,
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div v-for="(field, fieldIndex) in fields" :key="fieldIndex">
3
+ <base-text-input
4
+ v-if="field.type === 'text' || field.type === 'number'"
5
+ :control="field"
6
+ class="bg-[#fff]"
7
+ :class="{ 'rounded-t-lg': fieldIndex === 0 || fields[fieldIndex - 1].type !== 'text', 'rounded-b-lg': fieldIndex === fields.length - 1 }"
8
+ />
9
+ <base-switch-input v-if="field.type === 'switch'" :field="field" />
10
+ </div>
11
+ </template>
12
+
13
+ <script lang="ts">
14
+ export default defineComponent({
15
+ props: {
16
+ fields: {
17
+ type: Object as PropType<InputType[]>,
18
+ required: true,
19
+ },
20
+ },
21
+ });
22
+ </script>
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <div class="base-switch-input p-4 bg-white rounded-lg mb-3">
3
+ <v-switch v-model="field.modelValue" v-bind="switchProps" />
4
+ </div>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ export default defineComponent({
9
+ name: 'asSwitchInput',
10
+ props: {
11
+ field: {
12
+ type: Object as PropType<SwitchInput>,
13
+ required: true,
14
+ },
15
+ },
16
+ setup(props) {
17
+ const switchProps = computed(() => {
18
+ return {
19
+ label: props.field.label,
20
+ direction: props.field.direction,
21
+ disabled: props.field.disabled,
22
+ hideDetails: true,
23
+ color: '#009C73',
24
+ };
25
+ });
26
+ return { switchProps };
27
+ },
28
+ });
29
+ </script>
30
+
31
+ <style>
32
+ .base-switch-input .v-switch label {
33
+ font-size: 14px !important;
34
+ font-weight: 400 !important;
35
+ line-height: 20px !important;
36
+ opacity: 1 !important;
37
+ }
38
+ .base-switch-input .v-switch__track {
39
+ background: white !important;
40
+ border: 1.1px solid #e5e5ea;
41
+ height: 19px !important;
42
+ width: 100px !important;
43
+ border-radius: 16px;
44
+ overflow: hidden;
45
+ }
46
+
47
+ .base-switch-input .switch-block .v-input--horizontal {
48
+ grid-template-areas: unset !important;
49
+ }
50
+
51
+ .base-switch-input .v-switch__thumb {
52
+ color: white;
53
+ width: 20px;
54
+ height: 20px;
55
+ }
56
+
57
+ .base-switch-input .v-selection-control--dirty .v-switch__track {
58
+ background: #2aa65c !important;
59
+ }
60
+
61
+ .base-switch-input .v-switch .v-selection-control {
62
+ min-height: unset !important;
63
+ }
64
+ </style>
@@ -0,0 +1,156 @@
1
+ <template>
2
+ <div class="base-text-input flex justify-between items-center pr-4 mb-[1px] bg-[#fff]">
3
+ <v-text-field v-model="control.modelValue" v-bind="textFieldProps" v-maska="mask">
4
+ <div v-if="hasSuffix" class="absolute top-[27px] left-[18px] flex items-center justify-center">
5
+ <p class="opacity-0 inline-block mr-[2px]">{{ control.modelValue }}</p>
6
+ <span>{{ suffix }}</span>
7
+ </div>
8
+ </v-text-field>
9
+ <v-icon v-if="control.iconName" :icon="`mdi cursor-pointer ${iconsList[control.iconName]}`" color="#A0B3D8" @click="onClickIcon" />
10
+ <vue-date-picker v-if="control.maska === 'date'" v-model="control.modelValue" v-bind="datePickerProps" @update:modelValue="$emit('update:modelValue', $event)">
11
+ <template #trigger>
12
+ <v-icon icon="mdi mdi-calendar-blank-outline cursor-pointer" color="#a0b3d8" />
13
+ </template>
14
+ </vue-date-picker>
15
+ </div>
16
+ </template>
17
+
18
+ <script lang="ts">
19
+ const iconsList: { [key: string]: string } = {
20
+ arrowRight: 'mdi-chevron-right',
21
+ search: 'mdi-magnify',
22
+ sms: 'mdi-message-text',
23
+ clear: 'mdi-close',
24
+ };
25
+
26
+ const suffixList: { [key: string]: string } = {
27
+ kzt: '₸',
28
+ usd: '$',
29
+ percent: '%',
30
+ };
31
+
32
+ export default defineComponent({
33
+ props: {
34
+ control: {
35
+ type: Object as PropType<InputType>,
36
+ required: true,
37
+ },
38
+ },
39
+ setup(props) {
40
+ const mask = computed(() => (props.control.maska ? useMask()[props.control.maska] : ''));
41
+
42
+ const textFieldProps = computed(() => {
43
+ return {
44
+ label: props.control.label,
45
+ placeholder: props.control.placeholder,
46
+ disabled: props.control.disabled,
47
+ maxLength: props.control.maxLength,
48
+ readonly: props.control.readonly || props.control.iconName === 'arrowRight',
49
+ };
50
+ });
51
+
52
+ const datePickerProps = computed(() => {
53
+ return {
54
+ locale: 'ru',
55
+ flow: ['calendar'],
56
+ modelType: 'dd.MM.yyyy',
57
+ enableTimePicker: false,
58
+ altPosition: () => ({ top: 0, left: -275 }),
59
+ clearable: false,
60
+ disabled: props.control.disabled,
61
+ readonly: props.control.readonly,
62
+ selectText: 'Выбрать',
63
+ cancelText: 'Закрыть',
64
+ offset: '-50',
65
+ class: 'max-w-max z-[10]',
66
+ closeOnScroll: true,
67
+ transitions: false,
68
+ };
69
+ });
70
+
71
+ const hasSuffix = computed(() => {
72
+ return props.control.suffix && props.control.type === 'number' && props.control.modelValue;
73
+ });
74
+
75
+ const suffix = computed(() => {
76
+ return hasSuffix.value ? suffixList[props.control.suffix!] : '';
77
+ });
78
+
79
+ const onClickIcon = () => {};
80
+
81
+ return {
82
+ // State
83
+ datePickerProps,
84
+ textFieldProps,
85
+ hasSuffix,
86
+ mask,
87
+ suffix,
88
+ iconsList,
89
+
90
+ // Functions
91
+ onClickIcon,
92
+ };
93
+ },
94
+ });
95
+ </script>
96
+ <style>
97
+ .base-text-input .v-field__append-inner i {
98
+ color: #a0b3d8 !important;
99
+ margin-left: 10px;
100
+ margin-right: 4px;
101
+ }
102
+ .base-text-input .v-field__append-inner {
103
+ margin-top: 12px;
104
+ cursor: pointer;
105
+ padding-right: 6px;
106
+ }
107
+ .base-text-input .v-field__outline,
108
+ .base-text-input .v-field__overlay,
109
+ .base-text-input .v-field__loader {
110
+ display: none !important;
111
+ }
112
+
113
+ .base-text-input .v-input__prepend {
114
+ padding-top: 0;
115
+ display: flex;
116
+ align-items: center;
117
+ }
118
+ .base-text-input .v-field__append-inner {
119
+ display: flex;
120
+ padding: 0;
121
+ align-items: center;
122
+ justify-content: center;
123
+ }
124
+
125
+ .base-text-input .v-file-input {
126
+ padding: 0px;
127
+ }
128
+ .base-text-input .v-messages,
129
+ .base-text-input .v-messages__message,
130
+ .base-text-input .v-input__details {
131
+ min-height: unset !important;
132
+ }
133
+ .base-text-input .v-messages__message {
134
+ transition: all 0.5s;
135
+ margin-bottom: 10px;
136
+ }
137
+ .base-text-input .v-input__details {
138
+ padding-bottom: 0 !important;
139
+ padding-top: 0 !important;
140
+ }
141
+ .base-text-input .dp__action_buttons button {
142
+ padding: 6px 9px;
143
+ height: unset;
144
+ }
145
+ .base-text-input .dp__action_select {
146
+ background: #a0b3d8;
147
+ color: white;
148
+ }
149
+ .base-text-input .dp__action_select:hover {
150
+ background: #97acd6;
151
+ }
152
+ .base-text-input .dp__active_date,
153
+ .base-text-input .dp__overlay_cell_active {
154
+ background: #a0b3d8;
155
+ }
156
+ </style>
@@ -71,13 +71,11 @@ const logoutUser = async () => {
71
71
  await dataStore.logoutUser();
72
72
  };
73
73
 
74
- const isProduction = import.meta.env.VITE_MODE === 'production';
75
-
76
74
  const hasHistory = computed(() => {
77
75
  return !dataStore.isLKA;
78
76
  });
79
77
 
80
78
  const openHistory = async () => {
81
- dataStore.sendToParent(constants.postActions.toStatementHistory, dataStore.isBridge || dataStore.isDSO ? '' : dataStore.product);
79
+ dataStore.sendToParent(constants.postActions.toStatementHistory, dataStore.isBridge || dataStore.isDSO || dataStore.isUU ? '' : dataStore.product);
82
80
  };
83
81
  </script>
@@ -114,7 +114,7 @@
114
114
  </section>
115
115
  <base-btn
116
116
  v-if="currentQuestion && currentQuestion.second && currentQuestion.second.length && firstPanel"
117
- class="!absolute z-10 my-[14px] self-center w-[96%] bottom-0"
117
+ class="!absolute z-10 my-[14px] self-center w-[96%] bottom-[-40px]"
118
118
  :text="$dataStore.t('buttons.save')"
119
119
  @click="submitSecondaryForm"
120
120
  />
@@ -629,7 +629,7 @@ export default {
629
629
  const isFromGBD = computed(() => !!member.value.gosPersonData);
630
630
  const showSaveButton = computed(() => {
631
631
  const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
632
- const perMemberCondtion = () => {
632
+ const perMemberCondition = () => {
633
633
  switch (whichForm.value) {
634
634
  case formStore.policyholderFormKey:
635
635
  return true;
@@ -642,7 +642,7 @@ export default {
642
642
  return false;
643
643
  }
644
644
  };
645
- return generalCondition && perMemberCondtion();
645
+ return generalCondition && perMemberCondition();
646
646
  });
647
647
 
648
648
  const hasGBDFL = computed(() => {
@@ -741,7 +741,7 @@ export default {
741
741
 
742
742
  const birthDateRule = computed(() => {
743
743
  const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
744
- const byMemverAndProductRule = () => {
744
+ const byMemberAndProductRule = () => {
745
745
  if (whichForm.value === formStore.policyholderFormKey) {
746
746
  if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
747
747
  return dataStore.rules.age18ByDate;
@@ -757,7 +757,7 @@ export default {
757
757
  }
758
758
  return [];
759
759
  };
760
- return baseDateRule.concat(byMemverAndProductRule());
760
+ return baseDateRule.concat(byMemberAndProductRule());
761
761
  });
762
762
  const ageRule = computed(() => {
763
763
  const baseAgeRule = dataStore.rules.numbers;
@@ -16,7 +16,7 @@ export const constants = Object.freeze({
16
16
  checkcontragent: 1,
17
17
  checkcontract: 2,
18
18
  },
19
- extractedProducts: ['dso'],
19
+ extractedProducts: ['dso', 'uu'],
20
20
  editableStatuses: [Statuses.StartForm, Statuses.EditBeneficiaryForm, Statuses.EditForm],
21
21
  documentsLinkVisibleStatuses: [
22
22
  Statuses.DocumentsSignedFrom,
@@ -2,6 +2,7 @@ import { useDisplay } from 'vuetify';
2
2
  import jwt_decode from 'jwt-decode';
3
3
  import { XMLParser } from 'fast-xml-parser';
4
4
  import { AxiosError } from 'axios';
5
+ import { FieldTypes } from '../types/form';
5
6
 
6
7
  export const getBaseCredentials = () => {
7
8
  return {
@@ -284,3 +285,68 @@ export const getLastDayOfMonth = (year: number, month: number) => {
284
285
  const date = new Date();
285
286
  return new Date(year, month + 1, 0, (date.getTimezoneOffset() / 60) * -1).toISOString();
286
287
  };
288
+
289
+ export const FieldBase = ({
290
+ label = '',
291
+ placeholder = '',
292
+ readonly = false,
293
+ disabled = false,
294
+ modelValue = null,
295
+ iconName = null,
296
+ rules = [],
297
+ maxLength = null,
298
+ clearable = true,
299
+ hint = undefined,
300
+ suffix = null,
301
+ maska = null,
302
+ }: InputBase): InputBase =>
303
+ ({
304
+ label,
305
+ placeholder,
306
+ readonly,
307
+ disabled,
308
+ modelValue,
309
+ iconName,
310
+ rules,
311
+ maxLength,
312
+ clearable,
313
+ hint,
314
+ suffix,
315
+ maska,
316
+ } as InputBase);
317
+
318
+ export const TextInput = ({ ...rest }: Partial<TextInput>): TextInput => {
319
+ return {
320
+ ...FieldBase(rest),
321
+ type: FieldTypes.TEXT,
322
+ };
323
+ };
324
+
325
+ export const SwitchInput = ({ ...rest }: Partial<SwitchInput>): SwitchInput => {
326
+ return {
327
+ ...FieldBase(rest),
328
+ type: FieldTypes.SWITCH,
329
+ direction: 'horizontal',
330
+ trueValue: null,
331
+ falseValue: null,
332
+ labeling: false,
333
+ };
334
+ };
335
+
336
+ export const NumberInput = ({ ...rest }: Partial<NumberInput>): NumberInput => {
337
+ return {
338
+ ...FieldBase(rest),
339
+ type: FieldTypes.NUMBER,
340
+ };
341
+ };
342
+
343
+ export const dynamic = <T>(obj: T, key: keyof T) => {
344
+ return computed({
345
+ get: () => {
346
+ return obj[key];
347
+ },
348
+ set: (val: any) => {
349
+ obj[key] = val;
350
+ },
351
+ });
352
+ };
package/locales/ru.json CHANGED
@@ -641,6 +641,7 @@
641
641
  "reset": "Сбросить",
642
642
  "toExcel": "Экспорт в Excel",
643
643
  "condition": "Условие",
644
+ "sum": "Сумма",
644
645
  "bet": "Ставка",
645
646
  "statistics": "Статистика",
646
647
  "progressBar": "Шкала прогресса",
@@ -768,6 +769,7 @@
768
769
  "job": "Профессия",
769
770
  "jobPosition": "Должность",
770
771
  "jobPlace": "Место работы",
772
+ "jobDesk": "Занимаемая должность и точная описание служебных обязанностей",
771
773
  "placeRegistration": "Место жительство или регистрации",
772
774
  "placePermanent": "Постоянный адрес проживания",
773
775
  "sameAddress": "Совпадает ли адрес с адресом Страхователя?",
@@ -808,7 +810,29 @@
808
810
  "agent": "Агент",
809
811
  "insurancePay": "Страховая выплата подлежит осуществлению",
810
812
  "firstNameLat": "Имя (На латинице)",
811
- "lastNameLat": "Фамилия (На латинице)"
813
+ "lastNameLat": "Фамилия (На латинице)",
814
+ "phDocuments": "Документы Страхователя",
815
+ "insDocuments": "Документы Застрахованного / Выгодоприобретателя",
816
+ "insuredBeneficiaryData": "Сведения о Застрахованном / Выгодоприобретателе",
817
+ "identyDocument": "Документ подтверждающий личность",
818
+ "bankStatement": "Справка из банка",
819
+ "benefDoc": "Документ подтверждающий личность Бенефициарного собственника",
820
+ "insActBasis": "Страхователь действует на основании (Устав. доверенность, приказ и тп)",
821
+ "insActBasisKz": "Сақтанушы (Жарғы, сенімхат, бұйрық және т.б.) негізінде әрекет етеді",
822
+ "insurerAuthority": "Полномочия Страхователя",
823
+ "docNumber": "Номер документа",
824
+ "docDate": "Дата",
825
+ "docType": "Вид документа",
826
+ "issuingAuthority": "Орган выдачи",
827
+ "validUntil": "Действует до",
828
+ "validFrom": "Выдан от",
829
+ "identityDocument": "Документ удостоверяющий личность",
830
+ "toggleContactPerson": "Отметка о наличии (отсутсвии) Контактного лица Застрахованного",
831
+ "contactPersonData": "Сведения о Контактном лице Застрахованного",
832
+ "registrationPlaceOfContactPerson": "Место жительства или регистрации Контактного лица Застрахованного",
833
+ "identityCardOfContactPerson": "Документ удостоверяющий личность Контактного лица Застрахованного",
834
+ "recipientDocs": "Документы Получателя",
835
+ "recipientData": "Сведения о Получателе"
812
836
  },
813
837
  "bankDetailsForm": {
814
838
  "title": "Банковские реквизиты",
@@ -839,6 +863,11 @@
839
863
  "documentsBeneficialOwner": "Документы Бенефициарного собственника",
840
864
  "coveragePeriod": "Период покрытия",
841
865
  "form": {
866
+ "calculation": "Расчеты",
867
+ "paymentAmount": "Размер выплаты",
868
+ "paymentPeriod": "Количество платежей",
869
+ "paymentDate": "Дата первой выплаты",
870
+ "recipient": "Получатель (в случае смерти Застрахованного)",
842
871
  "nameOrganization": "Наименование организации",
843
872
  "listSpecies": "Перечень видов",
844
873
  "numberWorkers": "Кол-во работников",
@@ -882,6 +911,9 @@
882
911
  "recalculationSection": "Раздел переменных для перерасчета"
883
912
  }
884
913
  },
914
+ "uu": {
915
+ "title": "Процесс урегулирования убытков"
916
+ },
885
917
  "dso": {
886
918
  "project": "ДСО",
887
919
  "generalInfo": "Общая информация",
@@ -892,6 +924,10 @@
892
924
  "consumption": "Расход",
893
925
  "remainder": "Остаток",
894
926
  "loans": "Займы",
927
+ "loanNumber":"Номер займа",
928
+ "rewardAmount":"Сумма вознаграждения",
929
+ "loanType":"Тип займа",
930
+ "writeOff":"Списание из ВС",
895
931
  "paymentJournal": "Журнал оплат",
896
932
  "startDate": "Дата начала",
897
933
  "loanAmount": "Сумма займа",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hl-core",
3
- "version": "0.0.9-beta.27",
3
+ "version": "0.0.9-beta.28",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "nuxt.config.ts",
@@ -49,6 +49,7 @@ export const useDataStore = defineStore('data', {
49
49
  isCheckContract: state => state.product === 'checkcontract',
50
50
  isCheckContragent: state => state.product === 'checkcontragent',
51
51
  isDSO: state => state.product === 'dso',
52
+ isUU: state => state.product === 'uu',
52
53
  isEveryFormDisabled: state => Object.values(state.formStore.isDisabled).every(i => i === true),
53
54
  hasClientAnketa: state => state.formStore.additionalInsuranceTerms.find(i => i.coverTypeCode === 10),
54
55
  isClientAnketaCondition: state =>
@@ -1102,7 +1103,7 @@ export const useDataStore = defineStore('data', {
1102
1103
  this.isLoading = false;
1103
1104
  }
1104
1105
  },
1105
- async setINSISWorkData() {
1106
+ async setINSISWorkData(loading: boolean = true) {
1106
1107
  if (!this.formStore.applicationData.insisWorkDataApp) return;
1107
1108
  const data: InsisWorkDataApp = {
1108
1109
  id: this.formStore.applicationData.insisWorkDataApp.id,
@@ -1121,7 +1122,7 @@ export const useDataStore = defineStore('data', {
1121
1122
  insuranceProgramType: this.formStore.applicationData.insisWorkDataApp.insuranceProgramType,
1122
1123
  };
1123
1124
  try {
1124
- this.isLoading = true;
1125
+ this.isLoading = loading;
1125
1126
  await this.api.setINSISWorkData(data);
1126
1127
  } catch (err) {
1127
1128
  ErrorHandler(err);
@@ -0,0 +1,17 @@
1
+ import type { PiniaCustomStateProperties, StoreActions, StoreGeneric, StoreGetters, StoreState } from 'pinia';
2
+ import type { ToRefs } from 'vue';
3
+ import { isReactive, isRef, toRaw, toRef } from 'vue';
4
+ type Extracted<SS> = ToRefs<StoreState<SS> & StoreGetters<SS> & PiniaCustomStateProperties<StoreState<SS>>> & StoreActions<SS>;
5
+ export function extractStore<SS extends StoreGeneric>(store: SS): Extracted<SS> {
6
+ const rawStore = toRaw(store);
7
+ const refs: Record<string, unknown> = {};
8
+
9
+ for (const [key, value] of Object.entries(rawStore)) {
10
+ if (isRef(value) || isReactive(value)) {
11
+ refs[key] = toRef(store, key);
12
+ } else if (typeof value === 'function') {
13
+ refs[key] = value;
14
+ }
15
+ }
16
+ return refs as Extracted<SS>;
17
+ }
package/types/form.ts ADDED
@@ -0,0 +1,73 @@
1
+ export {};
2
+
3
+ export enum FieldTypes {
4
+ TEXT = 'text',
5
+ NUMBER = 'number',
6
+ SWITCH = 'switch',
7
+ EMAIL = 'email',
8
+ PASSWORD = 'password',
9
+ FILE = 'file',
10
+ }
11
+
12
+ declare global {
13
+ type InputType = TextInput | NumberInput | FileInput | SwitchInput;
14
+ type FormMasks = 'numbers' | 'iin' | 'otp' | 'phone' | 'date' | 'post' | 'threeDigit' | 'iik';
15
+ type FormIcons = 'arrowRight' | 'search' | 'sms' | null;
16
+ type Suffix = 'kzt' | 'usd' | 'percent' | null;
17
+
18
+ export interface DynamicForm {
19
+ formRef: any;
20
+ sections: SectionType[];
21
+ fieldOrder?: string[];
22
+ }
23
+
24
+ type InputBase = {
25
+ modelValue?: any;
26
+ clearable?: boolean;
27
+ label?: string;
28
+ placeholder?: string;
29
+ readonly?: boolean;
30
+ disabled?: boolean;
31
+ arrowRight?: boolean;
32
+ maxLength?: number | null;
33
+ rules?: ValidationRule[];
34
+ iconName?: FormIcons;
35
+ value?: number;
36
+ suffix?: Suffix | null;
37
+ hint?: string | undefined;
38
+ maska?: FormMasks | null;
39
+ };
40
+
41
+ type FormControl<T extends InputType> = T & {
42
+ valid: boolean;
43
+ dirty: boolean;
44
+ touched: boolean;
45
+ };
46
+
47
+ type FileInput = InputBase & {
48
+ type: FieldTypes.FILE;
49
+ };
50
+
51
+ type TextInput = InputBase & {
52
+ type: FieldTypes.TEXT;
53
+ };
54
+
55
+ type SwitchInput = InputBase & {
56
+ type: FieldTypes.SWITCH;
57
+ labeling: boolean | null;
58
+ direction: 'horizontal' | 'vertical';
59
+ falseValue: boolean | string | null;
60
+ trueValue: boolean | string | null;
61
+ };
62
+
63
+ type NumberInput = InputBase & {
64
+ type: FieldTypes.NUMBER;
65
+ };
66
+
67
+ type ValidationRule = (value: string) => boolean | string;
68
+
69
+ type SectionType = {
70
+ title?: string;
71
+ fields: InputType[];
72
+ };
73
+ }
package/types/index.ts CHANGED
@@ -23,7 +23,8 @@ declare global {
23
23
  | 'checkcontract'
24
24
  | 'checkcontragent'
25
25
  | 'daskamkorlyk'
26
- | 'dso';
26
+ | 'dso'
27
+ | 'uu';
27
28
  type MemberKeys = keyof ReturnType<typeof useFormStore>;
28
29
  type MemberFormTypes = 'policyholderForm' | 'insuredForm' | 'beneficiaryForm' | 'beneficialOwnerForm' | 'policyholdersRepresentativeForm' | 'productConditionsForm';
29
30
  type SingleMember = 'policyholderForm' | 'policyholdersRepresentativeForm';