@bitrix24/b24ui-nuxt 2.0.9 → 2.1.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 (145) hide show
  1. package/dist/meta.d.mts +77776 -42923
  2. package/dist/meta.mjs +77776 -42923
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +3 -3
  5. package/dist/runtime/components/Advice.d.vue.ts +1 -1
  6. package/dist/runtime/components/Advice.vue +1 -3
  7. package/dist/runtime/components/Advice.vue.d.ts +1 -1
  8. package/dist/runtime/components/App.d.vue.ts +1 -1
  9. package/dist/runtime/components/App.vue +2 -1
  10. package/dist/runtime/components/App.vue.d.ts +1 -1
  11. package/dist/runtime/components/Avatar.d.vue.ts +2 -1
  12. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  13. package/dist/runtime/components/Button.vue +1 -0
  14. package/dist/runtime/components/ChatPrompt.d.vue.ts +2 -2
  15. package/dist/runtime/components/ChatPrompt.vue +5 -5
  16. package/dist/runtime/components/ChatPrompt.vue.d.ts +2 -2
  17. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +5 -5
  18. package/dist/runtime/components/ChatPromptSubmit.vue +53 -4
  19. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +5 -5
  20. package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
  21. package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
  22. package/dist/runtime/components/CommandPalette.vue +5 -4
  23. package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -6
  24. package/dist/runtime/components/DashboardSearch.vue +2 -3
  25. package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -6
  26. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +2 -3
  27. package/dist/runtime/components/DashboardSearchButton.vue +44 -6
  28. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +2 -3
  29. package/dist/runtime/components/Error.d.vue.ts +1 -1
  30. package/dist/runtime/components/Error.vue.d.ts +1 -1
  31. package/dist/runtime/components/FileUpload.d.vue.ts +3 -2
  32. package/dist/runtime/components/FileUpload.vue +9 -9
  33. package/dist/runtime/components/FileUpload.vue.d.ts +3 -2
  34. package/dist/runtime/components/Form.d.vue.ts +2 -1
  35. package/dist/runtime/components/Form.vue.d.ts +2 -1
  36. package/dist/runtime/components/Input.d.vue.ts +7 -7
  37. package/dist/runtime/components/Input.vue +2 -2
  38. package/dist/runtime/components/Input.vue.d.ts +7 -7
  39. package/dist/runtime/components/InputDate.d.vue.ts +115 -0
  40. package/dist/runtime/components/InputDate.vue +198 -0
  41. package/dist/runtime/components/InputDate.vue.d.ts +115 -0
  42. package/dist/runtime/components/InputMenu.d.vue.ts +7 -128
  43. package/dist/runtime/components/InputMenu.vue +3 -3
  44. package/dist/runtime/components/InputMenu.vue.d.ts +7 -128
  45. package/dist/runtime/components/InputNumber.d.vue.ts +25 -124
  46. package/dist/runtime/components/InputNumber.vue +3 -3
  47. package/dist/runtime/components/InputNumber.vue.d.ts +25 -124
  48. package/dist/runtime/components/InputTags.d.vue.ts +6 -109
  49. package/dist/runtime/components/InputTags.vue +8 -8
  50. package/dist/runtime/components/InputTags.vue.d.ts +6 -109
  51. package/dist/runtime/components/InputTime.d.vue.ts +99 -0
  52. package/dist/runtime/components/InputTime.vue +170 -0
  53. package/dist/runtime/components/InputTime.vue.d.ts +99 -0
  54. package/dist/runtime/components/Link.d.vue.ts +4 -49
  55. package/dist/runtime/components/Link.vue +1 -0
  56. package/dist/runtime/components/Link.vue.d.ts +4 -49
  57. package/dist/runtime/components/Modal.d.vue.ts +1 -1
  58. package/dist/runtime/components/Modal.vue.d.ts +1 -1
  59. package/dist/runtime/components/Pagination.d.vue.ts +2 -2
  60. package/dist/runtime/components/Pagination.vue.d.ts +2 -2
  61. package/dist/runtime/components/PinInput.d.vue.ts +3 -3
  62. package/dist/runtime/components/PinInput.vue.d.ts +3 -3
  63. package/dist/runtime/components/Progress.d.vue.ts +1 -1
  64. package/dist/runtime/components/Progress.vue.d.ts +1 -1
  65. package/dist/runtime/components/Select.d.vue.ts +6 -107
  66. package/dist/runtime/components/Select.vue +3 -3
  67. package/dist/runtime/components/Select.vue.d.ts +6 -107
  68. package/dist/runtime/components/SelectMenu.d.vue.ts +7 -106
  69. package/dist/runtime/components/SelectMenu.vue +3 -3
  70. package/dist/runtime/components/SelectMenu.vue.d.ts +7 -106
  71. package/dist/runtime/components/Slideover.d.vue.ts +1 -1
  72. package/dist/runtime/components/Slideover.vue.d.ts +1 -1
  73. package/dist/runtime/components/Switch.d.vue.ts +2 -1
  74. package/dist/runtime/components/Switch.vue.d.ts +2 -1
  75. package/dist/runtime/components/Table.d.vue.ts +5 -4
  76. package/dist/runtime/components/Table.vue +4 -3
  77. package/dist/runtime/components/Table.vue.d.ts +5 -4
  78. package/dist/runtime/components/Textarea.d.vue.ts +7 -6
  79. package/dist/runtime/components/Textarea.vue +2 -2
  80. package/dist/runtime/components/Textarea.vue.d.ts +7 -6
  81. package/dist/runtime/components/Toast.vue +5 -5
  82. package/dist/runtime/components/Toaster.d.vue.ts +1 -1
  83. package/dist/runtime/components/Toaster.vue.d.ts +1 -1
  84. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +3 -3
  85. package/dist/runtime/components/color-mode/ColorModeAvatar.vue +16 -4
  86. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +3 -3
  87. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -3
  88. package/dist/runtime/components/color-mode/ColorModeButton.vue +54 -6
  89. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -3
  90. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +4 -3
  91. package/dist/runtime/components/color-mode/ColorModeImage.vue +4 -0
  92. package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +4 -3
  93. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
  94. package/dist/runtime/components/color-mode/ColorModeSelect.vue +47 -5
  95. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
  96. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +2 -2
  97. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +29 -5
  98. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +2 -2
  99. package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -6
  100. package/dist/runtime/components/content/ContentSearch.vue +2 -3
  101. package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -6
  102. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +2 -3
  103. package/dist/runtime/components/content/ContentSearchButton.vue +43 -5
  104. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +2 -3
  105. package/dist/runtime/components/content/ContentSurround.vue +7 -1
  106. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +11 -7
  107. package/dist/runtime/components/locale/LocaleSelect.vue +50 -6
  108. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +11 -7
  109. package/dist/runtime/components/prose/Callout.vue +4 -0
  110. package/dist/runtime/composables/index.d.ts +8 -0
  111. package/dist/runtime/composables/index.js +8 -0
  112. package/dist/runtime/composables/useFileUpload.d.ts +2 -1
  113. package/dist/runtime/composables/useFileUpload.js +13 -4
  114. package/dist/runtime/inertia/components/Link.d.vue.ts +17 -10
  115. package/dist/runtime/inertia/components/Link.vue +8 -6
  116. package/dist/runtime/inertia/components/Link.vue.d.ts +17 -10
  117. package/dist/runtime/inertia/stubs.d.ts +1 -1
  118. package/dist/runtime/types/html.d.ts +8 -0
  119. package/dist/runtime/types/html.js +0 -0
  120. package/dist/runtime/types/index.d.ts +2 -0
  121. package/dist/runtime/types/index.js +2 -0
  122. package/dist/runtime/types/input.d.ts +5 -5
  123. package/dist/runtime/types/utils.d.ts +2 -0
  124. package/dist/runtime/utils/content.d.ts +2 -2
  125. package/dist/runtime/utils/dashboard.d.ts +1 -1
  126. package/dist/runtime/utils/link.d.ts +1 -0
  127. package/dist/runtime/utils/link.js +40 -24
  128. package/dist/runtime/vue/components/Link.d.vue.ts +8 -37
  129. package/dist/runtime/vue/components/Link.vue +6 -11
  130. package/dist/runtime/vue/components/Link.vue.d.ts +8 -37
  131. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +2 -2
  132. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue +55 -5
  133. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue.d.ts +2 -2
  134. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
  135. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +46 -3
  136. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
  137. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  138. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +24 -3
  139. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  140. package/dist/runtime/vue/stubs.d.ts +2 -2
  141. package/dist/runtime/vue/stubs.js +1 -1
  142. package/dist/shared/{b24ui-nuxt.4XNR9Ysu.mjs → b24ui-nuxt.CXLCGBie.mjs} +135 -1
  143. package/dist/unplugin.mjs +1 -1
  144. package/dist/vite.mjs +1 -1
  145. package/package.json +24 -14
@@ -28,6 +28,9 @@ export interface ContentSearchItem extends Omit<LinkProps, 'custom'>, CommandPal
28
28
  */
29
29
  icon?: IconComponent;
30
30
  }
31
+ /**
32
+ * @memo not use loadingIcon
33
+ */
31
34
  export interface ContentSearchProps<T extends ContentSearchLink = ContentSearchLink> extends Pick<ModalProps, 'title' | 'description' | 'overlay' | 'transition' | 'content' | 'dismissible' | 'fullscreen' | 'modal' | 'portal'> {
32
35
  /**
33
36
  * The icon displayed in the input.
@@ -47,12 +50,6 @@ export interface ContentSearchProps<T extends ContentSearchLink = ContentSearchL
47
50
  autofocus?: boolean;
48
51
  /** When `true`, the loading icon will be displayed. */
49
52
  loading?: boolean;
50
- /**
51
- * The icon when the `loading` prop is `true`.
52
- * @defaultValue icons.loading
53
- * @IconComponent
54
- */
55
- loadingIcon?: IconComponent;
56
53
  /**
57
54
  * Display a close button in the input (useful when inside a Modal for example).
58
55
  * `{ size: 'sm', color: 'air-tertiary-no-accent' }`{lang="ts-type"}
@@ -20,7 +20,6 @@ const props = defineProps({
20
20
  placeholder: { type: String, required: false },
21
21
  autofocus: { type: Boolean, required: false },
22
22
  loading: { type: Boolean, required: false },
23
- loadingIcon: { type: [Function, Object], required: false },
24
23
  close: { type: [Boolean, Object], required: false, default: true },
25
24
  closeIcon: { type: [Function, Object], required: false },
26
25
  shortcut: { type: String, required: false, default: "meta_k" },
@@ -48,7 +47,7 @@ const { t } = useLocale();
48
47
  const { open } = useContentSearch();
49
48
  const colorMode = useColorMode();
50
49
  const appConfig = useAppConfig();
51
- const commandPaletteProps = useForwardProps(reactivePick(props, "icon", "placeholder", "autofocus", "loading", "loadingIcon", "close", "closeIcon"));
50
+ const commandPaletteProps = useForwardProps(reactivePick(props, "icon", "placeholder", "autofocus", "loading", "close", "closeIcon"));
52
51
  const modalProps = useForwardProps(reactivePick(props, "overlay", "transition", "content", "dismissible", "fullscreen", "modal", "portal"));
53
52
  const getProxySlots = () => omit(slots, ["content"]);
54
53
  const fuse = computed(() => defu({}, props.fuse, {
@@ -59,6 +58,7 @@ const fuse = computed(() => defu({}, props.fuse, {
59
58
  const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.contentSearch || {} })({
60
59
  fullscreen: props.fullscreen
61
60
  }));
61
+ const commandPaletteRef = useTemplateRef("commandPaletteRef");
62
62
  function mapLinksItems(links) {
63
63
  return links.flatMap((link) => [{
64
64
  ...link,
@@ -158,7 +158,6 @@ defineShortcuts({
158
158
  handler: () => open.value = !open.value
159
159
  }
160
160
  });
161
- const commandPaletteRef = useTemplateRef("commandPaletteRef");
162
161
  defineExpose({
163
162
  commandPaletteRef
164
163
  });
@@ -28,6 +28,9 @@ export interface ContentSearchItem extends Omit<LinkProps, 'custom'>, CommandPal
28
28
  */
29
29
  icon?: IconComponent;
30
30
  }
31
+ /**
32
+ * @memo not use loadingIcon
33
+ */
31
34
  export interface ContentSearchProps<T extends ContentSearchLink = ContentSearchLink> extends Pick<ModalProps, 'title' | 'description' | 'overlay' | 'transition' | 'content' | 'dismissible' | 'fullscreen' | 'modal' | 'portal'> {
32
35
  /**
33
36
  * The icon displayed in the input.
@@ -47,12 +50,6 @@ export interface ContentSearchProps<T extends ContentSearchLink = ContentSearchL
47
50
  autofocus?: boolean;
48
51
  /** When `true`, the loading icon will be displayed. */
49
52
  loading?: boolean;
50
- /**
51
- * The icon when the `loading` prop is `true`.
52
- * @defaultValue icons.loading
53
- * @IconComponent
54
- */
55
- loadingIcon?: IconComponent;
56
53
  /**
57
54
  * Display a close button in the input (useful when inside a Modal for example).
58
55
  * `{ size: 'sm', color: 'air-tertiary-no-accent' }`{lang="ts-type"}
@@ -3,7 +3,7 @@ import theme from '#build/b24ui/content/content-search-button';
3
3
  import type { ButtonProps, ButtonSlots, IconComponent, KbdProps, TooltipProps } from '../../types';
4
4
  import type { ComponentConfig } from '../../types/tv';
5
5
  type ContentSearchButton = ComponentConfig<typeof theme, AppConfig, 'contentSearchButton'>;
6
- export interface ContentSearchButtonProps {
6
+ export interface ContentSearchButtonProps extends Omit<ButtonProps, 'icon' | 'label' | 'color'> {
7
7
  /**
8
8
  * The icon displayed in the button.
9
9
  * @defaultValue icons.search
@@ -20,7 +20,6 @@ export interface ContentSearchButtonProps {
20
20
  * @defaultValue 'air-tertiary-no-accent'
21
21
  */
22
22
  color?: ButtonProps['color'];
23
- size?: ButtonProps['size'];
24
23
  /**
25
24
  * Whether the button is collapsed.
26
25
  * @defaultValue true
@@ -41,7 +40,7 @@ export interface ContentSearchButtonProps {
41
40
  class?: any;
42
41
  }
43
42
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ContentSearchButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ContentSearchButtonProps> & Readonly<{}>, {
44
- color: "link" | "air-primary" | "air-primary-success" | "air-primary-alert" | "air-primary-copilot" | "air-secondary" | "air-secondary-accent" | "air-secondary-accent-1" | "air-tertiary" | "default" | "danger" | "success" | "warning" | "primary" | "secondary" | "collab" | "ai" | "air-secondary-alert" | "air-secondary-accent-2" | "air-secondary-no-accent" | "air-tertiary-accent" | "air-tertiary-no-accent" | "air-selection" | "air-boost";
43
+ color: "default" | "link" | "air-primary" | "air-primary-success" | "air-primary-alert" | "air-primary-copilot" | "air-secondary" | "air-secondary-accent" | "air-secondary-accent-1" | "air-tertiary" | "danger" | "success" | "warning" | "primary" | "secondary" | "collab" | "ai" | "air-secondary-alert" | "air-secondary-accent-2" | "air-secondary-no-accent" | "air-tertiary-accent" | "air-tertiary-no-accent" | "air-selection" | "air-boost";
45
44
  tooltip: boolean | TooltipProps;
46
45
  kbds: KbdProps["value"][] | KbdProps[];
47
46
  collapsed: boolean;
@@ -6,7 +6,7 @@ import theme from "#build/b24ui/content/content-search-button";
6
6
  import { computed, toRef } from "vue";
7
7
  import { useForwardProps } from "reka-ui";
8
8
  import { defu } from "defu";
9
- import { reactivePick, createReusableTemplate } from "@vueuse/core";
9
+ import { reactiveOmit, createReusableTemplate } from "@vueuse/core";
10
10
  import { useAppConfig } from "#imports";
11
11
  import { useContentSearch } from "../../composables/useContentSearch";
12
12
  import { useLocale } from "../../composables/useLocale";
@@ -21,17 +21,55 @@ const props = defineProps({
21
21
  icon: { type: [Function, Object], required: false },
22
22
  label: { type: String, required: false },
23
23
  color: { type: null, required: false, default: "air-tertiary-no-accent" },
24
- size: { type: null, required: false },
25
24
  collapsed: { type: Boolean, required: false, default: true },
26
25
  tooltip: { type: [Boolean, Object], required: false, default: false },
27
26
  kbds: { type: Array, required: false, default: () => ["meta", "k"] },
28
27
  b24ui: { type: void 0, required: false },
29
- class: { type: null, required: false }
28
+ class: { type: null, required: false },
29
+ activeColor: { type: null, required: false },
30
+ depth: { type: null, required: false },
31
+ activeDepth: { type: null, required: false },
32
+ size: { type: null, required: false },
33
+ rounded: { type: Boolean, required: false },
34
+ block: { type: Boolean, required: false },
35
+ loadingAuto: { type: Boolean, required: false },
36
+ normalCase: { type: Boolean, required: false },
37
+ useWait: { type: Boolean, required: false },
38
+ useClock: { type: Boolean, required: false },
39
+ useDropdown: { type: Boolean, required: false },
40
+ onClick: { type: [Function, Array], required: false },
41
+ activeClass: { type: String, required: false },
42
+ inactiveClass: { type: String, required: false },
43
+ avatar: { type: Object, required: false },
44
+ loading: { type: Boolean, required: false },
45
+ as: { type: null, required: false },
46
+ type: { type: null, required: false },
47
+ disabled: { type: Boolean, required: false },
48
+ active: { type: Boolean, required: false },
49
+ exact: { type: Boolean, required: false },
50
+ exactQuery: { type: [Boolean, String], required: false },
51
+ exactHash: { type: Boolean, required: false },
52
+ isAction: { type: Boolean, required: false },
53
+ to: { type: null, required: false },
54
+ href: { type: null, required: false },
55
+ external: { type: Boolean, required: false },
56
+ target: { type: [String, Object, null], required: false },
57
+ rel: { type: [String, Object, null], required: false },
58
+ noRel: { type: Boolean, required: false },
59
+ prefetchedClass: { type: String, required: false },
60
+ prefetch: { type: Boolean, required: false },
61
+ prefetchOn: { type: [String, Object], required: false },
62
+ noPrefetch: { type: Boolean, required: false },
63
+ trailingSlash: { type: String, required: false },
64
+ exactActiveClass: { type: String, required: false },
65
+ ariaCurrentValue: { type: String, required: false },
66
+ viewTransition: { type: Boolean, required: false },
67
+ replace: { type: Boolean, required: false }
30
68
  });
31
69
  const slots = defineSlots();
32
70
  const [DefineButtonTemplate, ReuseButtonTemplate] = createReusableTemplate();
33
71
  const getProxySlots = () => omit(slots, ["trailing"]);
34
- const rootProps = useForwardProps(reactivePick(props, "color", "size"));
72
+ const buttonProps = useForwardProps(reactiveOmit(props, "icon", "label", "collapsed", "tooltip", "kbds", "class", "b24ui"));
35
73
  const tooltipProps = toRef(() => defu(typeof props.tooltip === "boolean" ? {} : props.tooltip, { delayDuration: 0, content: { side: "right" } }));
36
74
  const { t } = useLocale();
37
75
  const { open } = useContentSearch();
@@ -45,7 +83,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.content
45
83
  :icon="icon || icons.search"
46
84
  :label="label || t('contentSearchButton.label')"
47
85
  v-bind="{
48
- ...rootProps,
86
+ ...buttonProps,
49
87
  ...collapsed ? {
50
88
  'label': void 0,
51
89
  'aria-label': label || t('contentSearchButton.label')
@@ -3,7 +3,7 @@ import theme from '#build/b24ui/content/content-search-button';
3
3
  import type { ButtonProps, ButtonSlots, IconComponent, KbdProps, TooltipProps } from '../../types';
4
4
  import type { ComponentConfig } from '../../types/tv';
5
5
  type ContentSearchButton = ComponentConfig<typeof theme, AppConfig, 'contentSearchButton'>;
6
- export interface ContentSearchButtonProps {
6
+ export interface ContentSearchButtonProps extends Omit<ButtonProps, 'icon' | 'label' | 'color'> {
7
7
  /**
8
8
  * The icon displayed in the button.
9
9
  * @defaultValue icons.search
@@ -20,7 +20,6 @@ export interface ContentSearchButtonProps {
20
20
  * @defaultValue 'air-tertiary-no-accent'
21
21
  */
22
22
  color?: ButtonProps['color'];
23
- size?: ButtonProps['size'];
24
23
  /**
25
24
  * Whether the button is collapsed.
26
25
  * @defaultValue true
@@ -41,7 +40,7 @@ export interface ContentSearchButtonProps {
41
40
  class?: any;
42
41
  }
43
42
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ContentSearchButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ContentSearchButtonProps> & Readonly<{}>, {
44
- color: "link" | "air-primary" | "air-primary-success" | "air-primary-alert" | "air-primary-copilot" | "air-secondary" | "air-secondary-accent" | "air-secondary-accent-1" | "air-tertiary" | "default" | "danger" | "success" | "warning" | "primary" | "secondary" | "collab" | "ai" | "air-secondary-alert" | "air-secondary-accent-2" | "air-secondary-no-accent" | "air-tertiary-accent" | "air-tertiary-no-accent" | "air-selection" | "air-boost";
43
+ color: "default" | "link" | "air-primary" | "air-primary-success" | "air-primary-alert" | "air-primary-copilot" | "air-secondary" | "air-secondary-accent" | "air-secondary-accent-1" | "air-tertiary" | "danger" | "success" | "warning" | "primary" | "secondary" | "collab" | "ai" | "air-secondary-alert" | "air-secondary-accent-2" | "air-secondary-no-accent" | "air-tertiary-accent" | "air-tertiary-no-accent" | "air-selection" | "air-boost";
45
44
  tooltip: boolean | TooltipProps;
46
45
  kbds: KbdProps["value"][] | KbdProps[];
47
46
  collapsed: boolean;
@@ -21,7 +21,13 @@ const props = defineProps({
21
21
  });
22
22
  defineSlots();
23
23
  const appConfig = useAppConfig();
24
- const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate();
24
+ const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate({
25
+ props: {
26
+ link: Object,
27
+ icon: [Object, Function],
28
+ direction: String
29
+ }
30
+ });
25
31
  const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.contentSurround || {} })());
26
32
  </script>
27
33
 
@@ -1,16 +1,20 @@
1
- import type { SelectMenuProps } from '@bitrix24/b24ui-nuxt';
1
+ import type { SelectMenuProps } from '../SelectMenu.vue';
2
2
  import type { Locale } from '../../types/locale';
3
- export interface LocaleSelectProps extends /** @vue-ignore */ Pick<SelectMenuProps<any>, 'color' | 'size' | 'trailingIcon' | 'selectedIcon' | 'content' | 'arrow' | 'portal' | 'disabled' | 'b24ui'> {
3
+ export interface LocaleSelectProps extends Omit<SelectMenuProps<Locale<any>[], 'code', false>, 'items' | 'modelValue'> {
4
4
  locales?: Locale<any>[];
5
5
  }
6
6
  declare const __VLS_export: import("vue").DefineComponent<LocaleSelectProps & {
7
- modelValue?: string;
7
+ modelValue: string;
8
8
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
- "update:modelValue": (value: string | undefined) => any;
9
+ "update:modelValue": (value: string) => any;
10
10
  }, string, import("vue").PublicProps, Readonly<LocaleSelectProps & {
11
- modelValue?: string;
11
+ modelValue: string;
12
12
  }> & Readonly<{
13
- "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
14
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
14
+ }>, {
15
+ labelKey: string;
16
+ valueKey: "code";
17
+ searchInput: boolean | import("../Input.vue").InputProps;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
19
  declare const _default: typeof __VLS_export;
16
20
  export default _default;
@@ -3,11 +3,57 @@
3
3
  </script>
4
4
 
5
5
  <script setup>
6
+ import { useForwardProps } from "reka-ui";
7
+ import { reactiveOmit } from "@vueuse/core";
6
8
  import B24SelectMenu from "../SelectMenu.vue";
7
- defineProps({
8
- locales: { type: Array, required: false }
9
+ defineOptions({ inheritAttrs: false });
10
+ const props = defineProps({
11
+ locales: { type: Array, required: false },
12
+ id: { type: String, required: false },
13
+ placeholder: { type: String, required: false },
14
+ searchInput: { type: [Boolean, Object], required: false, default: false },
15
+ color: { type: null, required: false },
16
+ size: { type: null, required: false },
17
+ noPadding: { type: Boolean, required: false },
18
+ noBorder: { type: Boolean, required: false },
19
+ underline: { type: Boolean, required: false },
20
+ rounded: { type: Boolean, required: false },
21
+ tag: { type: String, required: false },
22
+ tagColor: { type: null, required: false },
23
+ required: { type: Boolean, required: false },
24
+ trailingIcon: { type: [Function, Object], required: false },
25
+ selectedIcon: { type: [Function, Object], required: false },
26
+ content: { type: Object, required: false },
27
+ arrow: { type: [Boolean, Object], required: false },
28
+ portal: { type: [Boolean, String], required: false, skipCheck: true },
29
+ virtualize: { type: [Boolean, Object], required: false },
30
+ valueKey: { type: String, required: false, default: "code" },
31
+ labelKey: { type: null, required: false, default: "name" },
32
+ descriptionKey: { type: null, required: false },
33
+ defaultValue: { type: null, required: false },
34
+ multiple: { type: Boolean, required: false },
35
+ highlight: { type: Boolean, required: false },
36
+ createItem: { type: [Boolean, String, Object], required: false },
37
+ filterFields: { type: Array, required: false },
38
+ ignoreFilter: { type: Boolean, required: false },
39
+ autofocus: { type: Boolean, required: false },
40
+ autofocusDelay: { type: Number, required: false },
41
+ class: { type: null, required: false },
42
+ b24ui: { type: null, required: false },
43
+ open: { type: Boolean, required: false },
44
+ defaultOpen: { type: Boolean, required: false },
45
+ disabled: { type: Boolean, required: false },
46
+ name: { type: String, required: false },
47
+ resetSearchTermOnBlur: { type: Boolean, required: false },
48
+ resetSearchTermOnSelect: { type: Boolean, required: false },
49
+ highlightOnHover: { type: Boolean, required: false },
50
+ icon: { type: [Function, Object], required: false },
51
+ avatar: { type: Object, required: false },
52
+ loading: { type: Boolean, required: false },
53
+ trailing: { type: Boolean, required: false }
9
54
  });
10
- const modelValue = defineModel({ type: String });
55
+ const selectMenuProps = useForwardProps(reactiveOmit(props, "locales"));
56
+ const modelValue = defineModel({ type: String, ...{ required: true } });
11
57
  function getEmojiFlag(locale) {
12
58
  const languageToCountry = {
13
59
  en: "us",
@@ -58,9 +104,7 @@ function getEmojiFlag(locale) {
58
104
  <template>
59
105
  <B24SelectMenu
60
106
  v-model="modelValue"
61
- :search-input="false"
62
- value-key="code"
63
- label-key="name"
107
+ v-bind="{ ...selectMenuProps, ...$attrs }"
64
108
  :items="locales"
65
109
  >
66
110
  <template #leading>
@@ -1,16 +1,20 @@
1
- import type { SelectMenuProps } from '@bitrix24/b24ui-nuxt';
1
+ import type { SelectMenuProps } from '../SelectMenu.vue';
2
2
  import type { Locale } from '../../types/locale';
3
- export interface LocaleSelectProps extends /** @vue-ignore */ Pick<SelectMenuProps<any>, 'color' | 'size' | 'trailingIcon' | 'selectedIcon' | 'content' | 'arrow' | 'portal' | 'disabled' | 'b24ui'> {
3
+ export interface LocaleSelectProps extends Omit<SelectMenuProps<Locale<any>[], 'code', false>, 'items' | 'modelValue'> {
4
4
  locales?: Locale<any>[];
5
5
  }
6
6
  declare const __VLS_export: import("vue").DefineComponent<LocaleSelectProps & {
7
- modelValue?: string;
7
+ modelValue: string;
8
8
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
- "update:modelValue": (value: string | undefined) => any;
9
+ "update:modelValue": (value: string) => any;
10
10
  }, string, import("vue").PublicProps, Readonly<LocaleSelectProps & {
11
- modelValue?: string;
11
+ modelValue: string;
12
12
  }> & Readonly<{
13
- "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
14
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
14
+ }>, {
15
+ labelKey: string;
16
+ valueKey: "code";
17
+ searchInput: boolean | import("../Input.vue").InputProps;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
19
  declare const _default: typeof __VLS_export;
16
20
  export default _default;
@@ -9,6 +9,7 @@ import { tv } from "../../utils/tv";
9
9
  import icons from "../../dictionary/icons";
10
10
  import B24Link from "../Link.vue";
11
11
  import GitHubIcon from "@bitrix24/b24icons-vue/social/GitHubIcon";
12
+ import InfoCircleIcon from "@bitrix24/b24icons-vue/outline/InfoCircleIcon";
12
13
  defineOptions({ inheritAttrs: false });
13
14
  const props = defineProps({
14
15
  to: { type: null, required: false },
@@ -33,6 +34,9 @@ const iconFromIconName = computed(() => {
33
34
  switch (props.iconName) {
34
35
  case "GitHubIcon":
35
36
  return GitHubIcon;
37
+ /** @todo change icon */
38
+ case "MdnWebDocIcon":
39
+ return InfoCircleIcon;
36
40
  }
37
41
  return void 0;
38
42
  });
@@ -0,0 +1,8 @@
1
+ export * from './defineLocale';
2
+ export * from './defineShortcuts';
3
+ export * from './useFileUpload';
4
+ export * from './useKbd';
5
+ export * from './useOverlay';
6
+ export * from './useResizable';
7
+ export * from './useScrollspy';
8
+ export * from './useToast';
@@ -0,0 +1,8 @@
1
+ export * from "./defineLocale.js";
2
+ export * from "./defineShortcuts.js";
3
+ export * from "./useFileUpload.js";
4
+ export * from "./useKbd.js";
5
+ export * from "./useOverlay.js";
6
+ export * from "./useResizable.js";
7
+ export * from "./useScrollspy.js";
8
+ export * from "./useToast.js";
@@ -1,3 +1,4 @@
1
+ import type { ComponentPublicInstance } from 'vue';
1
2
  import type { MaybeRef } from '@vueuse/core';
2
3
  export interface UseFileUploadOptions {
3
4
  /**
@@ -14,6 +15,6 @@ export interface UseFileUploadOptions {
14
15
  export declare function useFileUpload(options: UseFileUploadOptions): {
15
16
  isDragging: import("vue").Ref<boolean, boolean>;
16
17
  open: () => void;
17
- inputRef: import("vue").Ref<HTMLInputElement | undefined, HTMLInputElement | undefined>;
18
+ inputRef: import("vue").Ref<ComponentPublicInstance | undefined, ComponentPublicInstance | undefined>;
18
19
  dropzoneRef: import("vue").Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
19
20
  };
@@ -26,7 +26,7 @@ export function useFileUpload(options) {
26
26
  const inputRef = ref();
27
27
  const dropzoneRef = ref();
28
28
  const dataTypes = computed(() => parseAcceptToDataTypes(unref(accept)));
29
- const onDrop = (files) => {
29
+ const onDrop = (files, fromDropZone = false) => {
30
30
  if (!files || files.length === 0) {
31
31
  return;
32
32
  }
@@ -36,6 +36,15 @@ export function useFileUpload(options) {
36
36
  if (files.length > 1 && !multiple) {
37
37
  files = [files[0]];
38
38
  }
39
+ if (fromDropZone && inputRef.value?.$el) {
40
+ try {
41
+ const dt = new DataTransfer();
42
+ files.forEach((file) => dt.items.add(file));
43
+ inputRef.value.$el.files = dt.files;
44
+ } catch (e) {
45
+ console.warn("Could not sync files to input element:", e);
46
+ }
47
+ }
39
48
  onUpdate(files);
40
49
  };
41
50
  const isDragging = ref(false);
@@ -47,18 +56,18 @@ export function useFileUpload(options) {
47
56
  fileDialog.open();
48
57
  }
49
58
  onMounted(() => {
50
- const { isOverDropZone } = dropzone ? useDropZone(dropzoneRef, { dataTypes: dataTypes.value, onDrop }) : { isOverDropZone: ref(false) };
59
+ const { isOverDropZone } = dropzone ? useDropZone(dropzoneRef, { dataTypes: dataTypes.value, onDrop: (files) => onDrop(files, true) }) : { isOverDropZone: ref(false) };
51
60
  watch(isOverDropZone, (value) => {
52
61
  isDragging.value = value;
53
62
  });
54
63
  const { onChange, open: open2 } = useFileDialog({
55
64
  accept: unref(accept),
56
65
  multiple,
57
- input: unref(inputRef),
66
+ input: unref(inputRef)?.$el,
58
67
  reset
59
68
  });
60
69
  fileDialog.open = open2;
61
- onChange((fileList) => onDrop(fileList));
70
+ onChange((fileList) => onDrop(fileList, false));
62
71
  });
63
72
  return {
64
73
  isDragging,
@@ -1,6 +1,11 @@
1
- import type { ButtonHTMLAttributes } from 'vue';
2
1
  import type { InertiaLinkProps } from '@inertiajs/vue3';
3
- interface NuxtLinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'> {
2
+ import type { ButtonHTMLAttributes, AnchorHTMLAttributes } from '../../types/html';
3
+ export interface LinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
4
+ /**
5
+ * The element or component this component should render as when not a link.
6
+ * @defaultValue 'button'
7
+ */
8
+ as?: any;
4
9
  activeClass?: string;
5
10
  /**
6
11
  * Route Location the link should navigate to when clicked on.
@@ -9,7 +14,7 @@ interface NuxtLinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'> {
9
14
  /**
10
15
  * An alias for `to`. If used with `to`, `href` will be ignored
11
16
  */
12
- href?: NuxtLinkProps['to'];
17
+ href?: LinkProps['to'];
13
18
  /**
14
19
  * Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
15
20
  */
@@ -18,14 +23,16 @@ interface NuxtLinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'> {
18
23
  * Where to display the linked URL, as the name for a browsing context.
19
24
  */
20
25
  target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
21
- ariaCurrentValue?: string;
22
- }
23
- export interface LinkProps extends NuxtLinkProps {
24
26
  /**
25
- * The element or component this component should render as when not a link.
26
- * @defaultValue 'button'
27
+ * A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
27
28
  */
28
- as?: any;
29
+ rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
30
+ /**
31
+ * Value passed to the attribute `aria-current` when the link is exact active.
32
+ *
33
+ * @defaultValue `'page'`
34
+ */
35
+ ariaCurrentValue?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';
29
36
  /**
30
37
  * The type of the button when not a link.
31
38
  * @defaultValue 'button'
@@ -53,8 +60,8 @@ export interface LinkSlots {
53
60
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
54
61
  as: any;
55
62
  type: "reset" | "submit" | "button";
56
- activeClass: string;
57
63
  active: boolean;
64
+ activeClass: string;
58
65
  inactiveClass: string;
59
66
  isAction: boolean;
60
67
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, LinkSlots>;
@@ -15,6 +15,13 @@ import B24LinkBase from "./../../components/LinkBase.vue";
15
15
  defineOptions({ inheritAttrs: false });
16
16
  const props = defineProps({
17
17
  as: { type: null, required: false, default: "button" },
18
+ activeClass: { type: String, required: false, default: "" },
19
+ to: { type: String, required: false },
20
+ href: { type: String, required: false },
21
+ external: { type: Boolean, required: false },
22
+ target: { type: [String, Object, null], required: false },
23
+ rel: { type: [String, Object, null], required: false },
24
+ ariaCurrentValue: { type: String, required: false },
18
25
  type: { type: null, required: false, default: "button" },
19
26
  disabled: { type: Boolean, required: false },
20
27
  active: { type: Boolean, required: false, default: void 0 },
@@ -24,12 +31,6 @@ const props = defineProps({
24
31
  isAction: { type: Boolean, required: false, default: false },
25
32
  raw: { type: Boolean, required: false },
26
33
  class: { type: null, required: false },
27
- activeClass: { type: String, required: false, default: "" },
28
- to: { type: String, required: false },
29
- href: { type: String, required: false },
30
- external: { type: Boolean, required: false },
31
- target: { type: [String, Object, null], required: false },
32
- ariaCurrentValue: { type: String, required: false },
33
34
  data: { type: null, required: false },
34
35
  method: { type: String, required: false },
35
36
  replace: { type: Boolean, required: false },
@@ -41,6 +42,7 @@ const props = defineProps({
41
42
  headers: { type: Object, required: false },
42
43
  queryStringArrayFormat: { type: String, required: false },
43
44
  async: { type: Boolean, required: false },
45
+ viewTransition: { type: [Boolean, Function], required: false },
44
46
  onCancelToken: { type: Function, required: false },
45
47
  onBefore: { type: Function, required: false },
46
48
  onBeforeUpdate: { type: Function, required: false },
@@ -1,6 +1,11 @@
1
- import type { ButtonHTMLAttributes } from 'vue';
2
1
  import type { InertiaLinkProps } from '@inertiajs/vue3';
3
- interface NuxtLinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'> {
2
+ import type { ButtonHTMLAttributes, AnchorHTMLAttributes } from '../../types/html';
3
+ export interface LinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
4
+ /**
5
+ * The element or component this component should render as when not a link.
6
+ * @defaultValue 'button'
7
+ */
8
+ as?: any;
4
9
  activeClass?: string;
5
10
  /**
6
11
  * Route Location the link should navigate to when clicked on.
@@ -9,7 +14,7 @@ interface NuxtLinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'> {
9
14
  /**
10
15
  * An alias for `to`. If used with `to`, `href` will be ignored
11
16
  */
12
- href?: NuxtLinkProps['to'];
17
+ href?: LinkProps['to'];
13
18
  /**
14
19
  * Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
15
20
  */
@@ -18,14 +23,16 @@ interface NuxtLinkProps extends Omit<InertiaLinkProps, 'href' | 'onClick'> {
18
23
  * Where to display the linked URL, as the name for a browsing context.
19
24
  */
20
25
  target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
21
- ariaCurrentValue?: string;
22
- }
23
- export interface LinkProps extends NuxtLinkProps {
24
26
  /**
25
- * The element or component this component should render as when not a link.
26
- * @defaultValue 'button'
27
+ * A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
27
28
  */
28
- as?: any;
29
+ rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
30
+ /**
31
+ * Value passed to the attribute `aria-current` when the link is exact active.
32
+ *
33
+ * @defaultValue `'page'`
34
+ */
35
+ ariaCurrentValue?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';
29
36
  /**
30
37
  * The type of the button when not a link.
31
38
  * @defaultValue 'button'
@@ -53,8 +60,8 @@ export interface LinkSlots {
53
60
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
54
61
  as: any;
55
62
  type: "reset" | "submit" | "button";
56
- activeClass: string;
57
63
  active: boolean;
64
+ activeClass: string;
58
65
  inactiveClass: string;
59
66
  isAction: boolean;
60
67
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, LinkSlots>;
@@ -17,7 +17,7 @@ export declare const useColorMode: () => {
17
17
  preference?: undefined;
18
18
  readonly value?: undefined;
19
19
  } | {
20
- preference: "system" | import("@vueuse/core").BasicColorMode;
20
+ preference: import("@vueuse/core").BasicColorMode | "system";
21
21
  readonly value: import("@vueuse/core").BasicColorMode;
22
22
  forced: boolean;
23
23
  };
@@ -0,0 +1,8 @@
1
+ import type { AnchorHTMLAttributes as VueAnchorHTMLAttributes, ButtonHTMLAttributes as VueButtonHTMLAttributes, FormHTMLAttributes as VueFormHTMLAttributes, ImgHTMLAttributes as VueImgHTMLAttributes, InputHTMLAttributes as VueInputHTMLAttributes, TableHTMLAttributes as VueTableHTMLAttributes, TextareaHTMLAttributes as VueTextareaHTMLAttributes } from 'vue';
2
+ export type AnchorHTMLAttributes = Pick<VueAnchorHTMLAttributes, 'download' | 'href' | 'hreflang' | 'media' | 'ping' | 'rel' | 'target' | 'type' | 'referrerpolicy'>;
3
+ export type ButtonHTMLAttributes = Pick<VueButtonHTMLAttributes, 'autofocus' | 'disabled' | 'form' | 'formaction' | 'formenctype' | 'formmethod' | 'formnovalidate' | 'formtarget' | 'name' | 'type'>;
4
+ export type FormHTMLAttributes = Pick<VueFormHTMLAttributes, 'acceptcharset' | 'action' | 'autocomplete' | 'enctype' | 'method' | 'name' | 'novalidate' | 'target'>;
5
+ export type ImgHTMLAttributes = Pick<VueImgHTMLAttributes, 'alt' | 'crossorigin' | 'decoding' | 'height' | 'loading' | 'referrerpolicy' | 'sizes' | 'src' | 'srcset' | 'usemap' | 'width'>;
6
+ export type InputHTMLAttributes = Pick<VueInputHTMLAttributes, 'autocomplete' | 'autofocus' | 'disabled' | 'enterKeyHint' | 'form' | 'formaction' | 'formenctype' | 'formmethod' | 'formnovalidate' | 'formtarget' | 'list' | 'max' | 'maxlength' | 'min' | 'minlength' | 'name' | 'pattern' | 'placeholder' | 'readonly' | 'required' | 'size' | 'step' | 'type'>;
7
+ export type TableHTMLAttributes = Pick<VueTableHTMLAttributes, 'cellpadding' | 'cellspacing' | 'summary' | 'width'>;
8
+ export type TextareaHTMLAttributes = Pick<VueTextareaHTMLAttributes, 'autocomplete' | 'autofocus' | 'cols' | 'dirname' | 'disabled' | 'form' | 'maxlength' | 'minlength' | 'name' | 'placeholder' | 'readonly' | 'required' | 'rows' | 'wrap'>;
File without changes