vueless 0.0.533 → 0.0.535

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 (39) hide show
  1. package/composables/useAutoPosition.ts +0 -9
  2. package/package.json +1 -1
  3. package/types.ts +24 -0
  4. package/ui.button/types.ts +3 -22
  5. package/ui.button-link/types.ts +2 -22
  6. package/ui.data-table/UTable.vue +16 -7
  7. package/ui.data-table/UTableRow.vue +0 -2
  8. package/ui.data-table/utilTable.ts +5 -1
  9. package/ui.dropdown-badge/UDropdownBadge.vue +16 -9
  10. package/ui.dropdown-badge/storybook/stories.ts +9 -6
  11. package/ui.dropdown-badge/types.ts +8 -27
  12. package/ui.dropdown-badge/useAttrs.ts +5 -5
  13. package/ui.dropdown-button/UDropdownButton.vue +32 -10
  14. package/ui.dropdown-button/storybook/stories.ts +15 -10
  15. package/ui.dropdown-button/types.ts +9 -28
  16. package/ui.dropdown-button/useAttrs.ts +6 -6
  17. package/ui.dropdown-link/UDropdownLink.vue +16 -9
  18. package/ui.dropdown-link/storybook/stories.ts +13 -10
  19. package/ui.dropdown-link/types.ts +8 -27
  20. package/ui.dropdown-link/useAttrs.ts +6 -7
  21. package/ui.dropdown-list/UDropdownList.vue +38 -26
  22. package/ui.dropdown-list/storybook/stories.ts +12 -10
  23. package/ui.dropdown-list/types.ts +28 -11
  24. package/ui.dropdown-list/useAttrs.ts +2 -2
  25. package/ui.dropdown-list/usePointer.ts +43 -46
  26. package/ui.form-date-picker-range/useAttrs.ts +3 -3
  27. package/ui.form-select/storybook/stories.js +1 -0
  28. package/ui.image-avatar/types.ts +3 -22
  29. package/ui.image-icon/types.ts +2 -23
  30. package/ui.loader/types.ts +3 -23
  31. package/ui.loader-overlay/types.ts +3 -23
  32. package/ui.loader-progress/types.ts +3 -22
  33. package/ui.navigation-progress/types.ts +3 -22
  34. package/ui.other-dot/types.ts +3 -22
  35. package/ui.text-alert/types.ts +3 -22
  36. package/ui.text-badge/types.ts +3 -22
  37. package/ui.text-header/types.ts +3 -22
  38. package/ui.text-money/types.ts +3 -22
  39. package/web-types.json +97 -439
@@ -1,61 +1,62 @@
1
1
  import { ref, computed, toValue } from "vue";
2
- import type { Ref } from "vue";
3
2
 
4
- interface Option {
5
- isSubGroup?: boolean;
6
- groupLabel?: string;
7
- [key: string]: unknown;
8
- }
3
+ import type { MaybeRef } from "vue";
4
+ import type { Option } from "./types.ts";
9
5
 
10
6
  export default function usePointer(
11
- options: Option[],
12
- optionElements: Ref<HTMLElement[]>,
13
- listWrapperElement: Ref<HTMLElement | null>,
7
+ options: MaybeRef<Option[]>,
8
+ optionElements: MaybeRef<HTMLLIElement[] | null>,
9
+ listWrapperElement: MaybeRef<HTMLDivElement | null>,
14
10
  ) {
15
- const pointer = ref<number | null>(null);
16
- const pointerDirty = ref<boolean>(false);
11
+ const pointer = ref(0);
12
+ const pointerDirty = ref(false);
13
+
14
+ const localOptions = computed(() => toValue(options));
15
+ const localOptionElements = computed(() => toValue(optionElements));
16
+ const localListWrapperElement = computed(() => toValue(listWrapperElement));
17
17
 
18
- const activeElementHeight = computed<number>(() => {
19
- if (pointer.value === null) return 0;
20
- const element = toValue(optionElements)[pointer.value];
21
- const isGroupLabel = element.dataset.groupLabel;
18
+ const activeElementHeight = computed(() => {
19
+ const isGroupLabel = localOptionElements.value?.at(pointer.value)?.dataset?.groupLabel || "";
22
20
  const groupIndex = 2;
23
21
 
24
22
  if (isGroupLabel) {
25
- return toValue(optionElements)[pointer.value - groupIndex].getBoundingClientRect().height;
23
+ const prevIndex = pointer.value - groupIndex;
24
+
25
+ return localOptionElements.value?.at(prevIndex)?.getBoundingClientRect()?.height || 0;
26
26
  }
27
27
 
28
- return element.getBoundingClientRect().height;
28
+ return localOptionElements.value?.at(pointer.value)?.getBoundingClientRect()?.height || 0;
29
29
  });
30
30
 
31
- const pointerPosition = computed<number>(() => {
32
- return (pointer.value !== null ? pointer.value : 0) * activeElementHeight.value || 0;
31
+ const pointerPosition = computed(() => {
32
+ return pointer.value * activeElementHeight.value || 0;
33
33
  });
34
34
 
35
35
  function scrollWrapperToElement() {
36
- if (!listWrapperElement.value) return;
36
+ if (!localListWrapperElement.value) return;
37
+
37
38
  const visibleElements =
38
- listWrapperElement.value.getBoundingClientRect().height / activeElementHeight.value;
39
+ localListWrapperElement.value.getBoundingClientRect().height / activeElementHeight.value;
39
40
  const currentElement = visibleElements - 1;
40
41
  const currentPointerPosition =
41
42
  pointerPosition.value - currentElement * activeElementHeight.value;
42
43
 
43
- if (listWrapperElement.value.scrollTop <= currentPointerPosition) {
44
- listWrapperElement.value.scrollTop = currentPointerPosition;
44
+ if (localListWrapperElement.value.scrollTop <= currentPointerPosition) {
45
+ localListWrapperElement.value.scrollTop = currentPointerPosition;
45
46
  }
46
47
  }
47
48
 
48
49
  function pointerForward() {
49
- if (pointer.value === null) pointer.value = 0;
50
-
51
- if (pointer.value < options.length - 1) {
50
+ if (pointer.value < localOptions.value.length - 1) {
52
51
  pointer.value++;
53
52
 
54
- const isGroup = options[pointer.value]?.isSubGroup || options[pointer.value]?.groupLabel;
53
+ const isGroup =
54
+ localOptions.value[pointer.value].isSubGroup ||
55
+ localOptions.value[pointer.value].groupLabel;
55
56
 
56
- if (listWrapperElement.value) scrollWrapperToElement();
57
+ if (localListWrapperElement.value) scrollWrapperToElement();
57
58
 
58
- if (options[pointer.value] && isGroup) {
59
+ if (localOptions.value[pointer.value] && isGroup) {
59
60
  pointerForward();
60
61
  }
61
62
  }
@@ -64,22 +65,25 @@ export default function usePointer(
64
65
  }
65
66
 
66
67
  function pointerBackward() {
67
- if (pointer.value === null) pointer.value = 0;
68
-
69
68
  if (pointer.value > 0) {
70
69
  pointer.value--;
71
70
 
72
- const isGroup = options[pointer.value]?.isSubGroup || options[pointer.value]?.groupLabel;
71
+ const isGroup =
72
+ localOptions.value[pointer.value].isSubGroup ||
73
+ localOptions.value[pointer.value].groupLabel;
73
74
 
74
- if (listWrapperElement.value && listWrapperElement.value.scrollTop >= pointerPosition.value) {
75
- listWrapperElement.value.scrollTop = pointerPosition.value;
75
+ if (
76
+ localListWrapperElement.value &&
77
+ localListWrapperElement.value.scrollTop >= pointerPosition.value
78
+ ) {
79
+ localListWrapperElement.value.scrollTop = pointerPosition.value;
76
80
  }
77
81
 
78
- if (options[pointer.value] && isGroup) {
82
+ if (localOptions.value[pointer.value] && isGroup) {
79
83
  pointerBackward();
80
84
  }
81
85
  } else {
82
- if (options[0]?.groupLabel) {
86
+ if (localOptions.value[pointer.value] && localOptions.value[0].groupLabel) {
83
87
  pointerForward();
84
88
  }
85
89
  }
@@ -95,17 +99,10 @@ export default function usePointer(
95
99
  function pointerReset() {
96
100
  pointer.value = 0;
97
101
 
98
- if (listWrapperElement.value) {
99
- listWrapperElement.value.scrollTop = 0;
102
+ if (localListWrapperElement.value) {
103
+ localListWrapperElement.value.scrollTop = 0;
100
104
  }
101
105
  }
102
106
 
103
- return {
104
- pointer,
105
- pointerDirty,
106
- pointerSet,
107
- pointerReset,
108
- pointerBackward,
109
- pointerForward,
110
- };
107
+ return { pointer, pointerDirty, pointerSet, pointerReset, pointerBackward, pointerForward };
111
108
  }
@@ -4,7 +4,7 @@ import { merge } from "lodash-es";
4
4
  import useUI from "../composables/useUI.ts";
5
5
 
6
6
  import defaultConfig from "./config.js";
7
- import { POSITION } from "../composables/useAutoPosition.ts";
7
+ import { Direction } from "../composables/useAutoPosition.ts";
8
8
 
9
9
  import type { Ref } from "vue";
10
10
  import type { UseAttrs } from "../types.ts";
@@ -28,8 +28,8 @@ export default function useAttrs(
28
28
  );
29
29
 
30
30
  const mutatedProps = computed(() => ({
31
- openDirectionY: isTop.value ? POSITION.top : POSITION.bottom,
32
- openDirectionX: isRight.value ? POSITION.right : POSITION.left,
31
+ openDirectionY: isTop.value ? Direction.Top : Direction.Bottom,
32
+ openDirectionX: isRight.value ? Direction.Right : Direction.Left,
33
33
  error: Boolean(props.error),
34
34
  description: Boolean(props.description),
35
35
  }));
@@ -123,6 +123,7 @@ GroupValue.args = {
123
123
  groupLabelKey: "language",
124
124
  labelKey: "name",
125
125
  valueKey: "name",
126
+ // TODO: Implement recursion nesting and add ability to use group (nested) options with default options.
126
127
  options: [
127
128
  {
128
129
  language: "Javascript",
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UAvatarProps {
@@ -26,28 +28,7 @@ export interface UAvatarProps {
26
28
  /**
27
29
  * Avatar color.
28
30
  */
29
- color?:
30
- | "brand"
31
- | "grayscale"
32
- | "gray"
33
- | "red"
34
- | "orange"
35
- | "amber"
36
- | "yellow"
37
- | "lime"
38
- | "green"
39
- | "emerald"
40
- | "teal"
41
- | "cyan"
42
- | "sky"
43
- | "blue"
44
- | "indigo"
45
- | "violet"
46
- | "purple"
47
- | "fuchsia"
48
- | "pink"
49
- | "rose"
50
- | "white";
31
+ color?: `${Color}`;
51
32
 
52
33
  /**
53
34
  * Avatar corner rounding.
@@ -1,5 +1,6 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
3
4
  export type Config = Partial<typeof defaultConfig>;
4
5
 
5
6
  export interface UIconProps {
@@ -16,29 +17,7 @@ export interface UIconProps {
16
17
  /**
17
18
  * Icon color.
18
19
  */
19
- color?:
20
- | "brand"
21
- | "grayscale"
22
- | "gray"
23
- | "red"
24
- | "orange"
25
- | "amber"
26
- | "yellow"
27
- | "lime"
28
- | "green"
29
- | "emerald"
30
- | "teal"
31
- | "cyan"
32
- | "sky"
33
- | "blue"
34
- | "indigo"
35
- | "violet"
36
- | "purple"
37
- | "fuchsia"
38
- | "pink"
39
- | "rose"
40
- | "black"
41
- | "white";
20
+ color?: `${Color}` | "black";
42
21
 
43
22
  /**
44
23
  * Icon size.
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface ULoaderProps {
@@ -11,29 +13,7 @@ export interface ULoaderProps {
11
13
  /**
12
14
  * Loader color.
13
15
  */
14
- color?:
15
- | "brand"
16
- | "grayscale"
17
- | "gray"
18
- | "red"
19
- | "orange"
20
- | "amber"
21
- | "yellow"
22
- | "lime"
23
- | "green"
24
- | "emerald"
25
- | "teal"
26
- | "cyan"
27
- | "sky"
28
- | "blue"
29
- | "indigo"
30
- | "violet"
31
- | "purple"
32
- | "fuchsia"
33
- | "pink"
34
- | "rose"
35
- | "black"
36
- | "white";
16
+ color?: `${Color}` | "black";
37
17
 
38
18
  /**
39
19
  * Loader size.
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface ULoaderOverlayProps {
@@ -11,29 +13,7 @@ export interface ULoaderOverlayProps {
11
13
  /**
12
14
  * Loader color.
13
15
  */
14
- color?:
15
- | "brand"
16
- | "grayscale"
17
- | "gray"
18
- | "red"
19
- | "orange"
20
- | "amber"
21
- | "yellow"
22
- | "lime"
23
- | "green"
24
- | "emerald"
25
- | "teal"
26
- | "cyan"
27
- | "sky"
28
- | "blue"
29
- | "indigo"
30
- | "violet"
31
- | "purple"
32
- | "fuchsia"
33
- | "pink"
34
- | "rose"
35
- | "black"
36
- | "white";
16
+ color?: `${Color}` | "black";
37
17
 
38
18
  /**
39
19
  * Component config object.
@@ -1,33 +1,14 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface ULoaderProgressProps {
6
8
  /**
7
9
  * Loader stripe color.
8
10
  */
9
- color?:
10
- | "brand"
11
- | "grayscale"
12
- | "gray"
13
- | "red"
14
- | "orange"
15
- | "amber"
16
- | "yellow"
17
- | "lime"
18
- | "green"
19
- | "emerald"
20
- | "teal"
21
- | "cyan"
22
- | "sky"
23
- | "blue"
24
- | "indigo"
25
- | "violet"
26
- | "purple"
27
- | "fuchsia"
28
- | "pink"
29
- | "rose"
30
- | "white";
11
+ color?: `${Color}`;
31
12
 
32
13
  /**
33
14
  * API resource names (endpoint URIs).
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UProgressProps {
@@ -21,28 +23,7 @@ export interface UProgressProps {
21
23
  /**
22
24
  * Progress color.
23
25
  */
24
- color?:
25
- | "brand"
26
- | "grayscale"
27
- | "gray"
28
- | "red"
29
- | "orange"
30
- | "amber"
31
- | "yellow"
32
- | "lime"
33
- | "green"
34
- | "emerald"
35
- | "teal"
36
- | "cyan"
37
- | "sky"
38
- | "blue"
39
- | "indigo"
40
- | "violet"
41
- | "purple"
42
- | "fuchsia"
43
- | "pink"
44
- | "rose"
45
- | "white";
26
+ color?: `${Color}`;
46
27
 
47
28
  /**
48
29
  * Progress variant.
@@ -1,33 +1,14 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UDotProps {
6
8
  /**
7
9
  * Dot color.
8
10
  */
9
- color?:
10
- | "brand"
11
- | "grayscale"
12
- | "gray"
13
- | "red"
14
- | "orange"
15
- | "amber"
16
- | "yellow"
17
- | "lime"
18
- | "green"
19
- | "emerald"
20
- | "teal"
21
- | "cyan"
22
- | "sky"
23
- | "blue"
24
- | "indigo"
25
- | "violet"
26
- | "purple"
27
- | "fuchsia"
28
- | "pink"
29
- | "rose"
30
- | "white";
11
+ color?: `${Color}`;
31
12
 
32
13
  /**
33
14
  * Dot size.
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UAlertProps {
@@ -31,28 +33,7 @@ export interface UAlertProps {
31
33
  /**
32
34
  * Alert color.
33
35
  */
34
- color?:
35
- | "brand"
36
- | "grayscale"
37
- | "gray"
38
- | "red"
39
- | "orange"
40
- | "amber"
41
- | "yellow"
42
- | "lime"
43
- | "green"
44
- | "emerald"
45
- | "teal"
46
- | "cyan"
47
- | "sky"
48
- | "blue"
49
- | "indigo"
50
- | "violet"
51
- | "purple"
52
- | "fuchsia"
53
- | "pink"
54
- | "rose"
55
- | "white";
36
+ color?: `${Color}`;
56
37
 
57
38
  /**
58
39
  * Alert timeout.
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UBadgeProps {
@@ -26,28 +28,7 @@ export interface UBadgeProps {
26
28
  /**
27
29
  * Badge color.
28
30
  */
29
- color?:
30
- | "brand"
31
- | "grayscale"
32
- | "gray"
33
- | "red"
34
- | "orange"
35
- | "amber"
36
- | "yellow"
37
- | "lime"
38
- | "green"
39
- | "emerald"
40
- | "teal"
41
- | "cyan"
42
- | "sky"
43
- | "blue"
44
- | "indigo"
45
- | "violet"
46
- | "purple"
47
- | "fuchsia"
48
- | "pink"
49
- | "rose"
50
- | "white";
31
+ color?: `${Color}`;
51
32
 
52
33
  /**
53
34
  * Icon name (appears instead of label).
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UHeaderProps {
@@ -16,28 +18,7 @@ export interface UHeaderProps {
16
18
  /**
17
19
  * Header color.
18
20
  */
19
- color?:
20
- | "brand"
21
- | "grayscale"
22
- | "gray"
23
- | "red"
24
- | "orange"
25
- | "amber"
26
- | "yellow"
27
- | "lime"
28
- | "green"
29
- | "emerald"
30
- | "teal"
31
- | "cyan"
32
- | "sky"
33
- | "blue"
34
- | "indigo"
35
- | "violet"
36
- | "purple"
37
- | "fuchsia"
38
- | "pink"
39
- | "rose"
40
- | "white";
21
+ color?: `${Color}`;
41
22
 
42
23
  /**
43
24
  * Allows changing HTML tag.
@@ -1,5 +1,7 @@
1
1
  import defaultConfig from "./config.ts";
2
2
 
3
+ import type { Color } from "../types.ts";
4
+
3
5
  export type Config = Partial<typeof defaultConfig>;
4
6
 
5
7
  export interface UMoneyProps {
@@ -16,28 +18,7 @@ export interface UMoneyProps {
16
18
  /**
17
19
  * Money color.
18
20
  */
19
- color?:
20
- | "brand"
21
- | "grayscale"
22
- | "gray"
23
- | "red"
24
- | "orange"
25
- | "amber"
26
- | "yellow"
27
- | "lime"
28
- | "green"
29
- | "emerald"
30
- | "teal"
31
- | "cyan"
32
- | "sky"
33
- | "blue"
34
- | "indigo"
35
- | "violet"
36
- | "purple"
37
- | "fuchsia"
38
- | "pink"
39
- | "rose"
40
- | "white";
21
+ color?: `${Color}`;
41
22
 
42
23
  /**
43
24
  * Money currency symbol.