@topvisor/ui 1.4.0-TopGroupSelector.9 → 1.4.1-projectSelector.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.
Files changed (228) hide show
  1. package/.chunks/core-BgoBbm_5.es.js +242 -0
  2. package/.chunks/core-BgoBbm_5.es.js.map +1 -0
  3. package/.chunks/core-D1KnwO7l.amd.js +2 -0
  4. package/.chunks/core-D1KnwO7l.amd.js.map +1 -0
  5. package/.chunks/{datepicker-D1Hw3a3o.es.js → datepicker-BPTUHd97.es.js} +2 -2
  6. package/.chunks/datepicker-BPTUHd97.es.js.map +1 -0
  7. package/.chunks/{datepicker-3coUsFW2.amd.js → datepicker-O_SK-Dz4.amd.js} +2 -2
  8. package/.chunks/datepicker-O_SK-Dz4.amd.js.map +1 -0
  9. package/.chunks/{dialog_regionSelectorRegions-CZ8IX7la.amd.js → dialog_regionSelectorRegions-Ba-Eypgv.amd.js} +2 -2
  10. package/.chunks/dialog_regionSelectorRegions-Ba-Eypgv.amd.js.map +1 -0
  11. package/.chunks/{dialog_regionSelectorRegions-1UVhgK2f.es.js → dialog_regionSelectorRegions-DA38RsiW.es.js} +4 -4
  12. package/.chunks/dialog_regionSelectorRegions-DA38RsiW.es.js.map +1 -0
  13. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-Dq9kWWMg.amd.js → dialogs.vue_vue_type_script_setup_true_lang-CWprVs8d.amd.js} +2 -2
  14. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CWprVs8d.amd.js.map +1 -0
  15. package/.chunks/{dialogs.vue_vue_type_script_setup_true_lang-DRbTG0vh.es.js → dialogs.vue_vue_type_script_setup_true_lang-CzFMOjlE.es.js} +2 -2
  16. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-CzFMOjlE.es.js.map +1 -0
  17. package/.chunks/field-Cvv0SRcJ.amd.js.map +1 -1
  18. package/.chunks/field-CyyFzM-Y.es.js.map +1 -1
  19. package/.chunks/{forms-CUSCBQu3.amd.js → forms-4D_EVI46.amd.js} +3 -3
  20. package/.chunks/forms-4D_EVI46.amd.js.map +1 -0
  21. package/.chunks/{forms-BseC3Ftz.es.js → forms-xkXHvvah.es.js} +565 -551
  22. package/.chunks/forms-xkXHvvah.es.js.map +1 -0
  23. package/.chunks/index-DLUtoTUg.amd.js.map +1 -1
  24. package/.chunks/index-DkQWJkMc.es.js.map +1 -1
  25. package/.chunks/lazy-40pjr8cZ.es.js.map +1 -1
  26. package/.chunks/lazy-DSFLxvj4.amd.js.map +1 -1
  27. package/.chunks/{notice-DwjipV21.amd.js → notice-hF3z8ewG.amd.js} +2 -2
  28. package/.chunks/notice-hF3z8ewG.amd.js.map +1 -0
  29. package/.chunks/{notice-Cl3ZgiHm.es.js → notice-wqZxmsUH.es.js} +2 -2
  30. package/.chunks/notice-wqZxmsUH.es.js.map +1 -0
  31. package/.chunks/{page.vue_vue_type_script_setup_true_lang-CpRJQFD1.es.js → page.vue_vue_type_script_setup_true_lang-rW3w9LMh.es.js} +4 -4
  32. package/.chunks/page.vue_vue_type_script_setup_true_lang-rW3w9LMh.es.js.map +1 -0
  33. package/.chunks/{page.vue_vue_type_script_setup_true_lang-CjIiZU-D.amd.js → page.vue_vue_type_script_setup_true_lang-tiWuQ_ZK.amd.js} +2 -2
  34. package/.chunks/page.vue_vue_type_script_setup_true_lang-tiWuQ_ZK.amd.js.map +1 -0
  35. package/.chunks/policy.vue_vue_type_style_index_0_lang-C9A--uWd.es.js +503 -0
  36. package/.chunks/policy.vue_vue_type_style_index_0_lang-C9A--uWd.es.js.map +1 -0
  37. package/.chunks/policy.vue_vue_type_style_index_0_lang-DABqSSXw.amd.js +2 -0
  38. package/.chunks/policy.vue_vue_type_style_index_0_lang-DABqSSXw.amd.js.map +1 -0
  39. package/.chunks/{popup-Jw_Yyg3U.es.js → popup-BeLPdHWv.es.js} +2 -2
  40. package/.chunks/popup-BeLPdHWv.es.js.map +1 -0
  41. package/.chunks/{popup-DRuyYFGB.amd.js → popup-Bwmu8rOb.amd.js} +2 -2
  42. package/.chunks/popup-Bwmu8rOb.amd.js.map +1 -0
  43. package/.chunks/{popupHint.vue_vue_type_style_index_0_lang-DtiT6NE4.amd.js → popupHint.vue_vue_type_style_index_0_lang-B0BWXhHK.amd.js} +2 -2
  44. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-B0BWXhHK.amd.js.map +1 -0
  45. package/.chunks/{popupHint.vue_vue_type_style_index_0_lang-DD59yF6H.es.js → popupHint.vue_vue_type_style_index_0_lang-fnjq0yg1.es.js} +2 -2
  46. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-fnjq0yg1.es.js.map +1 -0
  47. package/.chunks/store-CX_6ZXhO.es.js.map +1 -1
  48. package/.chunks/store-YRW59xEF.amd.js.map +1 -1
  49. package/.chunks/{utils-D9nYQabE.amd.js → utils-BRJvuqe_.amd.js} +2 -2
  50. package/.chunks/utils-BRJvuqe_.amd.js.map +1 -0
  51. package/.chunks/{utils-YrUExsH7.es.js → utils-ByqQkftW.es.js} +2 -2
  52. package/.chunks/utils-ByqQkftW.es.js.map +1 -0
  53. package/.chunks/{utils-Q69SXlnV.es.js → utils-YVlPlqDK.es.js} +3 -3
  54. package/.chunks/utils-YVlPlqDK.es.js.map +1 -0
  55. package/.chunks/{utils-CzHUG_xz.amd.js → utils-cAJahDml.amd.js} +2 -2
  56. package/.chunks/utils-cAJahDml.amd.js.map +1 -0
  57. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-CkE912ll.amd.js → widgetInput.vue_vue_type_script_setup_true_lang-D7lVLE3D.amd.js} +2 -2
  58. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-D7lVLE3D.amd.js.map +1 -0
  59. package/.chunks/{widgetInput.vue_vue_type_script_setup_true_lang-CDkeKVqY.es.js → widgetInput.vue_vue_type_script_setup_true_lang-UUovJzhL.es.js} +2 -2
  60. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-UUovJzhL.es.js.map +1 -0
  61. package/README.md +82 -82
  62. package/api/additional.amd.js.map +1 -1
  63. package/api/additional.js.map +1 -1
  64. package/api/index.amd.js +1 -1
  65. package/api/index.amd.js.map +1 -1
  66. package/api/index.js +1 -1
  67. package/api/index.js.map +1 -1
  68. package/assets/core.css +1 -1
  69. package/assets/forms.css +1 -1
  70. package/assets/policy.css +1 -1
  71. package/assets/project.css +1 -1
  72. package/charts/charts.amd.js +1 -1
  73. package/charts/charts.amd.js.map +1 -1
  74. package/charts/charts.js +1 -1
  75. package/charts/charts.js.map +1 -1
  76. package/core/app.amd.js +1 -1
  77. package/core/app.amd.js.map +1 -1
  78. package/core/app.js +5 -5
  79. package/core/app.js.map +1 -1
  80. package/dialog/dialog.amd.js +1 -1
  81. package/dialog/dialog.amd.js.map +1 -1
  82. package/dialog/dialog.js +2 -2
  83. package/dialog/dialog.js.map +1 -1
  84. package/extra/extra.amd.js.map +1 -1
  85. package/extra/extra.js.map +1 -1
  86. package/forms/forms.amd.js +1 -1
  87. package/forms/forms.js +3 -3
  88. package/formsExt/formsExt.amd.js +1 -1
  89. package/formsExt/formsExt.amd.js.map +1 -1
  90. package/formsExt/formsExt.js +123 -111
  91. package/formsExt/formsExt.js.map +1 -1
  92. package/icomoon/Read Me.txt +7 -7
  93. package/icomoon/Topvisor icons.json +6658 -0
  94. package/icomoon/demo-files/demo.css +158 -158
  95. package/icomoon/demo-files/demo.js +30 -30
  96. package/icomoon/demo.css +158 -158
  97. package/icomoon/demo.html +15 -1
  98. package/icomoon/demo.js +30 -30
  99. package/icomoon/fonts/Topvisor-2.eot +0 -0
  100. package/icomoon/fonts/Topvisor-2.svg +1 -0
  101. package/icomoon/fonts/Topvisor-2.ttf +0 -0
  102. package/icomoon/fonts/Topvisor-2.woff +0 -0
  103. package/icomoon/selection.json +1 -1
  104. package/icomoon/style.css +8 -5
  105. package/jquery-ui.min.css +5 -5
  106. package/layout/layout.amd.js +1 -1
  107. package/layout/layout.amd.js.map +1 -1
  108. package/layout/layout.js +1 -1
  109. package/layout/layout.js.map +1 -1
  110. package/package.json +1 -1
  111. package/popup/popup.amd.js +1 -1
  112. package/popup/popup.amd.js.map +1 -1
  113. package/popup/popup.js +6 -6
  114. package/popup/popup.js.map +1 -1
  115. package/popup/worker.amd.js +1 -1
  116. package/popup/worker.amd.js.map +1 -1
  117. package/popup/worker.js +2 -2
  118. package/popup/worker.js.map +1 -1
  119. package/project/project.amd.js +1 -1
  120. package/project/project.amd.js.map +1 -1
  121. package/project/project.js +892 -613
  122. package/project/project.js.map +1 -1
  123. package/require/css.amd.js +12 -12
  124. package/src/api/api/types/client/request-options.d.ts +8 -3
  125. package/src/components/forms/caption/types.d.ts +5 -1
  126. package/src/components/forms/input/input.vue.d.ts +2 -4
  127. package/src/components/forms/input/types.d.ts +15 -0
  128. package/src/components/forms/select/select.vue.d.ts +15 -2
  129. package/src/components/forms/select/types.d.ts +6 -0
  130. package/src/components/formsExt/editArea/editArea.vue.d.ts +15 -2
  131. package/src/components/formsExt/editArea/types.d.ts +6 -0
  132. package/src/components/formsExt/editInput/editInput.vue.d.ts +16 -1
  133. package/src/components/formsExt/selector2/composables/useAPI.d.ts +2 -0
  134. package/src/components/formsExt/selector2/composables/useMenu.d.ts +3 -1
  135. package/src/components/formsExt/selector2/types.d.ts +14 -0
  136. package/src/components/popup/popup/listItem.vue.d.ts +24 -4
  137. package/src/components/popup/popup/types.d.ts +1 -0
  138. package/src/components/project/groupSelector/groupSelector.vue.d.ts +5 -0
  139. package/src/components/project/groupSelector/groups/groups.vue.d.ts +2 -0
  140. package/src/components/project/groupSelector/groups/types.d.ts +4 -0
  141. package/src/components/project/groupSelector/groups/utils.d.ts +1 -1
  142. package/src/components/project/groupSelector/types.d.ts +4 -0
  143. package/src/components/project/project.d.ts +1 -0
  144. package/src/components/project/projectSelector/projectSelector.vue.d.ts +121 -0
  145. package/src/components/project/projectSelector/stories/mocks/projects.d.ts +10 -0
  146. package/src/components/project/projectSelector/submenu/submenu.vue.d.ts +4 -0
  147. package/src/components/project/projectSelector/submenu/types.d.ts +17 -0
  148. package/src/components/project/projectSelector/types.d.ts +57 -0
  149. package/src/components/project/projectSelector/utils.d.ts +206 -0
  150. package/src/core/directives/shortcut.d.ts +12 -0
  151. package/src/core/utils/string.d.ts +1 -1
  152. package/tabs/tabs.amd.js.map +1 -1
  153. package/tabs/tabs.js.map +1 -1
  154. package/tabsView/tabsView.amd.js +1 -1
  155. package/tabsView/tabsView.amd.js.map +1 -1
  156. package/tabsView/tabsView.js +2 -2
  157. package/tabsView/tabsView.js.map +1 -1
  158. package/utils/check.amd.js.map +1 -1
  159. package/utils/check.js.map +1 -1
  160. package/utils/clipboard.amd.js +1 -1
  161. package/utils/clipboard.amd.js.map +1 -1
  162. package/utils/clipboard.js +1 -1
  163. package/utils/clipboard.js.map +1 -1
  164. package/utils/date.amd.js +1 -1
  165. package/utils/date.js +1 -1
  166. package/utils/device.amd.js +1 -1
  167. package/utils/device.js +1 -1
  168. package/utils/dom.amd.js.map +1 -1
  169. package/utils/dom.js.map +1 -1
  170. package/utils/image.amd.js.map +1 -1
  171. package/utils/image.js.map +1 -1
  172. package/utils/keyboard.amd.js.map +1 -1
  173. package/utils/keyboard.js.map +1 -1
  174. package/utils/lodash.amd.js +1 -1
  175. package/utils/lodash.js +1 -1
  176. package/utils/number.amd.js.map +1 -1
  177. package/utils/number.js.map +1 -1
  178. package/utils/price.amd.js +1 -1
  179. package/utils/price.amd.js.map +1 -1
  180. package/utils/price.js +1 -1
  181. package/utils/price.js.map +1 -1
  182. package/utils/route.amd.js.map +1 -1
  183. package/utils/route.js.map +1 -1
  184. package/utils/scroll.amd.js.map +1 -1
  185. package/utils/scroll.js.map +1 -1
  186. package/utils/searchers.amd.js +1 -1
  187. package/utils/searchers.amd.js.map +1 -1
  188. package/utils/searchers.js +3 -3
  189. package/utils/searchers.js.map +1 -1
  190. package/utils/string.amd.js +1 -1
  191. package/utils/string.amd.js.map +1 -1
  192. package/utils/string.js +50 -50
  193. package/utils/string.js.map +1 -1
  194. package/utils/system.amd.js.map +1 -1
  195. package/utils/system.js.map +1 -1
  196. package/utils/url.amd.js.map +1 -1
  197. package/utils/url.js.map +1 -1
  198. package/web-types.json +31 -0
  199. package/.chunks/core-BL-38XF7.es.js +0 -196
  200. package/.chunks/core-BL-38XF7.es.js.map +0 -1
  201. package/.chunks/core-BsPx05H9.amd.js +0 -2
  202. package/.chunks/core-BsPx05H9.amd.js.map +0 -1
  203. package/.chunks/datepicker-3coUsFW2.amd.js.map +0 -1
  204. package/.chunks/datepicker-D1Hw3a3o.es.js.map +0 -1
  205. package/.chunks/dialog_regionSelectorRegions-1UVhgK2f.es.js.map +0 -1
  206. package/.chunks/dialog_regionSelectorRegions-CZ8IX7la.amd.js.map +0 -1
  207. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-DRbTG0vh.es.js.map +0 -1
  208. package/.chunks/dialogs.vue_vue_type_script_setup_true_lang-Dq9kWWMg.amd.js.map +0 -1
  209. package/.chunks/forms-BseC3Ftz.es.js.map +0 -1
  210. package/.chunks/forms-CUSCBQu3.amd.js.map +0 -1
  211. package/.chunks/notice-Cl3ZgiHm.es.js.map +0 -1
  212. package/.chunks/notice-DwjipV21.amd.js.map +0 -1
  213. package/.chunks/page.vue_vue_type_script_setup_true_lang-CjIiZU-D.amd.js.map +0 -1
  214. package/.chunks/page.vue_vue_type_script_setup_true_lang-CpRJQFD1.es.js.map +0 -1
  215. package/.chunks/policy.vue_vue_type_style_index_0_lang-BBDJEs5Q.es.js +0 -496
  216. package/.chunks/policy.vue_vue_type_style_index_0_lang-BBDJEs5Q.es.js.map +0 -1
  217. package/.chunks/policy.vue_vue_type_style_index_0_lang-DJOaMdBm.amd.js +0 -2
  218. package/.chunks/policy.vue_vue_type_style_index_0_lang-DJOaMdBm.amd.js.map +0 -1
  219. package/.chunks/popup-DRuyYFGB.amd.js.map +0 -1
  220. package/.chunks/popup-Jw_Yyg3U.es.js.map +0 -1
  221. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-DD59yF6H.es.js.map +0 -1
  222. package/.chunks/popupHint.vue_vue_type_style_index_0_lang-DtiT6NE4.amd.js.map +0 -1
  223. package/.chunks/utils-CzHUG_xz.amd.js.map +0 -1
  224. package/.chunks/utils-D9nYQabE.amd.js.map +0 -1
  225. package/.chunks/utils-Q69SXlnV.es.js.map +0 -1
  226. package/.chunks/utils-YrUExsH7.es.js.map +0 -1
  227. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-CDkeKVqY.es.js.map +0 -1
  228. package/.chunks/widgetInput.vue_vue_type_script_setup_true_lang-CkE912ll.amd.js.map +0 -1
@@ -1,12 +1,12 @@
1
- /**
2
- * Плагин requirejs для подгрузки css файлов
3
- */
4
- define({
5
- load: (name, req, onload) => {
6
- req(['../core/app.amd'], ({ Core }) => {
7
- const cssURL = req.toUrl(name);
8
-
9
- Core.insertCSSLinkToPage([cssURL]).then(onload).catch(onload.error);
10
- });
11
- },
12
- });
1
+ /**
2
+ * Плагин requirejs для подгрузки css файлов
3
+ */
4
+ define({
5
+ load: (name, req, onload) => {
6
+ req(['../core/app.amd'], ({ Core }) => {
7
+ const cssURL = req.toUrl(name);
8
+
9
+ Core.insertCSSLinkToPage([cssURL]).then(onload).catch(onload.error);
10
+ });
11
+ },
12
+ });
@@ -26,8 +26,13 @@ declare global {
26
26
  * Не путать с результатами `fetch()`
27
27
  *
28
28
  * Только при использовании `useExt`
29
+ *
30
+ * При переопределении на уровне запроса API, вы можете переиспользовать ранее определенное событие на уровне API клиента:
31
+ * ```
32
+ * onApiLoaded = (res, ctx, clientOnApiLoaded) => clientOnApiLoaded?.(res, ctx);
33
+ * ```
29
34
  */
30
- onApiLoaded?: (res: Api.Response<any>, ctx: Api.MiddlewareCallbackParams) => void | Promise<void>;
35
+ onApiLoaded?: (res: Api.Response<any>, ctx: Api.MiddlewareCallbackParams, clientOnApiLoaded?: this['onApiLoaded']) => void | Promise<void>;
31
36
  /**
32
37
  * Событие, которое сработает при получении ошибки API в `res.errors`
33
38
  *
@@ -37,14 +42,14 @@ declare global {
37
42
  *
38
43
  * При переопределении на уровне запроса API, вы можете переиспользовать ранее определенное событие на уровне API клиента:
39
44
  * ```
40
- * onApiError = (res, ctx, prevOnError) => prevOnApiError?.(res, ctx);
45
+ * onApiError = (res, ctx, clientOnApiError) => clientOnApiError?.(res, ctx);
41
46
  * ```
42
47
  *
43
48
  * @see createClient
44
49
  */
45
50
  onApiError?: (res: Api.Response<any>, ctx: Api.MiddlewareCallbackParams & {
46
51
  formatError?: FormatError;
47
- }, prevOnApiError?: this['onApiError']) => void | Promise<void>;
52
+ }, clientOnApiError?: this['onApiError']) => void | Promise<void>;
48
53
  /**
49
54
  * Событие, которое сработает при получении сообщения API в `res.messages`
50
55
  *
@@ -1,7 +1,11 @@
1
1
  export interface Props {
2
- title: string;
2
+ text: string;
3
3
  }
4
4
  export interface Slots {
5
+ /**
6
+ * Слот для вставки html вместо **props.text**
7
+ */
8
+ text(props: {}): any;
5
9
  /**
6
10
  * Слот с элементом ввода
7
11
  */
@@ -1,10 +1,8 @@
1
- import { Props, Size, Styling, CaptionType } from './types';
1
+ import { Props, Slots, Size, Styling, CaptionType } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
3
  declare function __VLS_template(): {
4
4
  attrs: Partial<{}>;
5
- slots: {
6
- default?(_: {}): any;
7
- };
5
+ slots: Readonly<Slots> & Slots;
8
6
  refs: {};
9
7
  rootEl: any;
10
8
  };
@@ -15,6 +15,21 @@ export interface Props {
15
15
  title?: string;
16
16
  captionType?: CaptionType;
17
17
  }
18
+ export interface Slots {
19
+ /**
20
+ * Слот для заголовка с html.
21
+ * Работает только когда **captionType='top'**.
22
+ *
23
+ * Поведение:
24
+ * - Если слот передан, показываем его содержимое (**props.title** игнорируется полностью)
25
+ * - Если слот не передан, показываем обычный **props.title** (если он есть)
26
+ */
27
+ caption(props: {}): any;
28
+ /**
29
+ * Слот для вставки произвольного кода в label
30
+ */
31
+ default(props: {}): any;
32
+ }
18
33
  export interface Emits {
19
34
  'update:modelValue': [value: string];
20
35
  }
@@ -1,10 +1,17 @@
1
- import { Props, Size, Style } from './types';
1
+ import { Props, Slots, Size, Style } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
3
  type __VLS_Props = Props;
4
4
  type __VLS_PublicProps = {
5
5
  modelValue: Props['modelValue'];
6
6
  } & __VLS_Props;
7
- declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
7
+ declare function __VLS_template(): {
8
+ attrs: Partial<{}>;
9
+ slots: Readonly<Slots> & Slots;
10
+ refs: {};
11
+ rootEl: HTMLLabelElement;
12
+ };
13
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
+ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
8
15
  "update:modelValue": (value: string | number | boolean) => any;
9
16
  } & {
10
17
  "update:modelValue": (value: string | number | boolean) => any;
@@ -14,4 +21,10 @@ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, Compo
14
21
  size: Size;
15
22
  styling: Style;
16
23
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLLabelElement>;
24
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
17
25
  export default _default;
26
+ type __VLS_WithTemplateSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -21,6 +21,12 @@ export interface Props {
21
21
  title?: string;
22
22
  isError?: boolean;
23
23
  }
24
+ export interface Slots {
25
+ /**
26
+ * Слот для вставки html вместо **props.title**
27
+ */
28
+ caption(props: {}): any;
29
+ }
24
30
  export declare const styling: {
25
31
  readonly regular: "";
26
32
  readonly soft: "soft";
@@ -1,6 +1,13 @@
1
- import { Props } from './types';
1
+ import { Props, Slots } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
- declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3
+ declare function __VLS_template(): {
4
+ attrs: Partial<{}>;
5
+ slots: Readonly<Slots> & Slots;
6
+ refs: {};
7
+ rootEl: HTMLDivElement;
8
+ };
9
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
+ declare const __VLS_component: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
4
11
  close: () => any;
5
12
  submit: (value: string) => any;
6
13
  clickOnTitle: () => any;
@@ -15,4 +22,10 @@ declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsM
15
22
  cancelText: string;
16
23
  defaultValue: string;
17
24
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
25
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
18
26
  export default _default;
27
+ type __VLS_WithTemplateSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -23,6 +23,12 @@ export interface Props extends TextareaProps {
23
23
  */
24
24
  attachToKeyboard?: boolean;
25
25
  }
26
+ export interface Slots {
27
+ /**
28
+ * Слот для вставки html вместо **props.title**
29
+ */
30
+ caption(props: {}): any;
31
+ }
26
32
  export interface Emits {
27
33
  (e: 'submit', value: string): void;
28
34
  (e: 'close'): void;
@@ -1,8 +1,23 @@
1
1
  import { Props } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
- declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3
+ declare function __VLS_template(): {
4
+ attrs: Partial<{}>;
5
+ slots: {
6
+ caption?(_: {}): any;
7
+ };
8
+ refs: {};
9
+ rootEl: HTMLDivElement;
10
+ };
11
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
12
+ declare const __VLS_component: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
4
13
  "update:modelValue": (value: string) => any;
5
14
  }, string, PublicProps, Readonly<Props> & Readonly<{
6
15
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
7
16
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
17
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
8
18
  export default _default;
19
+ type __VLS_WithTemplateSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -9,6 +9,7 @@ export declare const useAPI: (api: Props["api"], apiSetSearchParams: Props["apiS
9
9
  id: number | ITEM_ID_NEW;
10
10
  name: string;
11
11
  listItemProps?: {
12
+ [x: string]: any;
12
13
  type?: "button" | "formControls" | "regular" | "title" | "delimiter" | undefined;
13
14
  closeByClick?: boolean | undefined;
14
15
  attrs?: {
@@ -1029,6 +1030,7 @@ export declare const useAPI: (api: Props["api"], apiSetSearchParams: Props["apiS
1029
1030
  id: number | ITEM_ID_NEW;
1030
1031
  name: string;
1031
1032
  listItemProps?: {
1033
+ [x: string]: any;
1032
1034
  type?: "button" | "formControls" | "regular" | "title" | "delimiter" | undefined;
1033
1035
  closeByClick?: boolean | undefined;
1034
1036
  attrs?: {
@@ -5,7 +5,7 @@ import { ITEM_ID_NEW } from '../utils';
5
5
  /**
6
6
  * Функционал поиска
7
7
  */
8
- export declare const useMenu: (model: Ref<Props["modelValue"]>, emits: ReturnType<typeof defineEmits>, items: Ref<Props["items"]>, multiselect: Props["multiselect"], useAllItem: Ref<Props["useAllItem"]>, appendSearchToResult: Ref<Props["appendSearchToResult"]>, searchType: Ref<Props["searchType"]>, minLength: number, api: API) => {
8
+ export declare const useMenu: (model: Ref<Props["modelValue"]>, emits: ReturnType<typeof defineEmits>, items: Ref<Props["items"]>, multiselect: Props["multiselect"], useAllItem: Ref<Props["useAllItem"]>, appendSearchToResult: Ref<Props["appendSearchToResult"]>, appendSearchToResultCond: Ref<Props["appendSearchToResultCond"]>, searchType: Ref<Props["searchType"]>, minLength: number, api: API) => {
9
9
  searchText: Ref<string, string>;
10
10
  resetSearch: () => void;
11
11
  genIsShort: () => boolean;
@@ -14,6 +14,7 @@ export declare const useMenu: (model: Ref<Props["modelValue"]>, emits: ReturnTyp
14
14
  id: number | typeof ITEM_ID_NEW;
15
15
  name: string;
16
16
  listItemProps?: {
17
+ [x: string]: any;
17
18
  type?: "button" | "formControls" | "regular" | "title" | "delimiter" | undefined;
18
19
  closeByClick?: boolean | undefined;
19
20
  attrs?: {
@@ -1034,6 +1035,7 @@ export declare const useMenu: (model: Ref<Props["modelValue"]>, emits: ReturnTyp
1034
1035
  id: number | typeof ITEM_ID_NEW;
1035
1036
  name: string;
1036
1037
  listItemProps?: {
1038
+ [x: string]: any;
1037
1039
  type?: "button" | "formControls" | "regular" | "title" | "delimiter" | undefined;
1038
1040
  closeByClick?: boolean | undefined;
1039
1041
  attrs?: {
@@ -87,6 +87,12 @@ export interface Props {
87
87
  * При добавлении элемента будет вызван emit `appendItem(item)`
88
88
  */
89
89
  appendSearchToResult?: boolean;
90
+ /**
91
+ * Добавить callback с проверкой введенного значения. Если проверка пройдена, то элемент отобразиться
92
+ *
93
+ * Будет вызван только если `appendSearchToResult = true`
94
+ */
95
+ appendSearchToResultCond?: (search: string) => boolean;
90
96
  /**
91
97
  * Режим выбора нескольких вариантов
92
98
  *
@@ -129,6 +135,10 @@ export interface Props {
129
135
  * @subcategory Single select
130
136
  */
131
137
  selectedAsPlaceholder?: boolean;
138
+ /**
139
+ * code горячей клавиши для открытия селектора ('KeyA');
140
+ */
141
+ openerShortcut?: string;
132
142
  }
133
143
  export interface Slots {
134
144
  /**
@@ -149,6 +159,10 @@ export interface Slots {
149
159
  item?(props: {
150
160
  item: Item;
151
161
  }): any;
162
+ /**
163
+ * Слот для добавления элементов к виджету поиска
164
+ */
165
+ widgetAction?(props: {}): any;
152
166
  }
153
167
  export type Emits = {
154
168
  /**
@@ -1,5 +1,5 @@
1
1
  import { ListItemProps } from './types';
2
- import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ import { DefineComponent, ExtractPropTypes, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, PropType } from 'vue';
3
3
  declare function __VLS_template(): {
4
4
  attrs: Partial<{}>;
5
5
  slots: {
@@ -12,14 +12,34 @@ declare function __VLS_template(): {
12
12
  rootEl: any;
13
13
  };
14
14
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
15
- declare const __VLS_component: DefineComponent<ListItemProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ListItemProps> & Readonly<{}>, {
16
- type: "button" | "formControls" | "regular" | "title" | "delimiter";
15
+ declare const __VLS_component: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ListItemProps>, {
16
+ type: string;
17
17
  closeByClick: boolean;
18
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
18
+ }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<ListItemProps>, {
19
+ type: string;
20
+ closeByClick: boolean;
21
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
19
22
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
20
23
  export default _default;
24
+ type __VLS_WithDefaults<P, D> = {
25
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
26
+ default: D[K];
27
+ }> : P[K];
28
+ };
29
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
30
+ type __VLS_TypePropsToOption<T> = {
31
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
32
+ type: PropType<__VLS_NonUndefinedable<T[K]>>;
33
+ } : {
34
+ type: PropType<T[K]>;
35
+ required: true;
36
+ };
37
+ };
21
38
  type __VLS_WithTemplateSlots<T, S> = T & {
22
39
  new (): {
23
40
  $slots: S;
24
41
  };
25
42
  };
43
+ type __VLS_PrettifyLocal<T> = {
44
+ [K in keyof T]: T[K];
45
+ } & {};
@@ -65,4 +65,5 @@ export interface ListItemProps {
65
65
  */
66
66
  closeByClick?: boolean;
67
67
  attrs?: Partial<HTMLElement>;
68
+ [propName: string]: any;
68
69
  }
@@ -1,24 +1,29 @@
1
1
  import { Props } from './types';
2
+ import { Folder } from './folders/types';
2
3
  import { Group } from './groups/types';
3
4
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
4
5
  import { ItemAll, ItemNew } from '../../formsExt/selector2/types';
5
6
  type __VLS_Props = Props;
6
7
  type __VLS_PublicProps = {
7
8
  'folderId': Props['folderId'];
9
+ 'folder'?: Props['folder'];
8
10
  'groupId': Props['groupId'];
9
11
  'group'?: Props['group'];
10
12
  } & __VLS_Props;
11
13
  declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
12
14
  "update:folderId": (value: number) => any;
15
+ "update:folder": (value: Folder | undefined) => any;
13
16
  "update:groupId": (value: number | null) => any;
14
17
  "update:group": (value: ItemAll | ItemNew | Group | undefined) => any;
15
18
  "update:groups": (groups?: Group[] | undefined) => any;
16
19
  }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
20
  "onUpdate:folderId"?: ((value: number) => any) | undefined;
21
+ "onUpdate:folder"?: ((value: Folder | undefined) => any) | undefined;
18
22
  "onUpdate:groupId"?: ((value: number | null) => any) | undefined;
19
23
  "onUpdate:group"?: ((value: ItemAll | ItemNew | Group | undefined) => any) | undefined;
20
24
  "onUpdate:groups"?: ((groups?: Group[] | undefined) => any) | undefined;
21
25
  }>, {
26
+ on: boolean;
22
27
  addChanger: boolean;
23
28
  autoselect: "placeholder" | "first";
24
29
  addIcon: boolean;
@@ -43,11 +43,13 @@ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, Compo
43
43
  readonly minLength?: number | undefined;
44
44
  readonly useCache?: boolean | undefined;
45
45
  readonly appendSearchToResult?: boolean | undefined;
46
+ readonly appendSearchToResultCond?: ((search: string) => boolean) | undefined;
46
47
  readonly multiselect?: boolean | undefined;
47
48
  readonly useAllItem?: boolean | string | undefined;
48
49
  readonly addChanger?: boolean | undefined;
49
50
  readonly buttonProps?: Props | undefined;
50
51
  readonly selectedAsPlaceholder?: boolean | undefined;
52
+ readonly openerShortcut?: string | undefined;
51
53
  readonly "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
52
54
  readonly onAppendItem?: ((item: SelectorItem) => any) | undefined;
53
55
  } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
@@ -25,6 +25,10 @@ export interface Props {
25
25
  canSelectAll?: SelectorProps['useAllItem'];
26
26
  autoselect?: 'first' | 'placeholder';
27
27
  addChanger?: SelectorProps['addChanger'];
28
+ /**
29
+ * Отобразить путь папки
30
+ */
31
+ showPath?: boolean;
28
32
  addIcon?: boolean;
29
33
  client?: Api.Client<Api.TV.Paths, true>;
30
34
  }
@@ -79,7 +79,7 @@ export declare const genApiGetGroups: (client: Api.Client<Api.TV.Paths, true>) =
79
79
  "POSITIONS_VISIBILITY()"?: any;
80
80
  }> | undefined>;
81
81
  /**
82
- * Создать API запрос на получение групп
82
+ * Создать API запрос на добавление групп
83
83
  */
84
84
  export declare const genApiAddGroup: (client: Api.Client<Api.TV.Paths, true>) => Api.ClientRequest<Api.ClientRequestContext< paths, "/add/keywords_2/groups/", true>, never, Omit<{
85
85
  to_id?: number;
@@ -7,6 +7,10 @@ export interface Props {
7
7
  * Если фильтр не нужен - 0, это значит корневая папка
8
8
  */
9
9
  folderId: number;
10
+ /**
11
+ * Выбранная папка
12
+ */
13
+ folder?: GroupsProps['folder'];
10
14
  /**
11
15
  * Id выбранной группы
12
16
  *
@@ -3,6 +3,7 @@ export { useItemsFromCompetitors } from './competitorSelector/composables';
3
3
  export { default as TopRegionSelector } from './regionSelector/regionSelector.vue';
4
4
  export { findRegion, genSearcherByKey, dialogRegionSelector } from './regionSelector/utils/utils';
5
5
  export { default as TopGroupSelector } from './groupSelector/groupSelector.vue';
6
+ export { default as TopProjectSelector } from './projectSelector/projectSelector.vue';
6
7
  export type { Emits as TopTagSelectorEmits, Tag, TagId, TagIdExclude } from './tagSelector/types';
7
8
  export { genElPopupOpener as genElTopTagSelectorPopupOpener, renderElPopupOpener as renderElTopTagSelectorPopupOpener, } from './tagSelector/utils/el';
8
9
  export { default as TopTagSelector } from './tagSelector/tagSelector.vue';
@@ -0,0 +1,121 @@
1
+ import { Props } from './types';
2
+ import { Item as SelectorItem, Props, Size, Slots } from '../../formsExt/selector2/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
+ 'project'?: NonNullable<Props['project']>;
10
+ } & __VLS_Props;
11
+ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
12
+ "update:project": (value: SelectorItem) => any;
13
+ }, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
14
+ "onUpdate:project"?: ((value: SelectorItem) => any) | undefined;
15
+ }>, {
16
+ modificator: string;
17
+ userId: number;
18
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {
19
+ refSelector: ({
20
+ $: ComponentInternalInstance;
21
+ $data: {};
22
+ $props: {
23
+ readonly modelValue: Props["modelValue"];
24
+ readonly items?: SelectorItem[] | undefined;
25
+ readonly title?: string | undefined;
26
+ readonly disabled?: boolean | undefined;
27
+ readonly icon?: string | undefined;
28
+ readonly modificator?: string | undefined;
29
+ readonly size?: Size | undefined;
30
+ readonly isError?: boolean | undefined;
31
+ readonly openByFocusInput?: boolean | undefined;
32
+ readonly searchType?: "none" | "inline" | "popup" | undefined;
33
+ readonly placeholder?: string | undefined;
34
+ readonly api?: (Api.ClientRequest<any> | Api.ClientRequestCustom<any, any, any>) | undefined;
35
+ readonly apiSetSearchParams?: ((api: NonNullable< Props["api"]>, search: string) => void) | undefined;
36
+ readonly minLength?: number | undefined;
37
+ readonly useCache?: boolean | undefined;
38
+ readonly appendSearchToResult?: boolean | undefined;
39
+ readonly appendSearchToResultCond?: ((search: string) => boolean) | undefined;
40
+ readonly multiselect?: boolean | undefined;
41
+ readonly useAllItem?: boolean | string | undefined;
42
+ readonly addChanger?: boolean | undefined;
43
+ readonly buttonProps?: Props | undefined;
44
+ readonly selectedAsPlaceholder?: boolean | undefined;
45
+ readonly openerShortcut?: string | undefined;
46
+ readonly "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
47
+ readonly onAppendItem?: ((item: SelectorItem) => any) | undefined;
48
+ } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
49
+ $attrs: {
50
+ [x: string]: unknown;
51
+ };
52
+ $refs: {
53
+ [x: string]: unknown;
54
+ } & {
55
+ popupRef: ShallowUnwrapRef<{
56
+ id: string;
57
+ popup: TopLibPopup<undefined> | undefined;
58
+ }> | null;
59
+ };
60
+ $slots: Readonly<{
61
+ [name: string]: Slot<any> | undefined;
62
+ }>;
63
+ $root: ComponentPublicInstance | null;
64
+ $parent: ComponentPublicInstance | null;
65
+ $host: Element | null;
66
+ $emit: ((event: "update:modelValue", value: SelectorItem | SelectorItem[]) => void) & ((event: "appendItem", item: SelectorItem) => void);
67
+ $el: any;
68
+ $options: ComponentOptionsBase<Readonly<{
69
+ modelValue: Props["modelValue"];
70
+ } & Props> & Readonly<{
71
+ "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
72
+ onAppendItem?: ((item: SelectorItem) => any) | undefined;
73
+ }>, {
74
+ resetCache: (resetAPICache?: boolean) => void;
75
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
76
+ "update:modelValue": (value: SelectorItem | SelectorItem[]) => any;
77
+ appendItem: (item: SelectorItem) => any;
78
+ }, string, {
79
+ size: Size;
80
+ openByFocusInput: boolean;
81
+ items: SelectorItem[];
82
+ searchType: "none" | "inline" | "popup";
83
+ minLength: number;
84
+ }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & {
85
+ beforeCreate?: (() => void) | (() => void)[];
86
+ created?: (() => void) | (() => void)[];
87
+ beforeMount?: (() => void) | (() => void)[];
88
+ mounted?: (() => void) | (() => void)[];
89
+ beforeUpdate?: (() => void) | (() => void)[];
90
+ updated?: (() => void) | (() => void)[];
91
+ activated?: (() => void) | (() => void)[];
92
+ deactivated?: (() => void) | (() => void)[];
93
+ beforeDestroy?: (() => void) | (() => void)[];
94
+ beforeUnmount?: (() => void) | (() => void)[];
95
+ destroyed?: (() => void) | (() => void)[];
96
+ unmounted?: (() => void) | (() => void)[];
97
+ renderTracked?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
98
+ renderTriggered?: ((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[];
99
+ errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
100
+ };
101
+ $forceUpdate: () => void;
102
+ $nextTick: nextTick;
103
+ $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;
104
+ } & Readonly<{
105
+ size: Size;
106
+ openByFocusInput: boolean;
107
+ items: SelectorItem[];
108
+ searchType: "none" | "inline" | "popup";
109
+ minLength: number;
110
+ }> & Omit<Readonly<{
111
+ modelValue: Props["modelValue"];
112
+ } & Props> & Readonly<{
113
+ "onUpdate:modelValue"?: ((value: SelectorItem | SelectorItem[]) => any) | undefined;
114
+ onAppendItem?: ((item: SelectorItem) => any) | undefined;
115
+ }>, "resetCache" | ("size" | "openByFocusInput" | "items" | "searchType" | "minLength")> & ShallowUnwrapRef<{
116
+ resetCache: (resetAPICache?: boolean) => void;
117
+ }> & {} & ComponentCustomProperties & {} & {
118
+ $slots: Readonly< Slots> & Slots;
119
+ }) | null;
120
+ }, any>;
121
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import { Item } from '../../../../formsExt/selector2/types';
2
+ export declare const mockProjects: Item[];
3
+ export declare const generateProjects: (count: number) => {
4
+ id: number;
5
+ user_id: number;
6
+ name: string;
7
+ url: string;
8
+ on: 0 | 1 | -1;
9
+ right: string;
10
+ }[];
@@ -0,0 +1,4 @@
1
+ import { Props } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare const _default: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
4
+ export default _default;
@@ -0,0 +1,17 @@
1
+ export interface Props {
2
+ /**
3
+ * id проекта
4
+ */
5
+ id: number;
6
+ /**
7
+ * Права пользователя в проекте
8
+ *
9
+ * Записывается в виде строки из нулей и единиц '01011000100000000000'
10
+ * Каждому индексу строки соответствует доступ к определенным действиям с проектом
11
+ */
12
+ right: string;
13
+ /**
14
+ * url проекта
15
+ */
16
+ url: string;
17
+ }