@privyid/persona 0.17.1 → 0.19.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 (128) hide show
  1. package/dist/components/avatar/utils/create-image.mjs +1 -1
  2. package/dist/components/banner/Banner.vue +3 -3
  3. package/dist/components/breadcrumbs/Breadcrumb.vue +5 -1
  4. package/dist/components/breadcrumbs/Breadcrumb.vue.d.ts +1 -1
  5. package/dist/components/breadcrumbs/BreadcrumbItem.vue +17 -9
  6. package/dist/components/breadcrumbs/BreadcrumbItem.vue.d.ts +3 -0
  7. package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue +15 -7
  8. package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue.d.ts +3 -0
  9. package/dist/components/button/Button.vue +15 -9
  10. package/dist/components/button/Button.vue.d.ts +16 -6
  11. package/dist/components/button/index.d.ts +1 -0
  12. package/dist/components/calendar/Calendar.vue +8 -4
  13. package/dist/components/camera/Camera.vue +3 -3
  14. package/dist/components/card/Card.vue +9 -3
  15. package/dist/components/card/Card.vue.d.ts +1 -1
  16. package/dist/components/carousel/Carousel.vue.d.ts +6 -6
  17. package/dist/components/chart/ChartSet.vue.d.ts +2 -2
  18. package/dist/components/chart/ChartVal.vue.d.ts +4 -4
  19. package/dist/components/checkbox/Checkbox.vue.d.ts +6 -6
  20. package/dist/components/checkbox/index.mjs +1 -1
  21. package/dist/components/collapse/Collapse.vue +13 -20
  22. package/dist/components/contextual-bar/ContextualBar.vue +1 -1
  23. package/dist/components/contextual-bar/ContextualBar.vue.d.ts +2 -2
  24. package/dist/components/cropper/Cropper.vue +4 -4
  25. package/dist/components/cropper/Cropper.vue.d.ts +8 -8
  26. package/dist/components/datepicker/Datepicker.vue +19 -4
  27. package/dist/components/datepicker/Datepicker.vue.d.ts +10 -0
  28. package/dist/components/dropdown/Dropdown.vue +1 -1
  29. package/dist/components/dropdown/Dropdown.vue.d.ts +4 -4
  30. package/dist/components/dropdown/DropdownItem.vue +10 -0
  31. package/dist/components/dropdown/DropdownItem.vue.d.ts +9 -0
  32. package/dist/components/dropdown/utils/use-focus.d.ts +1 -1
  33. package/dist/components/dropdown/utils/use-focus.mjs +2 -2
  34. package/dist/components/dropdown-subitem/DropdownSubitem.vue +2 -2
  35. package/dist/components/dropzone/Dropzone.vue.d.ts +2 -2
  36. package/dist/components/filterbar/pinned/PinnedDate.vue +4 -7
  37. package/dist/components/filterbar/pinned/PinnedMultiselect.vue +4 -7
  38. package/dist/components/filterbar/pinned/PinnedSelect.vue +5 -7
  39. package/dist/components/filterbar/pinned/PinnedSelect.vue.d.ts +2 -2
  40. package/dist/components/filterbar/pinned/PinnedToggle.vue.d.ts +6 -6
  41. package/dist/components/form-group/FormGroup.vue +1 -1
  42. package/dist/components/global/router.d.ts +2 -1
  43. package/dist/components/input/Input.vue +22 -4
  44. package/dist/components/input/Input.vue.d.ts +22 -2
  45. package/dist/components/input/index.d.ts +1 -0
  46. package/dist/components/input/index.mjs +5 -0
  47. package/dist/components/input/utils/accept.d.ts +26 -0
  48. package/dist/components/input/utils/accept.mjs +81 -0
  49. package/dist/components/input-file/InputFile.vue.d.ts +2 -2
  50. package/dist/components/input-password/InputPassword.vue +4 -1
  51. package/dist/components/input-password/InputPassword.vue.d.ts +7 -3
  52. package/dist/components/input-pin/InputPin.vue +45 -30
  53. package/dist/components/input-pin/InputPin.vue.d.ts +26 -7
  54. package/dist/components/input-pin/index.d.ts +6 -0
  55. package/dist/components/input-pin/index.mjs +3 -0
  56. package/dist/components/input-range/InputRange.vue +5 -5
  57. package/dist/components/input-range/InputRange.vue.d.ts +6 -6
  58. package/dist/components/label/Label.vue +1 -1
  59. package/dist/components/list-group/ListGroup.vue +25 -0
  60. package/dist/components/list-group/ListGroup.vue.d.ts +18 -0
  61. package/dist/components/modal/Modal.vue +5 -2
  62. package/dist/components/modal/Modal.vue.d.ts +2 -2
  63. package/dist/components/nav/Nav.vue +27 -9
  64. package/dist/components/nav/NavCollapse.vue +78 -0
  65. package/dist/components/nav/NavCollapse.vue.d.ts +26 -0
  66. package/dist/components/nav/NavItem.vue +9 -3
  67. package/dist/components/nav/NavItem.vue.d.ts +13 -3
  68. package/dist/components/nav/NavItemDropdown.vue.d.ts +2 -2
  69. package/dist/components/nav/NavSubItem.vue +35 -19
  70. package/dist/components/nav/NavSubItem.vue.d.ts +2 -1
  71. package/dist/components/navbar/Navbar.vue.d.ts +1 -1
  72. package/dist/components/navbar/NavbarToggle.vue +2 -2
  73. package/dist/components/pagination/Pagination.vue +2 -2
  74. package/dist/components/pagination/Pagination.vue.d.ts +1 -1
  75. package/dist/components/pdf-text/PdfText.vue.d.ts +1 -1
  76. package/dist/components/pdf-viewer/PdfNavigation.vue +4 -4
  77. package/dist/components/pdf-viewer/PdfViewer.vue +1 -2
  78. package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +4 -4
  79. package/dist/components/progress-indicator/ProgressIndicator.vue.d.ts +2 -2
  80. package/dist/components/radio/Radio.vue +1 -1
  81. package/dist/components/radio/Radio.vue.d.ts +4 -4
  82. package/dist/components/select/Select.vue +68 -27
  83. package/dist/components/select/Select.vue.d.ts +34 -6
  84. package/dist/components/select/index.d.ts +2 -0
  85. package/dist/components/select/index.mjs +4 -0
  86. package/dist/components/sidebar/Sidebar.vue.d.ts +1 -1
  87. package/dist/components/sidebar/SidebarNav.vue +35 -27
  88. package/dist/components/sidebar/SidebarNav.vue.d.ts +2 -1
  89. package/dist/components/sidebar-menu/SidebarMenu.vue +82 -71
  90. package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +5 -8
  91. package/dist/components/sidebar-menu/index.d.ts +115 -4
  92. package/dist/components/sidebar-menu/index.mjs +41 -0
  93. package/dist/components/signature-draw/SignatureDraw.vue +44 -15
  94. package/dist/components/signature-draw/SignatureDraw.vue.d.ts +3 -0
  95. package/dist/components/signature-draw/SignatureDrawMobile.vue +3 -7
  96. package/dist/components/signature-text/SignatureText.vue.d.ts +5 -5
  97. package/dist/components/spinner/Spinner.vue +28 -13
  98. package/dist/components/spinner/SpinnerRing.vue +14 -8
  99. package/dist/components/spinner/SpinnerRinggo.vue +62 -0
  100. package/dist/components/spinner/SpinnerRinggo.vue.d.ts +6 -0
  101. package/dist/components/steps/Step.vue +3 -0
  102. package/dist/components/steps/Step.vue.d.ts +1 -0
  103. package/dist/components/steps/Steps.vue +1 -0
  104. package/dist/components/steps/index.d.ts +2 -0
  105. package/dist/components/steps/index.mjs +1 -0
  106. package/dist/components/strengthbar/Strengthbar.vue.d.ts +9 -9
  107. package/dist/components/table/Table.vue +2 -2
  108. package/dist/components/tabs/Tabs.vue +4 -2
  109. package/dist/components/textarea/Textarea.vue +10 -1
  110. package/dist/components/textarea/Textarea.vue.d.ts +16 -4
  111. package/dist/components/toast/Toast.vue +5 -5
  112. package/dist/components/toast/ToastContainer.vue +6 -6
  113. package/dist/components/toggle/Toggle.vue +1 -1
  114. package/dist/components/toggle/Toggle.vue.d.ts +6 -6
  115. package/dist/components/tooltip/Tooltip.vue.d.ts +1 -1
  116. package/dist/components/tooltip/TooltipContainer.vue +18 -3
  117. package/dist/components/tooltip/index.d.ts +3 -0
  118. package/dist/components/tooltip/index.mjs +29 -4
  119. package/dist/components/tooltip/utils/parse-bindings.d.ts +2 -1
  120. package/dist/components/tooltip/utils/parse-bindings.mjs +2 -0
  121. package/dist/components/tour/TourDialog.vue +1 -1
  122. package/dist/components/tour/TourDialog.vue.d.ts +1 -1
  123. package/dist/components/truncate/Truncate.vue +9 -1
  124. package/dist/components/truncate/Truncate.vue.d.ts +11 -2
  125. package/dist/core/index.d.ts +2 -1
  126. package/dist/core/index.mjs +7 -1
  127. package/dist/module.json +1 -1
  128. package/package.json +19 -17
@@ -15,9 +15,21 @@
15
15
  :placeholder="placeholder"
16
16
  :disabled="disabled"
17
17
  :readonly="readonly"
18
+ :clearable="clearable"
19
+ @clear.prevent="onClear"
18
20
  @focus="onFocus">
19
- <template #append>
20
- <IconArrow class="select__caret" />
21
+ <template
22
+ v-if="!noCaret"
23
+ #append>
24
+ <slot
25
+ name="caret"
26
+ :is-open="isOpen"
27
+ :toggle="toggleOpen">
28
+ <IconArrow
29
+ class="select__caret"
30
+ data-testid="select-caret-icon"
31
+ @click="toggleOpen" />
32
+ </slot>
21
33
  </template>
22
34
  </p-input>
23
35
  </template>
@@ -33,11 +45,17 @@
33
45
  </template>
34
46
 
35
47
  <template v-else>
48
+ <DropdownHeader
49
+ v-if="sectionLabel"
50
+ data-testid="select-label">
51
+ {{ sectionLabel }}
52
+ </DropdownHeader>
36
53
  <DropdownItem
37
54
  v-for="(item, i) in items"
38
55
  :key="i"
39
56
  data-testid="select-item"
40
57
  :class="{ selected: isSelected(item) }"
58
+ :disabled="Boolean(item.disabled)"
41
59
  @click="select(item)">
42
60
  <div class="select__option">
43
61
  <div class="select__option-text">
@@ -62,7 +80,7 @@
62
80
  width="14"
63
81
  height="14" />
64
82
  <slot name="loading">
65
- {{ loadingText }}
83
+ <span>{{ loadingText }}</span>
66
84
  </slot>
67
85
  </div>
68
86
  </template>
@@ -72,9 +90,10 @@
72
90
  <script>
73
91
  import Dropdown from "../dropdown/Dropdown.vue";
74
92
  import DropdownItem from "../dropdown/DropdownItem.vue";
93
+ import DropdownHeader from "../dropdown/DropdownHeader.vue";
75
94
  import pInput from "../input/Input.vue";
76
- import IconArrow from "@carbon/icons-vue/lib/chevron--down/16";
77
- import IconCheck from "@carbon/icons-vue/lib/checkmark--filled/16";
95
+ import IconArrow from "@privyid/persona-icon/vue/chevron-down/20.vue";
96
+ import IconCheck from "@privyid/persona-icon/vue/checkmark-circle-solid/20.vue";
78
97
  import IconLoading from "../spinner/SpinnerRing.vue";
79
98
  import {
80
99
  computed,
@@ -83,15 +102,19 @@ import {
83
102
  ref,
84
103
  watch
85
104
  } from "vue-demi";
105
+ import { findSelected } from ".";
86
106
  import BasicAdapter from "./adapter/basic-adapter";
87
107
  import useLoading from "../overlay/utils/use-loading";
88
108
  import { isEqual } from "../utils/value";
89
109
  import { tryOnMounted } from "@vueuse/shared";
90
- import { onStartTyping } from "@vueuse/core";
110
+ import {
111
+ onStartTyping
112
+ } from "@vueuse/core";
91
113
  export default defineComponent({
92
114
  components: {
93
115
  Dropdown,
94
116
  DropdownItem,
117
+ DropdownHeader,
95
118
  pInput,
96
119
  IconArrow,
97
120
  IconCheck,
@@ -107,7 +130,7 @@ export default defineComponent({
107
130
  Object,
108
131
  Date
109
132
  ],
110
- default: ""
133
+ default: void 0
111
134
  },
112
135
  selected: {
113
136
  type: Object,
@@ -150,9 +173,21 @@ export default defineComponent({
150
173
  type: Boolean,
151
174
  default: false
152
175
  },
176
+ clearable: {
177
+ type: Boolean,
178
+ default: false
179
+ },
153
180
  size: {
154
181
  type: String,
155
182
  default: "md"
183
+ },
184
+ sectionLabel: {
185
+ type: String,
186
+ default: void 0
187
+ },
188
+ noCaret: {
189
+ type: Boolean,
190
+ default: false
156
191
  }
157
192
  },
158
193
  models: {
@@ -178,21 +213,11 @@ export default defineComponent({
178
213
  isLoading
179
214
  };
180
215
  const items = props.adapter.setup(context);
181
- const model = computed({
182
- get() {
183
- return items.value.find((item) => isEqual(item.value, props.modelValue)) ?? {
184
- text: "",
185
- value: void 0
186
- };
187
- },
188
- set(selected) {
189
- emit("change", selected);
190
- emit("update:modelValue", selected.value);
191
- emit("update:selected", selected);
192
- if (isOpen.value)
193
- emit("userInput", selected);
194
- }
195
- });
216
+ const localModel = ref(findSelected(items.value, props.modelValue));
217
+ const toggleOpen = () => {
218
+ if (!props.disabled && !props.readonly)
219
+ isOpen.value = !isOpen.value;
220
+ };
196
221
  const classNames = computed(() => {
197
222
  const result = [];
198
223
  if (isOpen.value)
@@ -207,22 +232,36 @@ export default defineComponent({
207
232
  });
208
233
  const search = computed({
209
234
  get() {
210
- return isOpen.value ? keyword.value : model.value?.text;
235
+ return isOpen.value ? keyword.value : localModel.value?.text;
211
236
  },
212
237
  set(value) {
213
238
  if (value !== search.value)
214
239
  keyword.value = value;
215
240
  }
216
241
  });
242
+ watch(() => props.modelValue, (value) => {
243
+ localModel.value = findSelected(items.value, value);
244
+ });
217
245
  function select(item) {
218
- model.value = item;
246
+ localModel.value = item;
247
+ emit("change", item);
248
+ emit("update:selected", item);
249
+ emit("update:modelValue", item?.value);
250
+ if (isOpen.value)
251
+ emit("userInput", item);
219
252
  }
220
253
  function onFocus() {
221
254
  if (!props.disabled && !props.readonly)
222
255
  isOpen.value = true;
223
256
  }
257
+ function onClear() {
258
+ if (isOpen.value)
259
+ keyword.value = "";
260
+ else
261
+ select();
262
+ }
224
263
  function isSelected(item) {
225
- return isEqual(item.value, model.value.value);
264
+ return isEqual(item.value, localModel.value?.value);
226
265
  }
227
266
  watch(isOpen, (value) => {
228
267
  if (!value)
@@ -239,13 +278,14 @@ export default defineComponent({
239
278
  });
240
279
  return {
241
280
  classNames,
242
- model,
243
281
  isOpen,
244
282
  isLoading,
245
283
  search,
246
284
  items,
285
+ toggleOpen,
247
286
  select,
248
287
  onFocus,
288
+ onClear,
249
289
  isSelected
250
290
  };
251
291
  }
@@ -265,8 +305,9 @@ export default defineComponent({
265
305
  }
266
306
 
267
307
  &__caret {
268
- @apply transition-transform duration-150 text-subtle pointer-events-none;
308
+ @apply transition-transform duration-150 text-subtle;
269
309
  @apply dark:text-dark-subtle;
310
+ @apply cursor-pointer;
270
311
  }
271
312
 
272
313
  &__option {
@@ -4,8 +4,8 @@ import { Adapter } from './adapter/adapter';
4
4
  import { SizeVariant } from '../button';
5
5
  declare const _default: import("vue-demi").DefineComponent<{
6
6
  modelValue: {
7
- type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
8
- default: string;
7
+ type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
8
+ default: undefined;
9
9
  };
10
10
  selected: {
11
11
  type: PropType<SelectItem>;
@@ -46,24 +46,37 @@ declare const _default: import("vue-demi").DefineComponent<{
46
46
  type: BooleanConstructor;
47
47
  default: boolean;
48
48
  };
49
+ clearable: {
50
+ type: BooleanConstructor;
51
+ default: boolean;
52
+ };
49
53
  size: {
50
54
  type: PropType<SizeVariant>;
51
55
  default: string;
52
56
  };
57
+ sectionLabel: {
58
+ type: StringConstructor;
59
+ default: undefined;
60
+ };
61
+ noCaret: {
62
+ type: BooleanConstructor;
63
+ default: boolean;
64
+ };
53
65
  }, {
54
66
  classNames: import("vue-demi").ComputedRef<string[]>;
55
- model: import("vue-demi").WritableComputedRef<SelectItem>;
56
67
  isOpen: import("vue-demi").Ref<boolean>;
57
68
  isLoading: import("vue-demi").WritableComputedRef<boolean>;
58
69
  search: import("vue-demi").WritableComputedRef<string>;
59
70
  items: import("vue-demi").Ref<SelectItem[]>;
60
- select: (item: SelectItem) => void;
71
+ toggleOpen: () => void;
72
+ select: (item?: SelectItem) => void;
61
73
  onFocus: () => void;
74
+ onClear: () => void;
62
75
  isSelected: (item: SelectItem) => boolean;
63
76
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("change" | "update:modelValue" | "update:selected" | "userInput")[], "change" | "update:modelValue" | "update:selected" | "userInput", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
64
77
  modelValue: {
65
- type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
66
- default: string;
78
+ type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
79
+ default: undefined;
67
80
  };
68
81
  selected: {
69
82
  type: PropType<SelectItem>;
@@ -104,10 +117,22 @@ declare const _default: import("vue-demi").DefineComponent<{
104
117
  type: BooleanConstructor;
105
118
  default: boolean;
106
119
  };
120
+ clearable: {
121
+ type: BooleanConstructor;
122
+ default: boolean;
123
+ };
107
124
  size: {
108
125
  type: PropType<SizeVariant>;
109
126
  default: string;
110
127
  };
128
+ sectionLabel: {
129
+ type: StringConstructor;
130
+ default: undefined;
131
+ };
132
+ noCaret: {
133
+ type: BooleanConstructor;
134
+ default: boolean;
135
+ };
111
136
  }>> & {
112
137
  onChange?: ((...args: any[]) => any) | undefined;
113
138
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
@@ -122,8 +147,11 @@ declare const _default: import("vue-demi").DefineComponent<{
122
147
  adapter: Adapter;
123
148
  options: string[] | SelectItem[];
124
149
  placeholder: string;
150
+ noCaret: boolean;
125
151
  selected: SelectItem;
152
+ clearable: boolean;
126
153
  emptyText: string;
127
154
  loadingText: string;
155
+ sectionLabel: string;
128
156
  }, {}>;
129
157
  export default _default;
@@ -1,6 +1,7 @@
1
1
  export interface SelectItem {
2
2
  text: string;
3
3
  value: unknown;
4
+ disabled?: boolean;
4
5
  }
5
6
  export interface SelectProps {
6
7
  modelValue: unknown;
@@ -8,3 +9,4 @@ export interface SelectProps {
8
9
  options?: SelectItem[] | string[];
9
10
  }
10
11
  export declare function defineOptions(options: SelectItem[]): SelectItem[];
12
+ export declare function findSelected(items: SelectItem[], value: unknown): SelectItem;
@@ -1,3 +1,7 @@
1
+ import { isEqual } from "../utils/value.mjs";
1
2
  export function defineOptions(options) {
2
3
  return options;
3
4
  }
5
+ export function findSelected(items, value) {
6
+ return items.find((item) => isEqual(item.value, value)) ?? { text: "", value: void 0 };
7
+ }
@@ -69,9 +69,9 @@ declare const _default: import("vue-demi").DefineComponent<{
69
69
  }>> & {
70
70
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
71
71
  }, {
72
+ fixed: boolean;
72
73
  variant: StyleVariant;
73
74
  type: TypeVariant;
74
- fixed: boolean;
75
75
  modelValue: boolean;
76
76
  align: AlignVariant;
77
77
  toggleable: ToggleableVariant;
@@ -3,8 +3,12 @@
3
3
  v-if="title"
4
4
  class="sidebar__title"
5
5
  data-testid="sidebar-title"
6
- :class="{ 'sidebar__title__collapsible' : (collapsible && type !== 'narrow') }"
7
- @click.prevent="collapse">
6
+ :class="{
7
+ 'sidebar__title__collapsible': (collapsible && type !== 'narrow'),
8
+ 'sidebar__title--collapsed': !isExpand,
9
+ }"
10
+ v-bind="$attrs"
11
+ @click.prevent="toggleExpand">
8
12
  <Caption
9
13
  weight="bold"
10
14
  transform="capitalize">
@@ -23,17 +27,22 @@
23
27
  data-testid="sidebar-title-caret"
24
28
  class="sidebar__title__caret" />
25
29
  </div>
26
- <Nav
30
+ <Collapse
27
31
  v-if="!bottom"
28
- class="sidebar__nav"
29
- data-testid="sidebar-nav"
30
- vertical
31
- :title="title"
32
- :variant="variant"
33
- :condensed="condensed"
34
- :align="align">
35
- <slot />
36
- </Nav>
32
+ :model-value="isExpand">
33
+ <Nav
34
+ ref="root"
35
+ class="sidebar__nav"
36
+ :class="{ 'sidebar__nav--collapsed' : !isExpand }"
37
+ data-testid="sidebar-nav"
38
+ vertical
39
+ :title="title"
40
+ :variant="variant"
41
+ :condensed="condensed"
42
+ :align="align">
43
+ <slot />
44
+ </Nav>
45
+ </Collapse>
37
46
  <template v-else>
38
47
  <div class="sidebar__bottom">
39
48
  <Nav
@@ -55,20 +64,24 @@
55
64
  import {
56
65
  computed,
57
66
  defineComponent,
58
- inject
67
+ inject,
68
+ ref
59
69
  } from "vue-demi";
60
70
  import Nav from "../nav/Nav.vue";
61
71
  import Caption from "../caption/Caption.vue";
62
72
  import Text from "../text/Text.vue";
63
73
  import { SIDEBAR_SETTINGS } from ".";
74
+ import Collapse from "../collapse/Collapse.vue";
64
75
  import IconArrow from "@privyid/persona-icon/vue/chevron-down/16.vue";
65
76
  export default defineComponent({
66
77
  components: {
67
78
  Nav,
68
79
  Caption,
69
80
  Text,
70
- IconArrow
81
+ IconArrow,
82
+ Collapse
71
83
  },
84
+ inheritAttrs: false,
72
85
  props: {
73
86
  title: {
74
87
  type: String,
@@ -100,25 +113,24 @@ export default defineComponent({
100
113
  const variant = settings?.variant;
101
114
  const align = settings?.align;
102
115
  const type = settings?.type;
116
+ const isExpand = ref(true);
103
117
  const classNames = computed(() => {
104
118
  const result = [""];
105
119
  if (props.bottom)
106
120
  result.push("sidebar__nav--bottom");
107
121
  return result;
108
122
  });
109
- function collapse(event) {
110
- if (props.collapsible && props.title && type !== "narrow") {
111
- const title = event.target.closest(".sidebar__title");
112
- title?.classList.toggle("sidebar__title--collapsed");
113
- title?.nextElementSibling?.classList.toggle("sidebar__nav--collapsed");
114
- }
123
+ function toggleExpand() {
124
+ if (props.collapsible)
125
+ isExpand.value = !isExpand.value;
115
126
  }
116
127
  return {
128
+ isExpand,
117
129
  variant,
118
130
  align,
119
131
  type,
120
132
  classNames,
121
- collapse
133
+ toggleExpand
122
134
  };
123
135
  }
124
136
  });
@@ -138,10 +150,6 @@ export default defineComponent({
138
150
  .nav__title {
139
151
  @apply hidden;
140
152
  }
141
-
142
- &&--collapsed {
143
- @apply hidden;
144
- }
145
153
  }
146
154
 
147
155
  &&--narrow {
@@ -213,7 +221,7 @@ export default defineComponent({
213
221
  @apply relative z-1 flex items-center justify-between -mb-9 px-3 mt-5;
214
222
 
215
223
  &__collapsible {
216
- @apply cursor-pointer;
224
+ @apply cursor-pointer select-none;
217
225
  }
218
226
 
219
227
  &__caret {
@@ -222,7 +230,7 @@ export default defineComponent({
222
230
 
223
231
  &&--collapsed {
224
232
  .sidebar__title__caret {
225
- @apply rotate-0 ease-in-out duration-150;
233
+ @apply rotate-0;
226
234
  }
227
235
  }
228
236
 
@@ -24,11 +24,12 @@ declare const _default: import("vue-demi").DefineComponent<{
24
24
  default: boolean;
25
25
  };
26
26
  }, {
27
+ isExpand: import("vue-demi").Ref<boolean>;
27
28
  variant: import("../nav").StyleVariant | undefined;
28
29
  align: import("../nav").AlignVariant | undefined;
29
30
  type: import(".").TypeVariant | undefined;
30
31
  classNames: import("vue-demi").ComputedRef<string[]>;
31
- collapse: (event: Event) => void;
32
+ toggleExpand: () => void;
32
33
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
33
34
  title: {
34
35
  type: StringConstructor;