@topvisor/ui 1.3.5-5.0 → 1.4.0-TopGroupSelector.2

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 (216) hide show
  1. package/.chunks/core-B9TwJi3h.amd.js +2 -0
  2. package/.chunks/core-B9TwJi3h.amd.js.map +1 -0
  3. package/.chunks/core-DVQVVUiP.es.js +196 -0
  4. package/.chunks/core-DVQVVUiP.es.js.map +1 -0
  5. package/.chunks/{datepicker-J8Zg9mKt.es.js → datepicker-CrASsJeF.es.js} +14 -17
  6. package/.chunks/{datepicker-J8Zg9mKt.es.js.map → datepicker-CrASsJeF.es.js.map} +1 -1
  7. package/.chunks/{datepicker-CPrHVH4x.amd.js → datepicker-bidhcksv.amd.js} +2 -2
  8. package/.chunks/{datepicker-CPrHVH4x.amd.js.map → datepicker-bidhcksv.amd.js.map} +1 -1
  9. package/.chunks/dialog_regionSelectorRegions-DJu5Y1WK.es.js +180 -0
  10. package/.chunks/dialog_regionSelectorRegions-DJu5Y1WK.es.js.map +1 -0
  11. package/.chunks/dialog_regionSelectorRegions-Dc-YGZ0l.amd.js +2 -0
  12. package/.chunks/dialog_regionSelectorRegions-Dc-YGZ0l.amd.js.map +1 -0
  13. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang--Xstly2G.amd.js +2 -0
  14. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-8KsNy0Bd.amd.js.map → dialogs.vue_vue_type_script_setup_true_lang--Xstly2G.amd.js.map} +1 -1
  15. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-DvkvzHEY.es.js → dialogs.vue_vue_type_script_setup_true_lang-BP6GFkkz.es.js} +111 -112
  16. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-DvkvzHEY.es.js.map → dialogs.vue_vue_type_script_setup_true_lang-BP6GFkkz.es.js.map} +1 -1
  17. package/.chunks/forms--2-YQeWM.amd.js +3 -0
  18. package/.chunks/{forms-DXX5M4DO.amd.js.map → forms--2-YQeWM.amd.js.map} +1 -1
  19. package/.chunks/forms-Cwv0JCi5.es.js +2035 -0
  20. package/.chunks/{forms-COXAfg9G.es.js.map → forms-Cwv0JCi5.es.js.map} +1 -1
  21. package/.chunks/index-DLUtoTUg.amd.js +2 -0
  22. package/.chunks/index-DLUtoTUg.amd.js.map +1 -0
  23. package/.chunks/index-DkQWJkMc.es.js +54 -0
  24. package/.chunks/index-DkQWJkMc.es.js.map +1 -0
  25. package/.chunks/notice-BCHrf2v6.es.js +191 -0
  26. package/.chunks/{notice-P7CXfEuX.es.js.map → notice-BCHrf2v6.es.js.map} +1 -1
  27. package/.chunks/notice-D1KO_E3H.amd.js +4 -0
  28. package/.chunks/{notice-CSGn_jTM.amd.js.map → notice-D1KO_E3H.amd.js.map} +1 -1
  29. package/.chunks/page.vue_vue_type_script_setup_true_lang-DNs0udwC.amd.js +2 -0
  30. package/.chunks/{page.vue_vue_type_script_setup_true_lang-DHPOnLj5.amd.js.map → page.vue_vue_type_script_setup_true_lang-DNs0udwC.amd.js.map} +1 -1
  31. package/.chunks/page.vue_vue_type_script_setup_true_lang-D_ocBGzt.es.js +139 -0
  32. package/.chunks/{page.vue_vue_type_script_setup_true_lang-D9m45rLs.es.js.map → page.vue_vue_type_script_setup_true_lang-D_ocBGzt.es.js.map} +1 -1
  33. package/.chunks/policy.vue_vue_type_style_index_0_lang-B61ZEDWr.es.js +494 -0
  34. package/.chunks/policy.vue_vue_type_style_index_0_lang-B61ZEDWr.es.js.map +1 -0
  35. package/.chunks/policy.vue_vue_type_style_index_0_lang-BUIBGweg.amd.js +2 -0
  36. package/.chunks/policy.vue_vue_type_style_index_0_lang-BUIBGweg.amd.js.map +1 -0
  37. package/.chunks/popup-DJMBWRtl.es.js +468 -0
  38. package/.chunks/popup-DJMBWRtl.es.js.map +1 -0
  39. package/.chunks/popup-c8qgGOCv.amd.js +2 -0
  40. package/.chunks/popup-c8qgGOCv.amd.js.map +1 -0
  41. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-Bp_-W068.es.js +209 -0
  42. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-Bp_-W068.es.js.map +1 -0
  43. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-D42xEF-j.amd.js +2 -0
  44. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-D42xEF-j.amd.js.map +1 -0
  45. package/.chunks/{utils-CWm0zAtM.es.js → utils-Bu-TI6uw.es.js} +192 -208
  46. package/.chunks/{utils-CWm0zAtM.es.js.map → utils-Bu-TI6uw.es.js.map} +1 -1
  47. package/.chunks/utils-C6nWu0aQ.amd.js +2 -0
  48. package/.chunks/{utils-D505nRsu.amd.js.map → utils-C6nWu0aQ.amd.js.map} +1 -1
  49. package/.chunks/utils-DHyy_M2n.amd.js +2 -0
  50. package/.chunks/{utils-DmxcQpWA.amd.js.map → utils-DHyy_M2n.amd.js.map} +1 -1
  51. package/.chunks/{utils-Rbz9mxy6.es.js → utils-cls72V1c.es.js} +23 -24
  52. package/.chunks/{utils-Rbz9mxy6.es.js.map → utils-cls72V1c.es.js.map} +1 -1
  53. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-BU-FdL6d.amd.js → widgetInput.vue_vue_type_script_setup_true_lang-B3soLr2U.amd.js} +2 -2
  54. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-BU-FdL6d.amd.js.map → widgetInput.vue_vue_type_script_setup_true_lang-B3soLr2U.amd.js.map} +1 -1
  55. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-TVpBXc9F.es.js → widgetInput.vue_vue_type_script_setup_true_lang-HbtV9agA.es.js} +2 -2
  56. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-TVpBXc9F.es.js.map → widgetInput.vue_vue_type_script_setup_true_lang-HbtV9agA.es.js.map} +1 -1
  57. package/api/index.amd.js +1 -1
  58. package/api/index.amd.js.map +1 -1
  59. package/api/index.js +137 -134
  60. package/api/index.js.map +1 -1
  61. package/assets/dialog_regionSelectorRegions.css +1 -0
  62. package/assets/forms.css +1 -1
  63. package/assets/policy.css +1 -0
  64. package/assets/popupHint.css +1 -1
  65. package/assets/project.css +1 -1
  66. package/charts/charts.amd.js +1 -1
  67. package/charts/charts.amd.js.map +1 -1
  68. package/charts/charts.js +80 -80
  69. package/charts/charts.js.map +1 -1
  70. package/core/app.amd.js +1 -1
  71. package/core/app.amd.js.map +1 -1
  72. package/core/app.js +93 -96
  73. package/core/app.js.map +1 -1
  74. package/dialog/dialog.amd.js +1 -1
  75. package/dialog/dialog.amd.js.map +1 -1
  76. package/dialog/dialog.js +13 -13
  77. package/dialog/dialog.js.map +1 -1
  78. package/extra/extra.amd.js +1 -1
  79. package/extra/extra.amd.js.map +1 -1
  80. package/extra/extra.js +20 -23
  81. package/extra/extra.js.map +1 -1
  82. package/forms/forms.amd.js +1 -1
  83. package/forms/forms.js +5 -5
  84. package/formsExt/formsExt.amd.js +1 -1
  85. package/formsExt/formsExt.amd.js.map +1 -1
  86. package/formsExt/formsExt.js +180 -541
  87. package/formsExt/formsExt.js.map +1 -1
  88. package/layout/layout.amd.js +1 -1
  89. package/layout/layout.js +6 -6
  90. package/package.json +2 -2
  91. package/popup/popup.amd.js +1 -1
  92. package/popup/popup.amd.js.map +1 -1
  93. package/popup/popup.js +43 -46
  94. package/popup/popup.js.map +1 -1
  95. package/popup/worker.amd.js +1 -1
  96. package/popup/worker.amd.js.map +1 -1
  97. package/popup/worker.js +9 -9
  98. package/popup/worker.js.map +1 -1
  99. package/project/project.amd.js +1 -1
  100. package/project/project.amd.js.map +1 -1
  101. package/project/project.js +869 -607
  102. package/project/project.js.map +1 -1
  103. package/src/api/api/client/client.d.ts +5 -0
  104. package/src/api/api/mocker/index.d.ts +3 -3
  105. package/src/api/api/types/client/request.d.ts +6 -0
  106. package/src/api/api/types/mocker.d.ts +2 -2
  107. package/src/components/formsExt/formsExt.d.ts +1 -0
  108. package/src/components/formsExt/selector2/cache.d.ts +12 -0
  109. package/src/components/formsExt/selector2/composables/useAPI.d.ts +2033 -0
  110. package/src/components/formsExt/selector2/composables/useMenu.d.ts +2045 -5
  111. package/src/components/formsExt/selector2/itemMulti.vue.d.ts +3 -3
  112. package/src/components/formsExt/selector2/selector2.vue.d.ts +9 -3
  113. package/src/components/formsExt/selector2/types.d.ts +25 -8
  114. package/src/components/formsExt/selector2/utils.d.ts +16 -0
  115. package/src/components/popup/lib/popup.d.ts +0 -1
  116. package/src/components/popup/popup/opener/types.d.ts +6 -2
  117. package/src/components/popup/popup/types.d.ts +3 -2
  118. package/src/components/popup/popup.d.ts +1 -1
  119. package/src/components/project/groupSelector/folders/folders.vue.d.ts +18 -0
  120. package/src/components/project/groupSelector/folders/types.d.ts +63 -0
  121. package/src/components/project/groupSelector/folders/utils.d.ts +63 -0
  122. package/src/components/project/groupSelector/groupSelector.vue.d.ts +28 -0
  123. package/src/components/project/groupSelector/groups/groups.vue.d.ts +125 -0
  124. package/src/components/project/groupSelector/groups/types.d.ts +57 -0
  125. package/src/components/project/groupSelector/groups/utils.d.ts +92 -0
  126. package/src/components/project/groupSelector/stories/mocks/folders.d.ts +4 -0
  127. package/src/components/project/groupSelector/stories/mocks/groups.d.ts +2 -0
  128. package/src/components/project/groupSelector/stories/mocks/index.d.ts +7 -0
  129. package/src/components/project/groupSelector/types.d.ts +129 -0
  130. package/src/components/project/project.d.ts +15 -4
  131. package/src/components/project/{selectorRegion → regionSelector}/utils/utils.d.ts +3 -3
  132. package/src/core/utils/composables/useWatch.d.ts +32 -0
  133. package/tabs/tabs.amd.js +1 -1
  134. package/tabs/tabs.amd.js.map +1 -1
  135. package/tabs/tabs.js +24 -24
  136. package/tabs/tabs.js.map +1 -1
  137. package/tabsView/tabsView.amd.js +1 -1
  138. package/tabsView/tabsView.amd.js.map +1 -1
  139. package/tabsView/tabsView.js +131 -133
  140. package/tabsView/tabsView.js.map +1 -1
  141. package/utils/clipboard.amd.js +1 -1
  142. package/utils/clipboard.js +1 -1
  143. package/utils/date.amd.js +1 -1
  144. package/utils/date.js +1 -1
  145. package/utils/device.amd.js +1 -1
  146. package/utils/device.js +1 -1
  147. package/utils/lodash.amd.js +1 -1
  148. package/utils/lodash.js +1 -1
  149. package/utils/price.amd.js +1 -1
  150. package/utils/price.js +1 -1
  151. package/utils/scroll.amd.js +1 -1
  152. package/utils/scroll.amd.js.map +1 -1
  153. package/utils/scroll.js +14 -14
  154. package/utils/scroll.js.map +1 -1
  155. package/utils/searchers.amd.js +1 -1
  156. package/utils/searchers.js +3 -3
  157. package/utils/string.amd.js +1 -1
  158. package/utils/string.amd.js.map +1 -1
  159. package/utils/string.js +3 -7
  160. package/utils/string.js.map +1 -1
  161. package/.chunks/core-CaWxDXrZ.es.js +0 -197
  162. package/.chunks/core-CaWxDXrZ.es.js.map +0 -1
  163. package/.chunks/core-DmO1i1Ua.amd.js +0 -2
  164. package/.chunks/core-DmO1i1Ua.amd.js.map +0 -1
  165. package/.chunks/dialog_selectorRegions-DoEjgXtb.es.js +0 -190
  166. package/.chunks/dialog_selectorRegions-DoEjgXtb.es.js.map +0 -1
  167. package/.chunks/dialog_selectorRegions-DzufTzj9.amd.js +0 -2
  168. package/.chunks/dialog_selectorRegions-DzufTzj9.amd.js.map +0 -1
  169. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-8KsNy0Bd.amd.js +0 -2
  170. package/.chunks/forms-COXAfg9G.es.js +0 -2047
  171. package/.chunks/forms-DXX5M4DO.amd.js +0 -3
  172. package/.chunks/index-BEI7XZmU.amd.js +0 -2
  173. package/.chunks/index-BEI7XZmU.amd.js.map +0 -1
  174. package/.chunks/index-igPkes8X.es.js +0 -48
  175. package/.chunks/index-igPkes8X.es.js.map +0 -1
  176. package/.chunks/listItem.vue_vue_type_script_setup_true_lang--W1RouXP.es.js +0 -199
  177. package/.chunks/listItem.vue_vue_type_script_setup_true_lang--W1RouXP.es.js.map +0 -1
  178. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DzV225TL.amd.js +0 -2
  179. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DzV225TL.amd.js.map +0 -1
  180. package/.chunks/menu.vue_vue_type_style_index_0_lang-BiyxTfdE.es.js +0 -112
  181. package/.chunks/menu.vue_vue_type_style_index_0_lang-BiyxTfdE.es.js.map +0 -1
  182. package/.chunks/menu.vue_vue_type_style_index_0_lang-D3OAqOqX.amd.js +0 -2
  183. package/.chunks/menu.vue_vue_type_style_index_0_lang-D3OAqOqX.amd.js.map +0 -1
  184. package/.chunks/notice-CSGn_jTM.amd.js +0 -4
  185. package/.chunks/notice-P7CXfEuX.es.js +0 -194
  186. package/.chunks/opener.vue_vue_type_script_setup_true_lang-DRzrTv7Q.es.js +0 -36
  187. package/.chunks/opener.vue_vue_type_script_setup_true_lang-DRzrTv7Q.es.js.map +0 -1
  188. package/.chunks/opener.vue_vue_type_script_setup_true_lang-gNZhYkDf.amd.js +0 -2
  189. package/.chunks/opener.vue_vue_type_script_setup_true_lang-gNZhYkDf.amd.js.map +0 -1
  190. package/.chunks/page.vue_vue_type_script_setup_true_lang-D9m45rLs.es.js +0 -143
  191. package/.chunks/page.vue_vue_type_script_setup_true_lang-DHPOnLj5.amd.js +0 -2
  192. package/.chunks/popup-CF4k7j3U.amd.js +0 -2
  193. package/.chunks/popup-CF4k7j3U.amd.js.map +0 -1
  194. package/.chunks/popup-G7FYKscC.es.js +0 -485
  195. package/.chunks/popup-G7FYKscC.es.js.map +0 -1
  196. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd.js +0 -2
  197. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-Cce9ZdtW.amd.js.map +0 -1
  198. package/.chunks/utils-D505nRsu.amd.js +0 -2
  199. package/.chunks/utils-DmxcQpWA.amd.js +0 -2
  200. package/assets/dialog_selectorRegions.css +0 -1
  201. package/assets/formsExt.css +0 -1
  202. package/assets/listItem.css +0 -1
  203. package/assets/menu.css +0 -1
  204. package/src/components/popup/popup/opener.vue.d.ts +0 -17
  205. /package/src/components/project/{selectorCompetitors/selectorCompetitors.vue.d.ts → competitorSelector/competitorSelector.vue.d.ts} +0 -0
  206. /package/src/components/project/{selectorCompetitors → competitorSelector}/composables.d.ts +0 -0
  207. /package/src/components/project/{selectorCompetitors → competitorSelector}/types.d.ts +0 -0
  208. /package/src/components/project/{selectorRegion → regionSelector}/composables/compare.d.ts +0 -0
  209. /package/src/components/project/{selectorRegion → regionSelector}/composables/selectRegion.d.ts +0 -0
  210. /package/src/components/project/{selectorRegion → regionSelector}/composables/selectSearcher.d.ts +0 -0
  211. /package/src/components/project/{selectorRegion → regionSelector}/composables/selectorRegion.d.ts +0 -0
  212. /package/src/components/project/{selectorRegion/dialog_selectorRegions/dialog_selectorRegions.vue.d.ts → regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue.d.ts} +0 -0
  213. /package/src/components/project/{selectorRegion/dialog_selectorRegions → regionSelector/dialog_regionSelectorRegions}/types.d.ts +0 -0
  214. /package/src/components/project/{selectorRegion/selectorRegion.vue.d.ts → regionSelector/regionSelector.vue.d.ts} +0 -0
  215. /package/src/components/project/{selectorRegion → regionSelector}/types.d.ts +0 -0
  216. /package/src/components/project/{selectorRegion → regionSelector}/utils/consts.d.ts +0 -0
@@ -1,8 +1,8 @@
1
- import { PropsItemMulti } from './types';
1
+ import { PropsItemMulti, Item } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
3
  declare const _default: DefineComponent<PropsItemMulti, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
4
- delete: (id: number | null) => any;
4
+ delete: (item: Item) => any;
5
5
  }, string, PublicProps, Readonly<PropsItemMulti> & Readonly<{
6
- onDelete?: ((id: number | null) => any) | undefined;
6
+ onDelete?: ((item: Item) => any) | undefined;
7
7
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
8
8
  export default _default;
@@ -13,12 +13,18 @@ declare function __VLS_template(): {
13
13
  id: string;
14
14
  popup: TopLibPopup<undefined> | undefined;
15
15
  }> | null;
16
- subcomponentSelector: unknown;
17
16
  };
18
17
  rootEl: any;
19
18
  };
20
19
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
21
- declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
20
+ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {
21
+ /**
22
+ * Сброс локального кеша и кеша api
23
+ *
24
+ * @param resetAPICache - Сбросить API кеш, по умолчанию не сбрасывается. Для случаев, когда загруженные данные становятся неактуальными
25
+ */
26
+ resetCache: (resetAPICache?: boolean) => void;
27
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
22
28
  "update:modelValue": (value: Item | Item[]) => any;
23
29
  appendItem: (item: Item) => any;
24
30
  }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
@@ -26,6 +32,7 @@ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}
26
32
  onAppendItem?: ((item: Item) => any) | undefined;
27
33
  }>, {
28
34
  size: Size;
35
+ openByFocusInput: boolean;
29
36
  items: Item[];
30
37
  searchType: "none" | "inline" | "popup";
31
38
  minLength: number;
@@ -34,7 +41,6 @@ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}
34
41
  id: string;
35
42
  popup: TopLibPopup<undefined> | undefined;
36
43
  }> | null;
37
- subcomponentSelector: unknown;
38
44
  }, any>;
39
45
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
40
46
  export default _default;
@@ -1,7 +1,7 @@
1
1
  import { Size } from '../../forms/helpers';
2
2
  import { Props as ButtonProps } from '../../forms/button/types';
3
- import { Props as PopupProps } from '../../popup/popup/types';
4
- import { ITEM_ID_NEW } from './utils';
3
+ import { ListItemProps, Props as PopupProps } from '../../popup/popup/types';
4
+ import { ITEM_ID_ALL, ITEM_ID_NEW } from './utils';
5
5
  export interface Props {
6
6
  /**
7
7
  * Выбранный элемент
@@ -21,6 +21,7 @@ export interface Props {
21
21
  items?: Item[];
22
22
  title?: string;
23
23
  disabled?: boolean;
24
+ icon?: string;
24
25
  /**
25
26
  * Модификатор элемента, открывающего popup
26
27
  *
@@ -29,7 +30,7 @@ export interface Props {
29
30
  modificator?: string;
30
31
  size?: Size;
31
32
  isError?: boolean;
32
- openByFocus?: PopupProps['openByFocus'];
33
+ openByFocusInput?: PopupProps['openByFocusInput'];
33
34
  /**
34
35
  * Тип поиска по элементам
35
36
  *
@@ -59,9 +60,11 @@ export interface Props {
59
60
  *
60
61
  * Обязательно для `api`, если указан `searchType`
61
62
  *
63
+ * Для добавления в API фильтра по полю на основе введенного значения используйте утилиту `genApiSetSearchParams()`
64
+ *
62
65
  * @subcategory Api
63
66
  */
64
- apiSetSearchParams?: (search: string) => void;
67
+ apiSetSearchParams?: (api: NonNullable<Props['api']>, search: string) => void;
65
68
  /**
66
69
  * Минимальная длина для выполнения поиска
67
70
  *
@@ -79,9 +82,9 @@ export interface Props {
79
82
  */
80
83
  useCache?: boolean;
81
84
  /**
82
- * Добавить в результаты item = {id:null, name:search}, где search - введенная строка в поле поиска
85
+ * Добавить в результаты `item = {id:null, name:search}`, где `search` - введенная строка в поле поиска
83
86
  *
84
- * При добавлении элемента вызывает emit `appendItem`
87
+ * При добавлении элемента будет вызван emit `appendItem(item)`
85
88
  */
86
89
  appendSearchToResult?: boolean;
87
90
  /**
@@ -95,9 +98,11 @@ export interface Props {
95
98
  /**
96
99
  * Добавить вариант: "Все"
97
100
  *
101
+ * Можно указать имя элемента
102
+ *
98
103
  * @subcategory Single select
99
104
  */
100
- appendAllValue?: boolean;
105
+ useAllItem?: boolean | string;
101
106
  /**
102
107
  * Отобразить кнопку смены значения
103
108
  *
@@ -161,7 +166,7 @@ export type EmitsItemMulti = {
161
166
  /**
162
167
  * Удалить выбранный элемент
163
168
  */
164
- delete: [id: Item['id']];
169
+ delete: [item: Item];
165
170
  };
166
171
  /**
167
172
  * Элемент, который можно выбрать в Selector
@@ -174,6 +179,18 @@ export interface Item {
174
179
  */
175
180
  id: number | typeof ITEM_ID_NEW;
176
181
  name: string;
182
+ /**
183
+ * Настройки вывода элемента
184
+ */
185
+ listItemProps?: ListItemProps;
177
186
  [propName: string]: any;
178
187
  }
188
+ export type ItemAll = {
189
+ id: typeof ITEM_ID_ALL;
190
+ name: string;
191
+ };
192
+ export type ItemNew = {
193
+ id: typeof ITEM_ID_NEW;
194
+ name: string;
195
+ };
179
196
  export type { Size };
@@ -1,7 +1,23 @@
1
1
  import { Item, Props } from './types';
2
+ /**
3
+ * Универсальный id для всех элементов "Все элементы" / "Без фильтра" в `TopSelector`
4
+ */
2
5
  export declare const ITEM_ID_ALL = 0;
6
+ /**
7
+ * Универсальный id для всех добавляемых элементов через `TopSelector`
8
+ */
3
9
  export declare const ITEM_ID_NEW: null;
4
10
  /**
5
11
  * Выбран ли элемент
6
12
  */
7
13
  export declare const isSelected: (modelValue: Props["modelValue"], item: Item, checkNameForNullId?: boolean) => boolean;
14
+ /**
15
+ * Вспомогательная утилита для создания `callback` функции на добавление фильтра по полю в api запрос
16
+ *
17
+ * Другие фильтры по указанному полю будут удалены
18
+ *
19
+ * @param api - api, которое используется в `TopSelector`
20
+ * @param search - введенная строка поиска
21
+ * @param fieldName - имя поля, по которому надо добавить фильтр на поиск по нестрогому соответствию
22
+ */
23
+ export declare const apiSetSearchParamsFilter: (api: NonNullable<Props["api"]>, search: string, fieldName: string) => void;
@@ -9,7 +9,6 @@ export interface PopupOptions {
9
9
  posBy?: 'left' | 'right' | 'fixed' | Element;
10
10
  frontSelector?: string;
11
11
  invertX?: boolean;
12
- openByFocus?: boolean;
13
12
  openByHover?: boolean;
14
13
  useOriginal?: boolean;
15
14
  transitionDuration?: number;
@@ -20,13 +20,17 @@ export interface OpenerProps<T extends Record<string, any> | undefined = undefin
20
20
  /**
21
21
  * Открывать / закрывать при фокусировке
22
22
  *
23
- * @remarks Рекомендуется включать при использовании поля ввода
23
+ * Только для opener с `input`
24
24
  */
25
- openByFocus?: boolean;
25
+ openByFocusInput?: boolean;
26
26
  /**
27
27
  * Открывать / закрывать при наведении / отведении мыши
28
28
  */
29
29
  openByHover?: boolean;
30
+ /**
31
+ * Выключить открытие popup при взаимодействии с элементом
32
+ */
33
+ disabled?: boolean;
30
34
  /**
31
35
  * Способ привязки позиционирования меню
32
36
  *
@@ -20,7 +20,7 @@ export interface Props<T extends Record<string, any> | undefined = undefined> ex
20
20
  */
21
21
  transitionDuration?: number;
22
22
  /**
23
- * Ссылка на справку.
23
+ * Ссылка на справку
24
24
  *
25
25
  * Если указана, кнопка справки будет добавлена в футере popup
26
26
  */
@@ -53,7 +53,7 @@ export type Emits<T extends Record<string, any> | undefined = undefined> = {
53
53
  export interface ListItemProps {
54
54
  /**
55
55
  * Тип элемента списка
56
- * - button: обычный кликабельный (выбираемый) элемент, поддерживает вставку ссылок через атрибут href
56
+ * - button: значение уо умолчанию, кликабельный и выбираемый элемент, поддерживает вставку ссылок через атрибут `href`
57
57
  * - formControls: элементы форм, переключатели, радио кнопки
58
58
  * - regular: произвольное содержимое
59
59
  * - title: заголовок
@@ -64,4 +64,5 @@ export interface ListItemProps {
64
64
  * Следует ли закрывать меню по клику на элемент типа button и link
65
65
  */
66
66
  closeByClick?: boolean;
67
+ attrs?: Partial<HTMLElement>;
67
68
  }
@@ -1,5 +1,5 @@
1
1
  export { default as TopPopup } from './popup/popup.vue';
2
- export { default as TopPopupOpener } from './popup/opener.vue';
2
+ export { default as TopPopupOpener } from './popup/opener/opener.vue';
3
3
  export { default as TopPopupListItem } from './popup/listItem.vue';
4
4
  export { default as TopPopupWidgetInput } from './popup/widgetInput/widgetInput.vue';
5
5
  export { default as TopPopupAlert } from './popupAlert/popupAlert.vue';
@@ -0,0 +1,18 @@
1
+ import { Props, Folder } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ import { ItemAll } from '../../../formsExt/selector2/types';
4
+ type __VLS_Props = Props;
5
+ type __VLS_PublicProps = {
6
+ 'folderId': Props['folderId'];
7
+ 'folder'?: NonNullable<Props['folder']>;
8
+ } & __VLS_Props;
9
+ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
10
+ "update:folderId": (value: number) => any;
11
+ "update:folder": (value: NonNullable< ItemAll | Folder | undefined>) => any;
12
+ }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
13
+ "onUpdate:folderId"?: ((value: number) => any) | undefined;
14
+ "onUpdate:folder"?: ((value: NonNullable< ItemAll | Folder | undefined>) => any) | undefined;
15
+ }>, {
16
+ addIcon: boolean;
17
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
18
+ export default _default;
@@ -0,0 +1,63 @@
1
+ import { Item, ItemAll, Props as SelectorProps } from '../../../formsExt/selector2/types';
2
+ export interface Props {
3
+ /**
4
+ * Id выбранной папки
5
+ */
6
+ folderId: number;
7
+ /**
8
+ * Выбранная папка
9
+ */
10
+ folder?: Folder | ItemAll;
11
+ /**
12
+ * Дерево папок
13
+ */
14
+ folders?: FolderTree;
15
+ projectId: number;
16
+ /**
17
+ * Вместо "Корневой папки" выводить "Все папки"
18
+ */
19
+ canSelectAll?: boolean;
20
+ addChanger?: SelectorProps['addChanger'];
21
+ addIcon?: boolean;
22
+ client?: Api.Client<Api.TV.Paths, true>;
23
+ }
24
+ /**
25
+ * Дерево папок: ключ — id родителя, значение — список дочерних папок
26
+ */
27
+ export type FolderTree = {
28
+ [index: string]: Folder[];
29
+ };
30
+ /**
31
+ * Информация о папке (локальный тип компонента Folders)
32
+ */
33
+ export interface Folder extends Item {
34
+ id: number;
35
+ /**
36
+ * Путь к папке
37
+ */
38
+ path: string;
39
+ /**
40
+ * Список id дочерних папок, формируется локально
41
+ */
42
+ childsIds?: number[];
43
+ /**
44
+ * Кол-во активных групп в папке
45
+ */
46
+ countAllGroupsActive?: number;
47
+ /**
48
+ * Кол-во дочерних папок
49
+ */
50
+ count_folders?: number;
51
+ /**
52
+ * Кол-во дочерних групп
53
+ */
54
+ count_groups?: number;
55
+ /**
56
+ * Кол-во активных дочерних групп
57
+ */
58
+ count_groups_active?: number;
59
+ /**
60
+ * Id родительской папки
61
+ */
62
+ parent_id?: number;
63
+ }
@@ -0,0 +1,63 @@
1
+ import { Folder, FolderTree } from './types';
2
+ import { Props } from '../types';
3
+ import { paths } from 'topvisor-openapi/src/ts/Topvisor';
4
+ import { components } from 'topvisor-openapi/src/ts/Keywords_2/Types/Folders/View';
5
+ import { components } from 'topvisor-openapi/src/ts/TV/API/Params/FieldsTrait';
6
+ import { components } from 'topvisor-openapi/src/ts/TV/API/Params/OrdersTrait';
7
+ import { components } from 'topvisor-openapi/src/ts/TV/API/Params/FiltersTrait';
8
+ import { components } from 'topvisor-openapi/src/ts/TV/API/Params/LimitTrait';
9
+ import { components } from 'topvisor-openapi/src/ts/TV/API/Params/OffsetTrait';
10
+ import { components } from 'topvisor-openapi/src/ts/TV/API/Params/ProjectIdTrait';
11
+ export declare const folderDefault: Folder;
12
+ /**
13
+ * Сгенерировать объект корневой папки для компонента
14
+ *
15
+ * Содержит измененное имя
16
+ *
17
+ * Необходимо предустанавливать для минимизации `rerender`
18
+ */
19
+ export declare const genRootFolder: (folders: FolderTree | undefined, useSelectAll: boolean) => Folder;
20
+ /**
21
+ * Сгенерировать плоский список папок
22
+ *
23
+ * В `folders` должен передаваться список всех папок, дозагрузка не предусмотрена
24
+ */
25
+ export declare const genFlat: (folderById: NonNullable<Props["folders"]>, useSelectAll: boolean, resultFolders?: Map<number, Folder>, parentFolder?: Folder, depth?: number) => Map<number, Folder>;
26
+ /**
27
+ * Создать API запрос на получение групп
28
+ */
29
+ export declare const genApiGetFolders: (client: Api.Client<Api.TV.Paths, true>) => Api.ClientRequest<Api.ClientRequestContext< paths, "/get/keywords_2/folders/", true>, ("name" | "id" | "path" | "parent_id")[], Api.Params<Api.ClientRequestContext< paths, "/get/keywords_2/folders/", true>, undefined, {
30
+ "COUNT(*)"?: any;
31
+ id?: any;
32
+ project_id?: any;
33
+ parent_id?: any;
34
+ name?: any;
35
+ count_folders?: any;
36
+ count_groups?: any;
37
+ count_groups_active?: any;
38
+ ord?: any;
39
+ path?: any;
40
+ ord_path?: any;
41
+ }, {
42
+ view?: components["schemas"]["Keywords_2.Types.Folders.View"];
43
+ show_trash?: number;
44
+ fields?: components["schemas"]["TV.API.Params.FieldsTrait"]["fields"];
45
+ orders?: components["schemas"]["TV.API.Params.OrdersTrait"]["orders"];
46
+ filters?: components["schemas"]["TV.API.Params.FiltersTrait"]["filters"];
47
+ id?: components["schemas"]["TV.API.Params.FiltersTrait"]["id"];
48
+ limit?: components["schemas"]["TV.API.Params.LimitTrait"]["limit"];
49
+ offset?: components["schemas"]["TV.API.Params.OffsetTrait"]["offset"];
50
+ project_id: components["schemas"]["TV.API.Params.ProjectIdTrait"]["project_id"];
51
+ }>, Api.ModelFields<{
52
+ "COUNT(*)"?: any;
53
+ id?: any;
54
+ project_id?: any;
55
+ parent_id?: any;
56
+ name?: any;
57
+ count_folders?: any;
58
+ count_groups?: any;
59
+ count_groups_active?: any;
60
+ ord?: any;
61
+ path?: any;
62
+ ord_path?: any;
63
+ }> | undefined>;
@@ -0,0 +1,28 @@
1
+ import { Props } from './types';
2
+ import { Group } from './groups/types';
3
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
4
+ import { ItemAll, ItemNew } from '../../formsExt/selector2/types';
5
+ type __VLS_Props = Props;
6
+ type __VLS_PublicProps = {
7
+ 'folderId': Props['folderId'];
8
+ 'groupId': Props['groupId'];
9
+ 'group'?: Props['group'];
10
+ } & __VLS_Props;
11
+ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
12
+ "update:folderId": (value: number) => any;
13
+ "update:groupId": (value: number | null) => any;
14
+ "update:group": (value: ItemAll | ItemNew | Group | undefined) => any;
15
+ "update:groups": (groups?: Group[] | undefined) => any;
16
+ }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
+ "onUpdate:folderId"?: ((value: number) => any) | undefined;
18
+ "onUpdate:groupId"?: ((value: number | null) => any) | undefined;
19
+ "onUpdate:group"?: ((value: ItemAll | ItemNew | Group | undefined) => any) | undefined;
20
+ "onUpdate:groups"?: ((groups?: Group[] | undefined) => any) | undefined;
21
+ }>, {
22
+ addChanger: boolean;
23
+ autoselect: "placeholder" | "first";
24
+ addIcon: boolean;
25
+ showFolders: boolean;
26
+ showGroups: boolean;
27
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
28
+ export default _default;
@@ -0,0 +1,125 @@
1
+ import { Item as SelectorItem, ItemAll, ItemNew, Props, Size, Slots } from '../../../formsExt/selector2/types';
2
+ import { Group, Props } from './types';
3
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, ComponentInternalInstance, VNodeProps, AllowedComponentProps, ComponentCustomProps, ShallowUnwrapRef, Slot, ComponentPublicInstance, ComponentOptionsBase, GlobalComponents, GlobalDirectives, DebuggerEvent, nextTick, WatchOptions, WatchStopHandle, ComponentCustomProperties } from 'vue';
4
+ import { Props } from '../../../forms/button/types';
5
+ import { TopLibPopup } from '../../../popup/lib/popup';
6
+ import { OnCleanup } from '@vue/reactivity';
7
+ type __VLS_Props = Props;
8
+ type __VLS_PublicProps = {
9
+ 'groupId': Props['groupId'];
10
+ 'group': Props['group'];
11
+ } & __VLS_Props;
12
+ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
13
+ addGroup: (group: Group) => any;
14
+ "update:groupId": (value: number | null) => any;
15
+ "update:group": (value: ItemAll | ItemNew | Group) => any;
16
+ }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
+ onAddGroup?: ((group: Group) => any) | undefined;
18
+ "onUpdate:groupId"?: ((value: number | null) => any) | undefined;
19
+ "onUpdate:group"?: ((value: ItemAll | ItemNew | Group) => any) | undefined;
20
+ }>, {
21
+ addChanger: boolean;
22
+ autoselect: "first" | "placeholder";
23
+ addIcon: boolean;
24
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {
25
+ refSelector: ({
26
+ $: ComponentInternalInstance;
27
+ $data: {};
28
+ $props: {
29
+ readonly modelValue: Props["modelValue"];
30
+ readonly items?: SelectorItem[] | undefined;
31
+ readonly title?: string | undefined;
32
+ readonly disabled?: boolean | undefined;
33
+ readonly icon?: string | undefined;
34
+ readonly modificator?: string | undefined;
35
+ readonly size?: Size | undefined;
36
+ readonly isError?: boolean | undefined;
37
+ readonly openByFocusInput?: boolean | undefined;
38
+ readonly searchType?: "none" | "inline" | "popup" | undefined;
39
+ readonly placeholder?: string | undefined;
40
+ readonly api?: (Api.ClientRequest<any> | Api.ClientRequestCustom<any, any, any>) | undefined;
41
+ readonly apiSetSearchParams?: ((api: NonNullable< Props["api"]>, search: string) => void) | undefined;
42
+ readonly minLength?: number | undefined;
43
+ readonly useCache?: boolean | undefined;
44
+ readonly appendSearchToResult?: boolean | undefined;
45
+ readonly multiselect?: boolean | undefined;
46
+ readonly useAllItem?: boolean | string | undefined;
47
+ readonly addChanger?: boolean | undefined;
48
+ readonly buttonProps?: Props | undefined;
49
+ readonly selectedAsPlaceholder?: boolean | undefined;
50
+ readonly "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
51
+ readonly onAppendItem?: ((item: SelectorItem) => any) | undefined;
52
+ } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
53
+ $attrs: {
54
+ [x: string]: unknown;
55
+ };
56
+ $refs: {
57
+ [x: string]: unknown;
58
+ } & {
59
+ popupRef: ShallowUnwrapRef<{
60
+ id: string;
61
+ popup: TopLibPopup<undefined> | undefined;
62
+ }> | null;
63
+ };
64
+ $slots: Readonly<{
65
+ [name: string]: Slot<any> | undefined;
66
+ }>;
67
+ $root: ComponentPublicInstance | null;
68
+ $parent: ComponentPublicInstance | null;
69
+ $host: Element | null;
70
+ $emit: ((event: "update:modelValue", value: SelectorItem | SelectorItem[]) => void) & ((event: "appendItem", item: SelectorItem) => void);
71
+ $el: any;
72
+ $options: ComponentOptionsBase<Readonly<{
73
+ modelValue: Props["modelValue"];
74
+ } & Props> & Readonly<{
75
+ "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
76
+ onAppendItem?: ((item: SelectorItem) => any) | undefined;
77
+ }>, {
78
+ resetCache: (resetAPICache?: boolean) => void;
79
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
80
+ "update:modelValue": (value: SelectorItem | SelectorItem[]) => any;
81
+ appendItem: (item: SelectorItem) => any;
82
+ }, string, {
83
+ size: Size;
84
+ openByFocusInput: boolean;
85
+ items: SelectorItem[];
86
+ searchType: "none" | "inline" | "popup";
87
+ minLength: number;
88
+ }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
89
+ beforeCreate?: (() => void) | (() => void)[];
90
+ created?: (() => void) | (() => void)[];
91
+ beforeMount?: (() => void) | (() => void)[];
92
+ mounted?: (() => void) | (() => void)[];
93
+ beforeUpdate?: (() => void) | (() => void)[];
94
+ updated?: (() => void) | (() => void)[];
95
+ activated?: (() => void) | (() => void)[];
96
+ deactivated?: (() => void) | (() => void)[];
97
+ beforeDestroy?: (() => void) | (() => void)[];
98
+ beforeUnmount?: (() => void) | (() => void)[];
99
+ destroyed?: (() => void) | (() => void)[];
100
+ unmounted?: (() => void) | (() => void)[];
101
+ renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
102
+ renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
103
+ errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
104
+ };
105
+ $forceUpdate: () => void;
106
+ $nextTick: nextTick;
107
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle;
108
+ } & Readonly<{
109
+ size: Size;
110
+ openByFocusInput: boolean;
111
+ items: SelectorItem[];
112
+ searchType: "none" | "inline" | "popup";
113
+ minLength: number;
114
+ }> & Omit<Readonly<{
115
+ modelValue: Props["modelValue"];
116
+ } & Props> & Readonly<{
117
+ "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
118
+ onAppendItem?: ((item: SelectorItem) => any) | undefined;
119
+ }>, "resetCache" | ("size" | "openByFocusInput" | "items" | "searchType" | "minLength")> & ShallowUnwrapRef<{
120
+ resetCache: (resetAPICache?: boolean) => void;
121
+ }> & {} & ComponentCustomProperties & {} & {
122
+ $slots: Readonly< Slots> & Slots;
123
+ }) | null;
124
+ }, any>;
125
+ export default _default;
@@ -0,0 +1,57 @@
1
+ import { Item, ItemAll, ItemNew, Props as SelectorProps } from '../../../formsExt/selector2/types';
2
+ import { Folder } from '../folders/types';
3
+ export interface Props {
4
+ /**
5
+ * Id выбранной группы
6
+ */
7
+ groupId: number | null;
8
+ /**
9
+ * Выбранная группа
10
+ */
11
+ group: Group | ItemAll | ItemNew;
12
+ projectId: number;
13
+ /**
14
+ * Папка, группы которой надо показать
15
+ *
16
+ * Если не указана будут выводиться все папки, а добавление новых групп будет происходить в корневую папку
17
+ */
18
+ folder?: Folder;
19
+ /**
20
+ * Список групп
21
+ */
22
+ groups?: Group[];
23
+ canAdd?: 'api' | SelectorProps['appendSearchToResult'];
24
+ canSelectAll?: SelectorProps['useAllItem'];
25
+ autoselect?: 'first' | 'placeholder';
26
+ addChanger?: SelectorProps['addChanger'];
27
+ addIcon?: boolean;
28
+ client?: Api.Client<Api.TV.Paths, true>;
29
+ }
30
+ export interface Emits {
31
+ addGroup: [group: Group];
32
+ }
33
+ /**
34
+ * Информация о группе
35
+ */
36
+ export interface Group extends Item {
37
+ /**
38
+ * Id родительской папки
39
+ */
40
+ folder_id: number;
41
+ /**
42
+ * Путь к папке
43
+ */
44
+ folder_path: string;
45
+ /**
46
+ * Флаг включения группы:
47
+ * 0 - выключена
48
+ * 1 - включена
49
+ */
50
+ on?: 0 | 1;
51
+ /**
52
+ * Флаг статуса группы:
53
+ * 0 - обычный
54
+ * 1 - идет загрузка фраз
55
+ */
56
+ status?: 0 | 1;
57
+ }