mdt-client 31.3.30 → 31.3.31

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 (50) hide show
  1. package/package.json +1 -1
  2. package/types/common/form/tabs/TabsFormExtenderOptions.d.ts +12 -0
  3. package/types/common/list/aggregation/AggregayionTypes.d.ts +2 -0
  4. package/types/common/list/cacheUpdateTime/CacheUpdateTimePublicOptions.d.ts +6 -0
  5. package/types/common/list/cellControlExtender/CellControlExtender.d.ts +1 -0
  6. package/types/common/list/columnMenu/ColumnMenuOptions.d.ts +17 -0
  7. package/types/common/list/columnMenu/QuickFilterOptions.d.ts +7 -0
  8. package/types/common/list/columnMenu/ValuesFilterOptions.d.ts +24 -0
  9. package/types/common/list/form/FormListPublicOptions.d.ts +40 -0
  10. package/types/common/list/gallery/GalleryListExtenderPublicOptions.d.ts +11 -0
  11. package/types/common/list/group/groupTypes.d.ts +119 -86
  12. package/types/common/list/historyType/HistoryTypeListExtenderOptions.d.ts +3 -0
  13. package/types/common/list/labelStyle/LabelStylePublicOptions.d.ts +6 -0
  14. package/types/common/list/legend/LegendListExtenderOptions.d.ts +8 -0
  15. package/types/common/list/listView/ListViewListExtenderOptions.d.ts +25 -0
  16. package/types/common/list/namedFilter/InMemoryNamedFilterOptions.d.ts +23 -0
  17. package/types/common/list/namedFilter/NamedFilterListExtenderPublicOptions.d.ts +29 -0
  18. package/types/common/list/reorder/ReorderListExtenderPublicOptions.d.ts +4 -0
  19. package/types/common/list/select/SelectPublicOptions.d.ts +18 -0
  20. package/types/common/list/styleField/StyleFieldListExtenderPublicOptions.d.ts +3 -0
  21. package/types/common/list/toolbar/ToolbarPublicOptions.d.ts +22 -0
  22. package/types/common/list/virtualScroll/VIrtualScrollPublicOptions.d.ts +7 -0
  23. package/types/components/textWithIcon/textWithIconOptions.d.ts +17 -0
  24. package/types/data/fieldFilter/ToolbarFieldFilterOptions.d.ts +21 -0
  25. package/types/helpers/dateUtils.d.ts +23 -0
  26. package/types/services/api/Query.d.ts +1 -1
  27. package/types/services/customModules/facades/Form/IFormFacade.d.ts +2 -1
  28. package/types/services/customModules/facades/ILegacyFacade.d.ts +12 -0
  29. package/types/services/customModules/facades/List/IListCellFacade.d.ts +1 -1
  30. package/types/services/customModules/facades/List/IListControlFacade.d.ts +1 -1
  31. package/types/services/customModules/facades/List/IListServiceFacade.d.ts +26 -7
  32. package/types/services/customModules/facades/List/ListOptions/IListOptions.d.ts +4 -0
  33. package/types/services/customModules/facades/internalModules/importModuleFacade.d.ts +5 -0
  34. package/types/services/customModules/facades/schema/IObjectFacade.d.ts +6 -1
  35. package/types/services/customModules/facades/schema/ISchemaFacade.d.ts +15 -2
  36. package/types/services/customModules/facades/schema/fieldBuilder/fieldBuilder/IFieldBuilder.d.ts +23 -0
  37. package/types/services/customModules/facades/schema/fieldBuilder/fieldFkBuilder/IFieldFkBuilder.d.ts +8 -0
  38. package/types/services/customModules/facades/services/INavigationFacade.d.ts +5 -1
  39. package/types/services/customModules/facades/utils/IApiFacade.d.ts +1 -1
  40. package/types/services/customModules/facades/utils/IUiComponentsFacade.d.ts +56 -0
  41. package/types/services/customModules/facades/utils/IUtilsFacade.d.ts +199 -1
  42. package/types/services/customModules/facades/utils/ImUtilsFacade.d.ts +16 -0
  43. package/types/views/form/schema/FormPageExtOptions.schema.d.ts +22 -0
  44. package/types/views/gallery/ImageFetchOptions.d.ts +5 -0
  45. package/types/views/list/features/aggregation/AggregationRowListOptions.d.ts +23 -0
  46. package/types/views/list/schema/ListPageExtOptions.schema.d.ts +123 -0
  47. package/types/views/list/schema/ListPageOptions.schema.d.ts +10 -0
  48. package/types/views/page/charts/ChartControlOptions.schema.d.ts +82 -6
  49. package/types/views/page/charts/facade/I/320/241hartControlFacade.d.ts +0 -24
  50. /package/types/views/list/{IListView.d.ts → ListViewOptions.d.ts} +0 -0
@@ -1,3 +1,5 @@
1
+ import { MdtRecord } from "mdtScripts/common/Record";
2
+ import { ButtonFacade } from "./Form/IFormFacade";
1
3
  /** @deprecated */
2
4
  export interface ILegacyFacade {
3
5
  SchemaManagerInstance: any;
@@ -187,4 +189,14 @@ export interface ModulesLegacyFacade {
187
189
  JobHelper: any;
188
190
  };
189
191
  ExportApiAccessor?: any;
192
+ password?: {
193
+ buttons: {
194
+ changePassword: (args: {
195
+ mdtPrincipalRecord: MdtRecord;
196
+ }) => ButtonFacade;
197
+ sendInvitation: (args: {
198
+ mdtPrincipalRecord: MdtRecord;
199
+ }) => ButtonFacade;
200
+ };
201
+ };
190
202
  }
@@ -1,5 +1,5 @@
1
1
  import { ViewElement } from "../../../../helpers/types";
2
- import { ILayoutColumnBase, LayoutColumnValued } from "../../../../views/list/IListView";
2
+ import { ILayoutColumnBase, LayoutColumnValued } from "../../../../views/list/ListViewOptions";
3
3
  import { IListComponentFacade } from "./IListComponentFacade";
4
4
  export interface IListCellFacade extends IListComponentFacade {
5
5
  col: ILayoutColumnBase & LayoutColumnValued;
@@ -6,7 +6,7 @@ import { IListCellFacade } from "./IListCellFacade";
6
6
  import { IObjectFacade } from "../schema/IObjectFacade";
7
7
  import { ListPageOptions } from "../../../../views/list/schema/ListPageOptions.schema";
8
8
  import { FieldCode, FieldPath, ViewElement } from "../../../../helpers/types";
9
- import { ILayoutColumnBase } from "../../../../views/list/IListView";
9
+ import { ILayoutColumnBase } from "../../../../views/list/ListViewOptions";
10
10
  import { ClassNamesArg } from "mdtScripts/helpers/utils/classNames";
11
11
  import { IColumnFacade } from "./Column/IColumnFacade";
12
12
  import { RecordValueFacade } from "../record/IRecordFacade";
@@ -3,13 +3,15 @@ import { Field } from "../../../../../scripts/common/Field";
3
3
  import { ObjectCode, ViewControl } from "../../../../helpers/types";
4
4
  import { MdtRecord } from "../utils/IApiFacade";
5
5
  import { IListControlFacade } from "./IListControlFacade";
6
+ import { IListExtOptions, IListOptions } from "./ListOptions/IListOptions";
7
+ import { IBaseFieldBuilder } from "../schema/fieldBuilder/fieldBuilder/IFieldBuilder";
6
8
  export interface IListInitOptions {
7
9
  /** Уникальный код списка */
8
10
  code?: string;
9
11
  /** Опции списка */
10
- listOptions?: any;
12
+ listOptions?: IListOptions;
11
13
  /** Настройки расширений списка */
12
- extConfig?: any;
14
+ extConfig?: IListExtOptions;
13
15
  }
14
16
  export interface IListServiceFacade {
15
17
  /** Переопределить опции и настройки компонента перед его инициализацией */
@@ -35,19 +37,36 @@ export interface IListServiceFacade {
35
37
  export interface IListExtenderFacade<T> extends Partial<ViewControl> {
36
38
  new (list: IListControlFacade, options: any): T;
37
39
  }
40
+ export interface CustomListSaveOptions<R = MdtRecord> {
41
+ changedRecord: R;
42
+ oldRecord?: R;
43
+ }
38
44
  export interface CustomListOptions<R = MdtRecord> {
39
45
  /** Код объекта списка */
40
46
  code: ObjectCode;
41
- /** Поля списка */
42
- fields: Field[];
47
+ /** Поля списка
48
+ * @example Примеры
49
+ *
50
+ * ```js
51
+ * fields: [
52
+ * Schema.customField("Name", "string", "Имя").length(10),
53
+ * Schema.customField("Age", "number", "Возраст").length(10),
54
+ * Schema.customFkField("Customer", "md.Customer", "Клиент").nullable()
55
+ * ],
56
+ *
57
+ * ```
58
+ */
59
+ fields: (Field | IBaseFieldBuilder)[];
43
60
  /**
44
61
  * Записи списка
62
+ * @deprecated
63
+ * Используйте fetch() вместо этого
45
64
  */
46
65
  records?: R[];
47
66
  /** Опции списка */
48
- listOptions?: any;
67
+ listOptions?: IListOptions;
49
68
  /** Настройки расширений списка */
50
- extConfig?: any;
69
+ extConfig?: IListExtOptions;
51
70
  /** Функция для получения записей списка с возможностью обновления данных или использования пользовательского API */
52
- fetch?: (query: ApiV2.Request.Fetch | ApiV2.Request.Fetch[]) => Promise<MdtRecord[]>;
71
+ fetch?: (query: ApiV2.Request.Fetch | ApiV2.Request.Fetch[]) => Promise<R[]>;
53
72
  }
@@ -0,0 +1,4 @@
1
+ import { ListPageExtOptions } from "mdtScripts/views/list/schema/ListPageExtOptions.schema";
2
+ import { ListPageOptions } from "mdtScripts/views/list/schema/ListPageOptions.schema";
3
+ export declare type IListExtOptions = ListPageExtOptions;
4
+ export declare type IListOptions = ListPageOptions;
@@ -42,6 +42,11 @@ export interface ImportFormSkipRequired {
42
42
  }
43
43
  export interface ImportFormOptions extends PredefinedValues, ImportFormSkipRequired {
44
44
  onSuccessfullyCompleted?: () => void;
45
+ mapping?: ImportMappingDisableKeySelection;
46
+ }
47
+ export interface ImportMappingDisableKeySelection {
48
+ /** Отключить возможность выбора ключевых полей при импорте */
49
+ disableKeySelection?: boolean;
45
50
  }
46
51
  export interface ImportManagerImportOptions {
47
52
  onSuccessfullyCompleted: () => void;
@@ -9,7 +9,12 @@ export interface IObjectFacade {
9
9
  getDefaultField(): IFieldFacade | undefined;
10
10
  getObject(): Table;
11
11
  isReadonly(): boolean;
12
- getField(code: string, check?: boolean): IFieldFacade | undefined;
12
+ /**
13
+ * Получить поле по коду
14
+ * @param code - код поля
15
+ * @param allowNotFound - Если true, возвращает undefined при отсутствии поля, вместо выброса ошибки
16
+ */
17
+ getField(code: string, allowNotFound?: boolean): IFieldFacade | undefined;
13
18
  getId(): ObjectId | undefined;
14
19
  getFields(): IFieldFacade[];
15
20
  }
@@ -1,11 +1,24 @@
1
1
  import { IFieldSettings } from "./IFieldFacade";
2
2
  import { IObjectFacade } from "./IObjectFacade";
3
+ import { BaseBuilderTypes } from "./fieldBuilder/fieldBuilder/IFieldBuilder";
4
+ import { IFieldFkBuilder } from "./fieldBuilder/fieldFkBuilder/IFieldFkBuilder";
3
5
  declare const allFieldPhysicalTypes: readonly ["bigint", "binary", "bit", "char", "date", "datetime", "datetime2", "datetimeoffset", "decimal", "float", "geography", "geometry", "hierarchyid", "image", "int", "money", "nchar", "ntext", "numeric", "nvarchar", "real", "smalldatetime", "smallint", "smallmoney", "sql_variant", "sysname", "text", "time", "timestamp", "tinyint", "uniqueidentifier", "varbinary", "varchar", "xml"];
6
+ export declare const allFieldLogicalTypes: readonly ["number", "money", "long", "string", "date", "time", "datetime", "boolean", "image", "icon", "secret", "identifier", "url", "xml", "markdown", "query", "etl", "json"];
4
7
  export declare type FieldPhysicalType = typeof allFieldPhysicalTypes[number];
8
+ export declare type FieldLogicalType = typeof allFieldLogicalTypes[number];
9
+ export declare type FieldType = FieldPhysicalType | FieldLogicalType;
5
10
  export interface ISchemaFacade {
6
- /** Получить объект по коду или по ID */
7
- getObject(idOrCode: string | number, check?: boolean): IObjectFacade;
11
+ /**
12
+ * Получить объект по коду или по ID
13
+ * @param idOrCode - код или ID объекта для поиска
14
+ * @param allowNotFound - Если true, возвращает undefined при отсутствии объекта, вместо выброса ошибки
15
+ */
16
+ getObject(idOrCode: string | number, allowNotFound?: boolean): IObjectFacade;
8
17
  /** Установить настройки для поля */
9
18
  setFieldSettings(objectCode: string, settings: Record<string, IFieldSettings>): void;
19
+ /** Создать кастомное поле */
20
+ customField<T extends FieldType>(code: string, type: T, title?: string): BaseBuilderTypes[T];
21
+ /** Создать кастомное FK поле */
22
+ customFkField(code: string, refTableCode: string, title?: string): IFieldFkBuilder;
10
23
  }
11
24
  export {};
@@ -0,0 +1,23 @@
1
+ import { Field } from "mdtScripts/common/Field";
2
+ import { FieldType } from "../../ISchemaFacade";
3
+ export interface IFieldBuilder {
4
+ toJson(): Field;
5
+ }
6
+ export interface IBaseFieldBuilder extends IFieldBuilder {
7
+ description(description: string): this;
8
+ nullable(): this;
9
+ primary(): this;
10
+ unique(): this;
11
+ readonly(): this;
12
+ defaultValue(defaultValue: string | number | boolean | Date): this;
13
+ }
14
+ export interface IStringFieldBuilder extends IBaseFieldBuilder {
15
+ length(length: number): this;
16
+ }
17
+ export interface INumberFieldBuilder extends IBaseFieldBuilder {
18
+ identity(): this;
19
+ }
20
+ export interface BaseBuilderTypes extends Record<FieldType, IBaseFieldBuilder> {
21
+ string: IStringFieldBuilder;
22
+ int: INumberFieldBuilder;
23
+ }
@@ -0,0 +1,8 @@
1
+ import { IFieldBuilder } from "../fieldBuilder/IFieldBuilder";
2
+ export interface IFieldFkBuilder extends IFieldBuilder {
3
+ description(description: string): this;
4
+ nullable(): this;
5
+ unique(): this;
6
+ readonly(): this;
7
+ defaultValue(defaultValue: string | number | boolean | Date): this;
8
+ }
@@ -62,6 +62,8 @@ export interface CustomNavNode {
62
62
  controlCode?: NavNodeControl | string;
63
63
  /** Настройки контрола */
64
64
  controlTemplate?: Record<string, any>;
65
+ /** Контрол для страницы */
66
+ pageControl?: Function;
65
67
  }
66
68
  export interface NavigationNodeFacade {
67
69
  code?: string;
@@ -82,6 +84,8 @@ interface CustomNavNodeValue {
82
84
  style?: string;
83
85
  /** Иконка значения узла */
84
86
  icon?: string;
87
+ /** Текст появляющийся при наведении на счетчик. Поддерживается markdown */
88
+ tooltip?: string;
85
89
  }
86
- declare type NavNodeControl = "ListCtrl" | "FormCtrl" | "FkPanelsPage" | "dashboard" | "FirstRecordCtrl";
90
+ export declare type NavNodeControl = "ListCtrl" | "FormCtrl" | "FkPanelsPage" | "dashboard" | "FirstRecordCtrl";
87
91
  export {};
@@ -87,5 +87,5 @@ export interface MdtQueryResult {
87
87
  type: string;
88
88
  }
89
89
  export interface ApiSaveOptions extends QueryExecutionOptions {
90
- messageAction: MessageMetaData;
90
+ messageAction?: MessageMetaData;
91
91
  }
@@ -19,6 +19,7 @@ import { ChartFormControlFacadeOptions, IChartControlFacade } from "../../../../
19
19
  import { CodeEditorFacade, CodeEditorFacadeOptions } from "../components/CodeEditorFacade";
20
20
  import { ButtonFacade } from "../Form/IFormFacade";
21
21
  import { TabularListSettings } from "../../../../views/list/tabular/TabularListTypes";
22
+ import { TextWithIconOptions } from "mdtScripts/components/textWithIcon/textWithIconOptions";
22
23
  export interface IUiComponentsFacade {
23
24
  button(button: ButtonFacade, translate?: boolean): ViewElement;
24
25
  topNavButton(options: TopNavButton): _mithril.MithrilVirtualElement;
@@ -66,6 +67,61 @@ export interface IUiComponentsFacade {
66
67
  }): MithrilControl & {
67
68
  getListCtrl(): any;
68
69
  };
70
+ /**
71
+ * Компонент для отображения разницы между датами.
72
+ *
73
+ * @param date дата события
74
+ * @param base базовая дата относительно которой вычисляется разница во времени. По умолчанию - текущая дата
75
+ *
76
+ * @example
77
+ * **Пример**
78
+ *
79
+ * ```js
80
+ * const startDate = new Date("2024-01-01");
81
+ * const endDate = new Date("2024-01-03");
82
+ * Ui.userFriendlyDatesDistance(startDate);
83
+ * // Результат: "2 дня назад"
84
+ * ```
85
+ *
86
+ * При наведении курсора отображается точная дата и время
87
+ */
88
+ userFriendlyDatesDistance(date: Date, base?: Date): ViewElement;
89
+ /**
90
+ * Выводит иконку и текст с базовым отступом для консистентности системы
91
+ *
92
+ * @param options параметры для создания элемента с иконкой и текстом
93
+ *
94
+ * @example
95
+ * **Примеры**
96
+ *
97
+ * Создать элемент с иконкой и простым текстом:
98
+ * ```js
99
+ * Ui.textWithIcon({
100
+ * icon: { name: "check" },
101
+ * textContent: { text: "Успешно выполнено" }
102
+ * });
103
+ * ```
104
+ *
105
+ * Создать элемент с иконкой и текстом с дополнительными стилями:
106
+ * ```js
107
+ *Ui.textWithIcon({
108
+ *icon: {
109
+ * name: "warning",
110
+ * options: {
111
+ * className: "icon-warning",
112
+ * animate: "flash",
113
+ * tooltip: "Внимание!"
114
+ * }
115
+ *},
116
+ *textContent: {
117
+ * text: "Ошибка загрузки",
118
+ * className: "error-text",
119
+ * attrs: { style: "color: red; font-weight: bold;" }
120
+ *}
121
+ *});
122
+ * ```
123
+ */
124
+ textWithIcon(options: TextWithIconOptions): ViewElement;
69
125
  }
70
126
  export interface IProcessFormBlockOptions {
71
127
  title: string;
@@ -6,11 +6,80 @@ import { AnyObject } from "../../../../helpers/types";
6
6
  import { EventEmitter } from "../../../../helpers/events/EventEmitter";
7
7
  import { Pipeline } from "../../../../helpers/pipeline/Pipeline";
8
8
  import { ImmutableArgPipeline } from "../../../../helpers/pipeline/ImmutableArgPipeline";
9
+ import { MdtDateStringFormat } from "mdtScripts/helpers/dateUtils";
9
10
  export interface IUtilsFacade {
10
11
  ListButtonExtendPipelineService: IListButtonExtendPipelineService;
12
+ /**
13
+ * Переводит текст по ключу из таблицы с локализацией
14
+ *
15
+ * @example Примеры
16
+ *
17
+ * ```js
18
+ * const text = Utils.getText("Save");
19
+ * // text: "Сохранить" (в зависимости от языка)
20
+ *
21
+ * // Допустим есть ключ "Поле {field} отсутствует в таблице {table}"
22
+ * const field = "MDT_FlagActive";
23
+ * const table = "md.Customer"
24
+ * const text = Utils.getText("Field `{field}` is missing in table `{table}`", { field, table });
25
+ * // text: "Поле `MDT_FlagActive` отсутствует в таблице `md.Customer`"
26
+ * ```
27
+ */
11
28
  getText(textCode: string, args?: AnyObject, complex?: true): string;
29
+ /**
30
+ * Форматирует значение
31
+ * - type: "number" - форматирует как число
32
+ * - type: "date" - форматирует как дату
33
+ *
34
+ * @param value Значение
35
+ * @param options Опции форматирования
36
+ *
37
+ * @example Примеры
38
+ *
39
+ * ```js
40
+ * // форматирование даты
41
+ * const today = new Date();
42
+ * const formattedValue = Utils.format(today, { type: "date" });
43
+ * // formattedValue: "01.01.2024"
44
+ *
45
+ * // форматирование числа
46
+ * const formattedValue = Utils.format(123456.789, { type: "number" });
47
+ * // formattedValue: "123 456,79"
48
+ * ```
49
+ */
12
50
  format(value: any, options?: FormatOptions): any;
51
+ /**
52
+ * Генерирует GUID
53
+ *
54
+ * @example Примеры
55
+ *
56
+ * ```js
57
+ * const guid = Utils.guid();
58
+ * ```
59
+ */
13
60
  guid(): string;
61
+ /**
62
+ * Получает значение из localStorage
63
+ *
64
+ * @param key Ключ
65
+ * @param defaultValue Значение по умолчанию
66
+ *
67
+ * @example Примеры
68
+ *
69
+ * ```js
70
+ * const storage = Utils.getStorageItem("feature-name", "default");
71
+ *
72
+ * // Если не было ранее значения
73
+ * const v = storage.get(); // "default"
74
+ *
75
+ * // Если было ранее значение
76
+ * storage.set("value");
77
+ * const v = storage.get(); // "value"
78
+ *
79
+ * // Очистка значения
80
+ * storage.clear();
81
+ * ```
82
+ */
14
83
  getStorageItem<T>(key: string, defaultValue?: T): KeyStorage<T>;
15
84
  /**
16
85
  * Скачать файл по url
@@ -18,9 +87,138 @@ export interface IUtilsFacade {
18
87
  * Увеличить лимит времени загрузки можно с помощью глобальной переменной mdt.file.download.timeLimit
19
88
  */
20
89
  downloadFile(url: string): void;
90
+ /**
91
+ *
92
+ * @example Примеры
93
+ *
94
+ * ```js
95
+ * const value1 = getValued(123), // 123
96
+ * const value2 = getValued(() => 123), // 123
97
+ * ```
98
+ */
21
99
  getValued: typeof getValued;
22
- mergeDeep<T = AnyObject>(object1: T, object2: T): void;
100
+ /**
101
+ * Объединяет два объекта в один. Не мутирует исходные объекты.
102
+ *
103
+ * @param object1 Первый объект
104
+ * @param object2 Второй объект
105
+ *
106
+ * @example Примеры
107
+ *
108
+ * ```js
109
+ * const object1 = { a: 1, b: 2 };
110
+ * const object2 = { b: 3, c: 4 };
111
+ * const result = Utils.mergeDeep(object1, object2);
112
+ * // result: { a: 1, b: 3, c: 4 }
113
+ * ```
114
+ */
115
+ mergeDeep<T = AnyObject>(object1: T, object2: T): AnyObject;
116
+ /**
117
+ * Удаляет элемент из массива (первое вхождение).
118
+ *
119
+ * @param array Массив, из которого нужно удалить элемент
120
+ * @param item Элемент, который нужно удалить
121
+ * @example Примеры
122
+
123
+ * ```js
124
+ * const array = [1, 2, 3, 2];
125
+ * Utils.deleteFromArray(array, 2);
126
+ * // array теперь: [1, 3, 2]
127
+ * ```
128
+ */
129
+ deleteFromArray<T>(array: T[], item: T): void;
130
+ /**
131
+ * Проверяет, является ли примитивное значение пустым (null, undefined).
132
+ *
133
+ * @param value Проверяемое значение
134
+ *
135
+ * @example Примеры
136
+ *
137
+ * ```js
138
+ * Utils.isEmpty(""); // true
139
+ * Utils.isEmpty(null); // true
140
+ * Utils.isEmpty(0); // false
141
+ * Utils.isEmpty("текст"); // false
142
+ * Utils.isEmpty([1,2]); // false
143
+ * ```
144
+ */
145
+ isEmpty(value: unknown): boolean;
146
+ date: {
147
+ /**
148
+ * Преобразует строку даты из строкового формата в объект Date.
149
+ *
150
+ * @param dateString Строка даты в формате "дд.мм.гггг" или "дд.мм.гггг чч:мм:сс"
151
+ *
152
+ * @example Примеры
153
+ *
154
+ * ```js
155
+ * const date = Utils.date.stringDateToDate("01.02.2024");
156
+ * ```
157
+ */
158
+ stringDateToDate(dateString: MdtDateStringFormat): Date;
159
+ /**
160
+ * Преобразует объект Date в строку формата "дд.мм.гггг" или "дд.мм.гггг чч:мм:сс".
161
+ *
162
+ * @param date Объект Date
163
+ *
164
+ * @example Примеры
165
+ *
166
+ * ```js
167
+ * Utils.date.dateToStringDate(new Date(2024, 0, 2)); // "02.01.2024"
168
+ * Utils.date.dateToStringDate(new Date(2024, 0, 2, 10, 30, 0)); // "02.01.2024 10:30:00"
169
+ * ```
170
+ */
171
+ dateToStringDate(date: Date, withTime: boolean): string;
172
+ /**
173
+ * Преобразует объект Date в строку формата ISO8601 ("гггг-мм-дд").
174
+ *
175
+ * @param date Объект Date
176
+ *
177
+ * @example Примеры
178
+ *
179
+ * ```js
180
+ * Utils.date.dateToISO8601(new Date(2024, 0, 2)); // "2024-01-02"
181
+ * ```
182
+ */
183
+ dateToISO8601(date: Date): string;
184
+ /**
185
+ * Проверяет, равны ли две даты.
186
+ *
187
+ * @param date1 Первая дата
188
+ * @param date2 Вторая дата
189
+ * @param options Опции сравнения (например, ignoreTime — игнорировать время)
190
+ *
191
+ * @example Примеры
192
+ *
193
+ * ```js
194
+ * Utils.date.isDateEqual(new Date(2024, 0, 2), new Date(2024, 0, 2)); // true
195
+ * Utils.date.isDateEqual(new Date(2024, 0, 2, 10), new Date(2024, 0, 2, 15), { ignoreTime: true }); // true
196
+ * ```
197
+ */
198
+ isDateEqual(date1: Date, date2: Date, options?: IsDateEqualOptions): boolean;
199
+ };
200
+ /**
201
+ * Позволяет определять события, подписываться на них и вызывать
202
+ *
203
+ * @example Примеры
204
+ *
205
+ * ```typescript
206
+ * interface Events {
207
+ * "custom-event": { data: string }
208
+ * }
209
+ *
210
+ * const eventEmitter = new EventEmitter<Events>();
211
+ * // Подписка на событие
212
+ * eventEmitter.on("custom-event", (data) => console.log(data));
213
+ * // Вызов события
214
+ * eventEmitter.emit("custom-event", { data: "data" }); // выведет "data"
215
+ *
216
+ * ```
217
+ */
23
218
  EventEmitter: typeof EventEmitter;
24
219
  Pipeline: typeof Pipeline;
25
220
  ImmutableArgPipeline: typeof ImmutableArgPipeline;
26
221
  }
222
+ export declare type IsDateEqualOptions = {
223
+ ignoreTime?: boolean;
224
+ };
@@ -1,5 +1,6 @@
1
1
  /// <reference types="../../../../mithril" />
2
2
  /// <reference types="mithril" />
3
+ import { ClassNamesArg } from "mdtScripts/helpers/utils/classNames";
3
4
  import { MithrilControl } from "../../../../helpers/types";
4
5
  export declare type ConfigFunction = (element: HTMLElement, isInitialized: boolean, context?: any) => void;
5
6
  export interface ImUtilsFacade {
@@ -23,4 +24,19 @@ export interface ImUtilsFacade {
23
24
  }, attr?: string, value?: string, op?: boolean): void;
24
25
  /** Проверить наличие view у компонента */
25
26
  hasView(ctrl: MithrilControl): boolean;
27
+ /**
28
+ * Формирует строку CSS-классов из набора аргументов (строки, объекты, массивы).
29
+ *
30
+ * @param args Список классов, объектов или массивов, которые будут объединены в одну строку
31
+ *
32
+ * @example
33
+ * Utils.classNames('foo', 'bar'); // 'foo bar'
34
+ * Utils.classNames('foo', { bar: true }); // 'foo bar'
35
+ * Utils.classNames({ 'foo-bar': true }); // 'foo-bar'
36
+ * Utils.classNames({ 'foo-bar': false }); // ''
37
+ * Utils.classNames({ foo: true }, { bar: true }); // 'foo bar'
38
+ * Utils.classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // 'foo bar baz quux'
39
+ * Utils.classNames(null, false, 'bar', undefined, 0, { baz: null }, ''); // 'bar'
40
+ */
41
+ classNames(...args: ClassNamesArg[]): string;
26
42
  }
@@ -0,0 +1,22 @@
1
+ import { TabsFormExtenderPublicOptions } from "mdtScripts/common/form/tabs/TabsFormExtenderOptions";
2
+ export interface FormPageExtOptions {
3
+ /**
4
+ * Вкладки на форме
5
+ */
6
+ tabs?: TabsFormExtenderPublicOptions;
7
+ /**
8
+ * Добавляет блок с вложениями на форму
9
+ *
10
+ * Для работы необходимо o2m-поле на таблицу со ссылкой на mdt.File
11
+ *
12
+ * @default false
13
+ */
14
+ attachment?: boolean;
15
+ /**
16
+ * Выводит дату создания и имя автора записи при наличии специальных полей (MDT_DateCreate и MDT_ID_PrincipalCreatedBy)
17
+ *
18
+ * @markdownDescription "Выводит дату создания и имя автора записи при наличии полей `MDT_DateCreate` и `MDT_ID_PrincipalCreatedBy`"
19
+ * @default false
20
+ */
21
+ common?: boolean;
22
+ }
@@ -0,0 +1,5 @@
1
+ export interface ImageFetchOptions {
2
+ height?: number;
3
+ width?: number;
4
+ mode?: "fit" | "fill";
5
+ }
@@ -0,0 +1,23 @@
1
+ import { AggregationType } from "mdtScripts/common/list/aggregation/AggregayionTypes";
2
+ export interface AggregationRowListOptions {
3
+ /** Пути к агрегируемым полям */
4
+ fields: {
5
+ [fieldCode: string]: AggregationType | AggregationTypeOptions;
6
+ };
7
+ /** Показывать тип агрегации в строке. По-умолчанию `true` */
8
+ showTitle?: boolean;
9
+ }
10
+ export interface AggregationTypeOptions {
11
+ type: AggregationType;
12
+ /**
13
+ * @title Маска по которой будет отформатировано.
14
+ * @description Подробнее можно [узнать в статье](https://ics-it.gram.ax/mdt/content/dataView/formatMask).
15
+ */
16
+ mask?: string;
17
+ /**
18
+ * @default true
19
+ */
20
+ inheritFieldMask?: boolean;
21
+ title?: string;
22
+ tooltip?: string;
23
+ }