@snabcentr/vue-ui-lib 4.21.0 → 4.22.0

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.
@@ -31,6 +31,11 @@ export interface ICatalogableItemProperties {
31
31
  * Признак возможности клика по цене (если отображены цены).
32
32
  */
33
33
  allowPriceClick?: boolean | ((product: ProductData) => boolean);
34
+ /**
35
+ * Признак необходимости отображения кнопки просмотра описания, характеристик и файлов продукта.
36
+ * Кнопка отображается только у продуктов, у которых заданы описание, характеристики или файлы.
37
+ */
38
+ showProductInfoButton?: boolean | ((product: ProductData) => boolean);
34
39
  /**
35
40
  * Признак необходимости отображения истории цен.
36
41
  * Значок истории цен будет отображён только при отображении даты установки цены.
@@ -34,6 +34,11 @@ export interface IProductNameProperties extends IProductActionsProperties {
34
34
  * Признак необходимости отображения дат планирования производства/поставки и т.д.
35
35
  */
36
36
  showPlanningDates?: boolean;
37
+ /**
38
+ * Признак необходимости отображения кнопки просмотра описания, характеристик и файлов продукта.
39
+ * Кнопка отображается только у продуктов, у которых заданы описание, характеристики или файлы.
40
+ */
41
+ showProductInfoButton?: boolean | ((product: ProductData) => boolean);
37
42
  /**
38
43
  * Признак необходимости отображения истории цен.
39
44
  * Значок истории цен будет отображён только при отображении даты установки цены.
@@ -7,6 +7,7 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<IC
7
7
  showSlugs: boolean;
8
8
  showProperties: boolean;
9
9
  showProductCosts: boolean | ((product: ProductData) => boolean);
10
+ showProductInfoButton: boolean | ((product: ProductData) => boolean);
10
11
  showPriceHistory: boolean | ((product: ProductData) => boolean);
11
12
  showCostDate: boolean | ((product: ProductData) => boolean);
12
13
  allowNameClick: boolean | ((product: ProductData) => boolean);
@@ -8,6 +8,7 @@ declare const _default: import('vue').DefineComponent<ICategoryCollapsePropertie
8
8
  showSlugs: boolean;
9
9
  showProperties: boolean;
10
10
  showProductCosts: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
11
+ showProductInfoButton: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
11
12
  showPriceHistory: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
12
13
  showCostDate: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
13
14
  allowNameClick: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
@@ -94,12 +94,12 @@ declare const _default: import('vue').DefineComponent<{}, {
94
94
  closing: (target: import('../..').CloseTarget, cancel: () => void) => any;
95
95
  }, string, {
96
96
  trapFocus: boolean;
97
- modalWidth: number;
98
97
  sizes: {
99
98
  phone: import('../..').IDialogSizeParams;
100
99
  tablet: import('../..').IDialogSizeParams;
101
100
  default: import('../..').IDialogSizeParams;
102
101
  };
102
+ modalWidth: number;
103
103
  processing: boolean;
104
104
  valid: boolean;
105
105
  acceptButton: import('../..').IDialogButtonsParams;
@@ -126,12 +126,12 @@ declare const _default: import('vue').DefineComponent<{}, {
126
126
  $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;
127
127
  } & Readonly<{
128
128
  trapFocus: boolean;
129
- modalWidth: number;
130
129
  sizes: {
131
130
  phone: import('../..').IDialogSizeParams;
132
131
  tablet: import('../..').IDialogSizeParams;
133
132
  default: import('../..').IDialogSizeParams;
134
133
  };
134
+ modalWidth: number;
135
135
  processing: boolean;
136
136
  valid: boolean;
137
137
  acceptButton: import('../..').IDialogButtonsParams;
@@ -156,7 +156,7 @@ declare const _default: import('vue').DefineComponent<{}, {
156
156
  onOpening?: (() => any) | undefined;
157
157
  "onProcessing:cancel"?: ((processingCallback: (processing: boolean) => void) => any) | undefined;
158
158
  onClosing?: ((target: import('../..').CloseTarget, cancel: () => void) => any) | undefined;
159
- }>, "close" | "acceptHandler" | ("trapFocus" | "modalWidth" | "sizes" | "processing" | "valid" | "acceptButton" | "cancelButton") | "open"> & import('vue').ShallowUnwrapRef<{
159
+ }>, "close" | "acceptHandler" | ("trapFocus" | "sizes" | "modalWidth" | "processing" | "valid" | "acceptButton" | "cancelButton") | "open"> & import('vue').ShallowUnwrapRef<{
160
160
  open: () => void;
161
161
  close: (target?: import('../..').CloseTarget, force?: boolean) => void;
162
162
  acceptHandler: () => void;
@@ -1 +1,2 @@
1
1
  export { default as ScAddProductToCartDialog } from './add-product-to-cart-dialog.vue';
2
+ export { default as ScProductInfoDialog } from './product-info-dialog.vue';
@@ -0,0 +1,40 @@
1
+ import { ProductData } from '@snabcentr/common-lib';
2
+ import { ProductInfoTab } from '../../../types/product-info-tab';
3
+ /**
4
+ * Диалоговое окно просмотра описания, характеристик и файлов продукта.
5
+ */
6
+ declare const _default: import('vue').DefineComponent<{
7
+ /**
8
+ * Данные о продукте.
9
+ */
10
+ product: ProductData;
11
+ /**
12
+ * Признак видимости диалога.
13
+ */
14
+ show?: boolean;
15
+ /**
16
+ * Вкладка, открываемая изначально. Если у продукта нет её данных, открывается первая доступная.
17
+ */
18
+ activeTab?: ProductInfoTab;
19
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
20
+ "update:show": (show: boolean) => any;
21
+ }, string, import('vue').PublicProps, Readonly<{
22
+ /**
23
+ * Данные о продукте.
24
+ */
25
+ product: ProductData;
26
+ /**
27
+ * Признак видимости диалога.
28
+ */
29
+ show?: boolean;
30
+ /**
31
+ * Вкладка, открываемая изначально. Если у продукта нет её данных, открывается первая доступная.
32
+ */
33
+ activeTab?: ProductInfoTab;
34
+ }> & Readonly<{
35
+ "onUpdate:show"?: ((show: boolean) => any) | undefined;
36
+ }>, {
37
+ show: boolean;
38
+ activeTab: ProductInfoTab;
39
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
40
+ export default _default;
@@ -1 +1,3 @@
1
1
  export { default as ScProductName } from './product-name.vue';
2
+ export { default as ScProductInfoContent } from './product-info-content.vue';
3
+ export { default as ScProductInfoPopover } from './product-info-popover.vue';
@@ -0,0 +1,45 @@
1
+ import { ProductData } from '@snabcentr/common-lib';
2
+ import { ProductInfoTab } from '../../../types/product-info-tab';
3
+ /**
4
+ * Компонент просмотра описания, характеристик и файлов продукта.
5
+ */
6
+ declare const _default: import('vue').DefineComponent<{
7
+ /**
8
+ * Данные о продукте.
9
+ */
10
+ product: ProductData;
11
+ /**
12
+ * Размер вкладок.
13
+ */
14
+ size?: "small" | "medium" | "large";
15
+ /**
16
+ * Максимальная высота содержимого вкладки в CSS-единицах; при превышении содержимое прокручивается.
17
+ */
18
+ maxHeight?: string;
19
+ /**
20
+ * Вкладка, открываемая изначально. Если у продукта нет её данных, открывается первая доступная.
21
+ */
22
+ activeTab?: ProductInfoTab;
23
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
24
+ /**
25
+ * Данные о продукте.
26
+ */
27
+ product: ProductData;
28
+ /**
29
+ * Размер вкладок.
30
+ */
31
+ size?: "small" | "medium" | "large";
32
+ /**
33
+ * Максимальная высота содержимого вкладки в CSS-единицах; при превышении содержимое прокручивается.
34
+ */
35
+ maxHeight?: string;
36
+ /**
37
+ * Вкладка, открываемая изначально. Если у продукта нет её данных, открывается первая доступная.
38
+ */
39
+ activeTab?: ProductInfoTab;
40
+ }> & Readonly<{}>, {
41
+ size: "small" | "medium" | "large";
42
+ maxHeight: string;
43
+ activeTab: ProductInfoTab;
44
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
45
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import { ProductData } from '@snabcentr/common-lib';
2
+ /**
3
+ * Компонент всплывающего окна с описанием, характеристиками и файлами продукта.
4
+ */
5
+ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
6
+ /**
7
+ * Данные о продукте.
8
+ */
9
+ product: ProductData;
10
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
11
+ /**
12
+ * Данные о продукте.
13
+ */
14
+ product: ProductData;
15
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
16
+ default?(_: {}): any;
17
+ }>;
18
+ export default _default;
19
+ type __VLS_WithTemplateSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -14,6 +14,7 @@ declare const _default: import('vue').DefineComponent<IProductNameProperties & I
14
14
  showCode: boolean;
15
15
  showProductCosts: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
16
16
  showPlanningDates: boolean;
17
+ showProductInfoButton: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
17
18
  showPriceHistory: boolean;
18
19
  showCostDate: boolean;
19
20
  allowNameClick: boolean | ((product: import('@snabcentr/common-lib').ProductData) => boolean);
@@ -68,7 +69,7 @@ declare const _default: import('vue').DefineComponent<IProductNameProperties & I
68
69
  };
69
70
  $forceUpdate: () => void;
70
71
  $nextTick: typeof import('vue').nextTick;
71
- $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (... /** @type { [typeof ProductStockCount, typeof ProductStockCount, ] } */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;
72
+ $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;
72
73
  } & Readonly<{}> & Omit<Readonly<{
73
74
  images?: import('@snabcentr/common-lib').IImage[];
74
75
  }> & Readonly<{}>, "show"> & import('vue').ShallowUnwrapRef<{
@@ -131,7 +131,6 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
131
131
  onClosing?: ((target: CloseTarget, cancel: () => void) => any) | undefined;
132
132
  }>, {
133
133
  trapFocus: boolean;
134
- modalWidth: number;
135
134
  sizes: {
136
135
  /**
137
136
  * Параметры мобильного представления.
@@ -146,6 +145,7 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
146
145
  */
147
146
  default: IDialogSizeParams;
148
147
  };
148
+ modalWidth: number;
149
149
  processing: boolean;
150
150
  valid: boolean;
151
151
  acceptButton: IDialogButtonsParams;
@@ -4,3 +4,4 @@ export * from './entity-name-helper';
4
4
  export * from './input-helper';
5
5
  export * from './select-option-helper';
6
6
  export * from './validators';
7
+ export * from './product-info-helper';
@@ -0,0 +1,13 @@
1
+ import { ICatalogItemPropertyFile, ProductData } from '@snabcentr/common-lib';
2
+ /**
3
+ * Возвращает список файлов продукта.
4
+ *
5
+ * @param product Данные о продукте.
6
+ */
7
+ export declare const getProductInfoFiles: (product: ProductData) => ICatalogItemPropertyFile[];
8
+ /**
9
+ * Проверяет, есть ли у продукта данные, которые видит клиент: описание, характеристики или файлы.
10
+ *
11
+ * @param product Данные о продукте.
12
+ */
13
+ export declare const hasProductInfo: (product: ProductData) => boolean;
@@ -1,2 +1,3 @@
1
1
  export * from './validation-status';
2
2
  export * from './button-states';
3
+ export * from './product-info-tab';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Вкладка просмотра данных о продукте: описание, характеристики или файлы.
3
+ */
4
+ export type ProductInfoTab = 'description' | 'specification' | 'files';
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": "4.21.0",
7
+ "version": "4.22.0",
8
8
  "license": "ISC",
9
9
  "scripts": {
10
10
  "dev": "vite",