@snabcentr/vue-ui-lib 2.28.2 → 2.29.1

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.
@@ -22,7 +22,7 @@ export interface ICategoryEmits {
22
22
  */
23
23
  isLoadingState: Ref<boolean>;
24
24
  /**
25
- * Целевой компонент каталога, вызывающий событие.
25
+ * Целевой компонент каталога, инициировавший событие.
26
26
  */
27
27
  target: InstanceType<typeof CollapseItem>;
28
28
  };
@@ -39,7 +39,7 @@ export interface ICategoryEmits {
39
39
  */
40
40
  checked: boolean;
41
41
  /**
42
- * Целевой компонент каталога, вызывающий событие.
42
+ * Целевой компонент каталога, инициировавший событие.
43
43
  */
44
44
  target: InstanceType<typeof CollapseItem>;
45
45
  };
@@ -52,7 +52,7 @@ export interface ICategoryEmits {
52
52
  */
53
53
  category: Readonly<CategoryData>;
54
54
  /**
55
- * Целевой компонент каталога, вызывающий событие.
55
+ * Целевой компонент каталога, инициировавший событие.
56
56
  */
57
57
  target: InstanceType<typeof CollapseItem>;
58
58
  };
@@ -65,7 +65,7 @@ export interface ICategoryEmits {
65
65
  */
66
66
  category: Readonly<CategoryData>;
67
67
  /**
68
- * Целевой компонент каталога, вызывающий событие.
68
+ * Целевой компонент каталога, инициировавший событие.
69
69
  */
70
70
  target: InstanceType<typeof CollapseItem>;
71
71
  };
@@ -78,7 +78,20 @@ export interface ICategoryEmits {
78
78
  */
79
79
  category: Readonly<CategoryData>;
80
80
  /**
81
- * Целевой компонент каталога, вызывающий событие.
81
+ * Целевой компонент каталога, инициировавший событие.
82
+ */
83
+ target: InstanceType<typeof CollapseItem>;
84
+ };
85
+ /**
86
+ * Событие нажатия на кнопку "Дополнительная продажа".
87
+ */
88
+ 'category:required': {
89
+ /**
90
+ * Данные о категории, для которой необходимо изменить значение флага "Дополнительная продажа".
91
+ */
92
+ category: Readonly<CategoryData>;
93
+ /**
94
+ * Целевой компонент каталога, инициировавший событие.
82
95
  */
83
96
  target: InstanceType<typeof CollapseItem>;
84
97
  };
@@ -91,7 +104,7 @@ export interface ICategoryEmits {
91
104
  */
92
105
  category: Readonly<CategoryData>;
93
106
  /**
94
- * Целевой компонент каталога, вызывающий событие.
107
+ * Целевой компонент каталога, инициировавший событие.
95
108
  */
96
109
  target: InstanceType<typeof CollapseItem>;
97
110
  };
@@ -108,7 +121,7 @@ export interface ICategoryEmits {
108
121
  */
109
122
  key: string | number;
110
123
  /**
111
- * Целевой компонент каталога, вызывающий событие.
124
+ * Целевой компонент каталога, инициировавший событие.
112
125
  */
113
126
  target: InstanceType<typeof CollapseItem>;
114
127
  };
@@ -14,7 +14,7 @@ export interface IProductEmits {
14
14
  /**
15
15
  * Признак, что маркер выбора установлен.
16
16
  */
17
- isChecked: boolean;
17
+ checked: boolean;
18
18
  };
19
19
  /**
20
20
  * Событие нажатия на название продукта.
@@ -60,4 +60,13 @@ export interface IProductEmits {
60
60
  */
61
61
  key: string | number;
62
62
  };
63
+ /**
64
+ * Событие нажатия на кнопку "Дополнительная продажа".
65
+ */
66
+ 'product:required': {
67
+ /**
68
+ * Данные о продукте, который необходимо пометить флагом "Дополнительная продажа".
69
+ */
70
+ product: Readonly<ProductData>;
71
+ };
63
72
  }
@@ -1,5 +1,6 @@
1
1
  import { ICatalogableItemProperties } from './i-catalogable-item-properties';
2
- import { CategoryData, ProductData, SearchResult } from '@snabcentr/common-lib';
2
+ import { ButtonState, ButtonStateFunction } from '../../../types/button-state';
3
+ import { CategoryData, SearchResult } from '@snabcentr/common-lib';
3
4
  import { DropdownDividerOption, DropdownGroupOption, DropdownOption, DropdownRenderOption } from 'naive-ui';
4
5
  /**
5
6
  * Список свойств компонентов каталога.
@@ -10,27 +11,25 @@ export interface ICatalogProperties extends ICatalogableItemProperties {
10
11
  */
11
12
  filteredItems?: SearchResult;
12
13
  /**
13
- * Список выбранных категорий.
14
- * Если значение равно {@link undefined}, то checkbox выбора записей будет скрыт (не отображается).
14
+ * Признак того, что категория должна быть выбрана.
15
15
  */
16
- selectedCategoriesItems?: CategoryData[];
16
+ isCategoryItemSelected?: ButtonStateFunction<CategoryData>;
17
17
  /**
18
- * Список выбранных продуктов.
19
- * Если значение равно {@link undefined}, то checkbox выбора записей будет скрыт (не отображается).
18
+ * Признак необходимости отобразить кнопку управления видимостью категории для клиента.
20
19
  */
21
- selectedProductsItems?: ProductData[];
20
+ showCategoryHideForClientButton?: ButtonState | ButtonStateFunction<CategoryData>;
22
21
  /**
23
- * Признак необходимости отобразить кнопку управления видимостью записи для клиента.
22
+ * Признак необходимости отобразить кнопку управления флагом "Дополнительная продажа" категории.
24
23
  */
25
- showHideForClientButton?: boolean | ((category: CategoryData) => boolean);
24
+ showCategoryRequiredButton?: ButtonState | ButtonStateFunction<CategoryData>;
26
25
  /**
27
- * Признак необходимости отобразить кнопку закрепления записи.
26
+ * Признак необходимости отобразить кнопку закрепления категории.
28
27
  */
29
- showPinButton?: boolean | ((category: CategoryData) => boolean);
28
+ showCategoryPinButton?: ButtonState | ButtonStateFunction<CategoryData>;
30
29
  /**
31
- * Признак необходимости отобразить кнопку редактирования записи продукта.
30
+ * Признак необходимости отобразить кнопку редактирования категории.
32
31
  */
33
- showCategoryEditButton?: boolean | ((category: CategoryData) => boolean);
32
+ showCategoryEditButton?: ButtonState | ButtonStateFunction<CategoryData>;
34
33
  /**
35
34
  * Конфигурация меню контекста категории.
36
35
  */
@@ -1,9 +1,10 @@
1
1
  import { ICatalogEmits } from '../events/i-catalog-emits';
2
+ import { ButtonState, ButtonStateFunction } from '../../../types/button-state';
2
3
  import { ProductData } from '@snabcentr/common-lib';
3
4
  import { Emitter } from 'mitt';
4
5
  import { DropdownDividerOption, DropdownGroupOption, DropdownOption, DropdownRenderOption } from 'naive-ui';
5
6
  /**
6
- * Список свойств компонентов каталога (категорий/товаров).
7
+ * Список свойств компонентов каталога (товаров).
7
8
  */
8
9
  export interface ICatalogableItemProperties {
9
10
  /**
@@ -39,14 +40,22 @@ export interface ICatalogableItemProperties {
39
40
  * Признак необходимости отобразить дату последнего обновления цены.
40
41
  */
41
42
  showCostDate?: boolean | ((product: ProductData) => boolean);
43
+ /**
44
+ * Признак того, что продукт должен быть выбран.
45
+ */
46
+ isProductItemSelected?: ButtonStateFunction<ProductData>;
42
47
  /**
43
48
  * Признак необходимости отобразить кнопку добавления продукта в корзину.
44
49
  */
45
- showProductAddToCartButton?: boolean | ((product: ProductData) => boolean);
50
+ showProductAddToCartButton?: ButtonState | ButtonStateFunction<ProductData>;
51
+ /**
52
+ * Признак необходимости отобразить кнопку управления флагом "Дополнительная продажа" продукта.
53
+ */
54
+ showProductRequiredButton?: ButtonState | ButtonStateFunction<ProductData>;
46
55
  /**
47
56
  * Признак необходимости отобразить кнопку редактирования записи продукта.
48
57
  */
49
- showProductEditButton?: boolean | ((product: ProductData) => boolean);
58
+ showProductEditButton?: ButtonState | ButtonStateFunction<ProductData>;
50
59
  /**
51
60
  * Список коэффициентов пересчёта из валют в рубли в формате ключ значение.
52
61
  */
@@ -1,3 +1,4 @@
1
+ import { ButtonState, ButtonStateFunction } from '../../../types';
1
2
  import { ProductData } from '@snabcentr/common-lib';
2
3
  import { DropdownDividerOption, DropdownGroupOption, DropdownOption, DropdownRenderOption } from 'naive-ui';
3
4
  /**
@@ -7,11 +8,15 @@ export interface IProductActionsProperties {
7
8
  /**
8
9
  * Признак необходимости отобразить кнопку добавления продукта в корзину.
9
10
  */
10
- showProductAddToCartButton?: boolean | ((product: ProductData) => boolean);
11
+ showProductAddToCartButton?: ButtonState | ButtonStateFunction<ProductData>;
11
12
  /**
12
13
  * Признак необходимости отобразить кнопку редактирования записи продукта.
13
14
  */
14
- showProductEditButton?: boolean | ((product: ProductData) => boolean);
15
+ showProductEditButton?: ButtonState | ButtonStateFunction<ProductData>;
16
+ /**
17
+ * Признак необходимости отобразить кнопку управления дополнительными продажами.
18
+ */
19
+ showProductRequiredButton?: ButtonState | ButtonStateFunction<ProductData>;
15
20
  /**
16
21
  * Конфигурация меню контекста продукта.
17
22
  */
@@ -11,14 +11,15 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<IC
11
11
  showCostDate: boolean | ((product: ProductData) => boolean);
12
12
  allowNameClick: boolean | ((product: ProductData) => boolean);
13
13
  allowPriceClick: boolean | ((product: ProductData) => boolean);
14
- showProductAddToCartButton: boolean | ((product: ProductData) => boolean);
15
- showProductEditButton: boolean | ((product: ProductData) => boolean);
14
+ showProductAddToCartButton: import('../..').ButtonState | import('../..').ButtonStateFunction<ProductData>;
15
+ showProductEditButton: import('../..').ButtonState | import('../..').ButtonStateFunction<ProductData>;
16
16
  productContextButtonsConfig: (product: ProductData) => Array<import('naive-ui').DropdownOption | import('naive-ui').DropdownGroupOption | import('naive-ui').DropdownDividerOption | import('naive-ui').DropdownRenderOption>;
17
- selectedCategoriesItems: import('@snabcentr/common-lib').CategoryData[];
18
- selectedProductsItems: ProductData[];
19
- showHideForClientButton: boolean | ((category: import('@snabcentr/common-lib').CategoryData) => boolean);
20
- showPinButton: boolean | ((category: import('@snabcentr/common-lib').CategoryData) => boolean);
21
- showCategoryEditButton: boolean | ((category: import('@snabcentr/common-lib').CategoryData) => boolean);
17
+ isProductItemSelected: import('../..').ButtonStateFunction<ProductData>;
18
+ isCategoryItemSelected: import('../..').ButtonStateFunction<import('@snabcentr/common-lib').CategoryData>;
19
+ showCategoryHideForClientButton: import('../..').ButtonState | import('../..').ButtonStateFunction<import('@snabcentr/common-lib').CategoryData>;
20
+ showCategoryRequiredButton: import('../..').ButtonState | import('../..').ButtonStateFunction<import('@snabcentr/common-lib').CategoryData>;
21
+ showCategoryPinButton: import('../..').ButtonState | import('../..').ButtonStateFunction<import('@snabcentr/common-lib').CategoryData>;
22
+ showCategoryEditButton: import('../..').ButtonState | import('../..').ButtonStateFunction<import('@snabcentr/common-lib').CategoryData>;
22
23
  categoryContextButtonsConfig: (category: import('@snabcentr/common-lib').CategoryData) => Array<import('naive-ui').DropdownOption | import('naive-ui').DropdownGroupOption | import('naive-ui').DropdownDividerOption | import('naive-ui').DropdownRenderOption>;
23
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
24
25
  'collapse-item-reference': ({
@@ -80,9 +81,7 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<IC
80
81
  };
81
82
  $forceUpdate: () => void;
82
83
  $nextTick: typeof import('vue').nextTick;
83
- $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (... /**
84
- * Признак, что в категории имеются дочерние категории.
85
- */args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
84
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
86
85
  } & Readonly<{
87
86
  name: string | number;
88
87
  title: string;
@@ -11,15 +11,11 @@ declare const _default: import('vue').DefineComponent<ICategoryCollapsePropertie
11
11
  showCostDate: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
12
12
  allowNameClick: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
13
13
  allowPriceClick: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
14
- showProductAddToCartButton: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
15
- showProductEditButton: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
14
+ showProductAddToCartButton: import('../..').ButtonState | import('../..').ButtonStateFunction<import('@snabcentr/common-lib').ProductData>;
15
+ showProductEditButton: import('../..').ButtonState | import('../..').ButtonStateFunction<import('@snabcentr/common-lib').ProductData>;
16
16
  productContextButtonsConfig: (product: import('@snabcentr/common-lib').ProductData) => Array<import('naive-ui').DropdownOption | import('naive-ui').DropdownGroupOption | import('naive-ui').DropdownDividerOption | import('naive-ui').DropdownRenderOption>;
17
17
  filteredItems: SearchResult;
18
- selectedCategoriesItems: CategoryData[];
19
- selectedProductsItems: import('@snabcentr/common-lib').ProductData[];
20
- showHideForClientButton: boolean | ((category: CategoryData) => boolean);
21
- showPinButton: boolean | ((category: CategoryData) => boolean);
22
- showCategoryEditButton: boolean | ((category: CategoryData) => boolean);
18
+ showCategoryEditButton: import('../..').ButtonState | import('../..').ButtonStateFunction<CategoryData>;
23
19
  categoryContextButtonsConfig: (category: CategoryData) => Array<import('naive-ui').DropdownOption | import('naive-ui').DropdownGroupOption | import('naive-ui').DropdownDividerOption | import('naive-ui').DropdownRenderOption>;
24
20
  loading: boolean;
25
21
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,55 +1,22 @@
1
1
  import { ProductData } from '@snabcentr/common-lib';
2
- import { DropdownDividerOption, DropdownGroupOption, DropdownOption, DropdownRenderOption } from 'naive-ui';
3
- import { Emitter } from 'mitt';
4
- import { ICatalogEmits } from '../../../catalog/interfaces/events/i-catalog-emits';
2
+ import { ICatalogableItemProperties } from '../../../catalog/interfaces/properties/i-catalogable-item-properties';
5
3
  /**
6
4
  * Компонент с кнопками действий над продуктом.
7
5
  */
8
- declare const _default: import('vue').DefineComponent<{
6
+ declare const _default: import('vue').DefineComponent<Pick<ICatalogableItemProperties, "eventEmitter" | "showProductAddToCartButton" | "showProductEditButton" | "showProductRequiredButton" | "productContextButtonsConfig"> & {
9
7
  /**
10
8
  * Данные о продукте.
11
9
  */
12
10
  product: ProductData;
13
- /**
14
- * Механизм, обеспечивающий генерацию событий каталога.
15
- */
16
- eventEmitter: Emitter<ICatalogEmits>;
17
- /**
18
- * Признак необходимости отобразить кнопку добавления продукта в корзину.
19
- */
20
- showProductAddToCartButton?: boolean | ((product: ProductData) => boolean);
21
- /**
22
- * Признак необходимости отобразить кнопку редактирования записи продукта.
23
- */
24
- showProductEditButton?: boolean | ((product: ProductData) => boolean);
25
- /**
26
- * Конфигурация меню контекста продукта.
27
- */
28
- productContextButtonsConfig?: (product: ProductData) => Array<DropdownOption | DropdownGroupOption | DropdownDividerOption | DropdownRenderOption>;
29
- }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
11
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Pick<ICatalogableItemProperties, "eventEmitter" | "showProductAddToCartButton" | "showProductEditButton" | "showProductRequiredButton" | "productContextButtonsConfig"> & {
30
12
  /**
31
13
  * Данные о продукте.
32
14
  */
33
15
  product: ProductData;
34
- /**
35
- * Механизм, обеспечивающий генерацию событий каталога.
36
- */
37
- eventEmitter: Emitter<ICatalogEmits>;
38
- /**
39
- * Признак необходимости отобразить кнопку добавления продукта в корзину.
40
- */
41
- showProductAddToCartButton?: boolean | ((product: ProductData) => boolean);
42
- /**
43
- * Признак необходимости отобразить кнопку редактирования записи продукта.
44
- */
45
- showProductEditButton?: boolean | ((product: ProductData) => boolean);
46
- /**
47
- * Конфигурация меню контекста продукта.
48
- */
49
- productContextButtonsConfig?: (product: ProductData) => Array<DropdownOption | DropdownGroupOption | DropdownDividerOption | DropdownRenderOption>;
50
16
  }> & Readonly<{}>, {
51
- showProductAddToCartButton: boolean | ((product: ProductData) => boolean);
52
- showProductEditButton: boolean | ((product: ProductData) => boolean);
53
- productContextButtonsConfig: (product: ProductData) => Array<DropdownOption | DropdownGroupOption | DropdownDividerOption | DropdownRenderOption>;
17
+ showProductAddToCartButton: import('../../..').ButtonState | import('../../..').ButtonStateFunction<ProductData>;
18
+ showProductEditButton: import('../../..').ButtonState | import('../../..').ButtonStateFunction<ProductData>;
19
+ showProductRequiredButton: import('../../..').ButtonState | import('../../..').ButtonStateFunction<ProductData>;
20
+ productContextButtonsConfig: (product: ProductData) => Array<import('naive-ui').DropdownOption | import('naive-ui').DropdownGroupOption | import('naive-ui').DropdownDividerOption | import('naive-ui').DropdownRenderOption>;
54
21
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
55
22
  export default _default;
@@ -19,8 +19,9 @@ declare const _default: import('vue').DefineComponent<IProductNameProperties & I
19
19
  allowNameClick: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
20
20
  allowPriceClick: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
21
21
  currencyRates: Record<string, number>;
22
- showProductAddToCartButton: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
23
- showProductEditButton: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
22
+ showProductAddToCartButton: import('../../..').ButtonState | import('../../..').ButtonStateFunction<import('@snabcentr/common-lib').ProductData>;
23
+ showProductEditButton: import('../../..').ButtonState | import('../../..').ButtonStateFunction<import('@snabcentr/common-lib').ProductData>;
24
+ showProductRequiredButton: import('../../..').ButtonState | import('../../..').ButtonStateFunction<import('@snabcentr/common-lib').ProductData>;
24
25
  productContextButtonsConfig: (product: import('@snabcentr/common-lib').ProductData) => Array<import('naive-ui').DropdownOption | import('naive-ui').DropdownGroupOption | import('naive-ui').DropdownDividerOption | import('naive-ui').DropdownRenderOption>;
25
26
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
26
27
  'image-gallery': ({
@@ -7,6 +7,10 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
7
7
  * Текст в области выбора файла.
8
8
  */
9
9
  draggedAreaText?: string;
10
+ /**
11
+ * Типы файлов, которые можно загружать.
12
+ */
13
+ accept?: string;
10
14
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
15
  "update:file": (file: IFile) => any;
12
16
  }, string, import('vue').PublicProps, Readonly<{
@@ -14,6 +18,10 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
14
18
  * Текст в области выбора файла.
15
19
  */
16
20
  draggedAreaText?: string;
21
+ /**
22
+ * Типы файлов, которые можно загружать.
23
+ */
24
+ accept?: string;
17
25
  }> & Readonly<{
18
26
  "onUpdate:file"?: ((file: IFile) => any) | undefined;
19
27
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Состояние кнопки.
3
+ */
4
+ export type ButtonState = boolean | 'disabled';
5
+ /**
6
+ * Функция для получения состояния кнопки.
7
+ */
8
+ export type ButtonStateFunction<T> = (item: T) => ButtonState;
@@ -1 +1,2 @@
1
1
  export * from './validation-status';
2
+ export * from './button-state';
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [],
5
5
  "author": "Sergey S. Smirnov <dev@snabcentr.com>",
6
6
  "type": "module",
7
- "version": "2.28.2",
7
+ "version": "2.29.1",
8
8
  "license": "ISC",
9
9
  "scripts": {
10
10
  "dev": "vite",
@@ -45,7 +45,7 @@
45
45
  "@iconify-json/logos": "^1.2.9",
46
46
  "@iconify-json/mdi": "^1.2.3",
47
47
  "@iconify-json/tabler": "^1.2.22",
48
- "@snabcentr/common-lib": "^1.68.0",
48
+ "@snabcentr/common-lib": "^1.71.1",
49
49
  "@tailwindcss/container-queries": "^0.1.1",
50
50
  "date-fns": "^3.6.0",
51
51
  "libphonenumber-js": "^1.12.15",