@avakhula/ui 0.1.19 → 0.1.21

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 (89) hide show
  1. package/dist/index.css +1 -0
  2. package/dist/index.js +13657 -12664
  3. package/dist/index.umd.cjs +92 -84
  4. package/package.json +6 -5
  5. package/src/App.vue +6 -2
  6. package/src/assets/scss/mixins/dropdown-list-item.scss +3 -3
  7. package/src/assets/scss/mixins/tooltip-position.scss +7 -0
  8. package/src/assets/scss/mixins.scss +2 -2
  9. package/src/assets/scss/style.scss +4 -4
  10. package/src/assets/scss/typography.scss +3 -3
  11. package/src/components/Accordion/Accordion.scss +3 -3
  12. package/src/components/Accordion/Accordion.vue +2 -2
  13. package/src/components/Alert/Alert.vue +1 -1
  14. package/src/components/Alert/alert.scss +2 -2
  15. package/src/components/Avatar/Avatar.vue +2 -2
  16. package/src/components/Badge/Badge.vue +2 -2
  17. package/src/components/Breadcrumbs/Breadcrumbs.vue +7 -2
  18. package/src/components/Breadcrumbs/breadcrumbs.scss +5 -5
  19. package/src/components/Button/Button.vue +2 -2
  20. package/src/components/Button/button.scss +3 -3
  21. package/src/components/Chips/Chips.vue +3 -3
  22. package/src/components/Dropdown/Dropdown.spec.js +0 -0
  23. package/src/components/Dropdown/Dropdown.vue +104 -27
  24. package/src/components/Dropdown/DropdownDivider.vue +1 -1
  25. package/src/components/Dropdown/DropdownItem.vue +1 -1
  26. package/src/components/Dropdown/DropdownList.vue +16 -2
  27. package/src/components/Form/CharactersCount.vue +2 -2
  28. package/src/components/Form/Checkbox/Checkbox.scss +4 -4
  29. package/src/components/Form/Checkbox/Checkbox.vue +1 -1
  30. package/src/components/Form/DatePicker/DatePicker.scss +4 -4
  31. package/src/components/Form/DatePicker/DatePicker.vue +1 -1
  32. package/src/components/Form/FormGroup/FormGroup.vue +2 -2
  33. package/src/components/Form/FormGroup/FormGroupSet.vue +1 -1
  34. package/src/components/Form/Input/Input.vue +7 -4
  35. package/src/components/Form/Input/input.scss +3 -3
  36. package/src/components/Form/Label/Label.vue +2 -2
  37. package/src/components/Form/PhoneInput/PhoneInput.vue +56 -21
  38. package/src/components/Form/PhoneInput/phoneInput.scss +4 -4
  39. package/src/components/Form/Radio/Radio.vue +1 -1
  40. package/src/components/Form/Radio/radio.scss +3 -3
  41. package/src/components/Form/TextEditor/TextEditor.vue +27 -168
  42. package/src/components/Form/TextEditor/Toolbar.vue +723 -0
  43. package/src/components/Form/TextEditor/icons/toolbarIcons.js +8 -0
  44. package/src/components/Form/TextEditor/plugins/imageBlot.js +23 -0
  45. package/src/components/Form/TextEditor/setupTextEditor.js +71 -0
  46. package/src/components/Form/TextEditor/textEditor.scss +9 -357
  47. package/src/components/Form/Textarea/Textarea.spec.js +0 -0
  48. package/src/components/Form/Textarea/Textarea.vue +2 -1
  49. package/src/components/Form/Textarea/textarea.scss +3 -3
  50. package/src/components/Form/Toggle/Toggle.vue +1 -1
  51. package/src/components/Form/Toggle/toggle.scss +3 -3
  52. package/src/components/IconButton/IconButton.scss +2 -2
  53. package/src/components/IconButton/IconButton.vue +6 -4
  54. package/src/components/List.vue +1 -1
  55. package/src/components/Modal/Modal.vue +85 -49
  56. package/src/components/Pagination/Pagination.vue +28 -3
  57. package/src/components/Pagination/pagination.scss +20 -4
  58. package/src/components/Panel/Panel.vue +4 -4
  59. package/src/components/Popover/Popover.vue +7 -2
  60. package/src/components/Popover/popover.scss +3 -3
  61. package/src/components/ProgressBar/ProgressBar.vue +1 -1
  62. package/src/components/ProgressBar/progressBar.scss +1 -1
  63. package/src/components/Sorting/Sorting.vue +1 -1
  64. package/src/components/Sorting/sorting.scss +5 -5
  65. package/src/components/SplitButton/SplitButton.vue +1 -1
  66. package/src/components/SplitButton/SplitButtonItem.vue +1 -1
  67. package/src/components/SplitButton/splitButton.scss +3 -3
  68. package/src/components/StatusIndicator/StatusIndicator.vue +2 -2
  69. package/src/components/Table/Cells/Cell.vue +2 -2
  70. package/src/components/Table/Cells/CheckboxCell.vue +0 -0
  71. package/src/components/Table/Row.vue +1 -1
  72. package/src/components/Table/Table.stories.js +0 -0
  73. package/src/components/Table/Table.vue +0 -0
  74. package/src/components/Tabs/Tab.vue +0 -0
  75. package/src/components/Tabs/TabDropdown.vue +1 -1
  76. package/src/components/Tabs/Tabs.vue +9 -5
  77. package/src/components/Tabs/tabs.scss +4 -4
  78. package/src/components/TagPill/TagPill.vue +2 -2
  79. package/src/components/ToggleTip/ToggleTip.vue +1 -1
  80. package/src/components/ToggleTip/toggleTip.scss +5 -5
  81. package/src/components/Tooltip/Tooltip.vue +3 -3
  82. package/src/components/TreeSelect/Option.vue +16 -14
  83. package/src/components/TreeSelect/Select.vue +200 -132
  84. package/src/components/TreeSelect/scss/option.scss +6 -6
  85. package/src/components/TreeSelect/scss/select.scss +53 -4
  86. package/src/directives/tooltip/tooltip.js +46 -0
  87. package/src/index.js +6 -1
  88. package/vite.config.js +0 -0
  89. package/dist/style.css +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avakhula/ui",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.umd.cjs",
6
6
  "source": "src/index.js",
@@ -21,10 +21,11 @@
21
21
  "build-storybook": "storybook build"
22
22
  },
23
23
  "dependencies": {
24
+ "@tanstack/vue-virtual": "^3.13.12",
24
25
  "@vueup/vue-quill": "^1.2.0",
25
26
  "mitt": "^3.0.0",
26
27
  "quill-placeholder-module": "^0.3.1",
27
- "vue": "^3.2.45"
28
+ "vue": "3.4.6"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@babel/core": "^7.20.7",
@@ -55,11 +56,11 @@
55
56
  "prettier": "^2.7.1",
56
57
  "react": "^18.2.0",
57
58
  "react-dom": "^18.2.0",
58
- "sass": "^1.57.1",
59
+ "sass": "^1.97.1",
59
60
  "sass-loader": "^13.2.0",
60
61
  "storybook": "^7.1.0",
61
- "vite": "^4.0.0",
62
- "vitest": "^0.28.4",
62
+ "vite": "^6.3.2",
63
+ "vitest": "^1.6.0",
63
64
  "vue-loader": "^16.8.3",
64
65
  "vue-tel-input": "^9.1.4"
65
66
  }
package/src/App.vue CHANGED
@@ -1,12 +1,16 @@
1
1
  <template>
2
+ <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh;">
3
+ <ib-select data-testid="tests" data-foo="sdf" dusk="asd" :options="[]" />
4
+ </div>
5
+
2
6
  </template>
3
7
 
4
8
  <script>
5
- import IbInput from "./components/Form/Input/Input.vue";
9
+ import IbSelect from "./components/TreeSelect/Select.vue";
6
10
 
7
11
  export default {
8
12
  components: {
9
- IbInput,
13
+ IbSelect,
10
14
  },
11
15
  };
12
16
  </script>
@@ -1,6 +1,6 @@
1
- @import "../variables/colors.scss";
2
- @import "../typography.scss";
3
- @import "../mixins.scss";
1
+ @use "../variables/colors.scss" as *;
2
+ @use "../typography.scss" as *;
3
+ @use "../mixins.scss" as *;
4
4
 
5
5
  @mixin DropdownListItem {
6
6
  .ib-dropdown-item {
@@ -1,3 +1,10 @@
1
+ @use "../variables/colors.scss" as *;
2
+ @use "../variables/shadows.scss" as *;
3
+
4
+ $background: $white;
5
+ $textColor: $neutral-900;
6
+ $shadow: $ib-shadow-3;
7
+
1
8
  @mixin TooltipPosition {
2
9
  &::before {
3
10
  content: "";
@@ -1,4 +1,4 @@
1
- @import "./variables/colors.scss";
1
+ @use "./variables/colors.scss" as *;
2
2
 
3
3
  @mixin outline($offset: -2px, $color: $blue-700) {
4
4
  outline-offset: $offset;
@@ -18,4 +18,4 @@
18
18
  -webkit-box-orient: vertical;
19
19
  -webkit-line-clamp: $lines;
20
20
  overflow: hidden;
21
- }
21
+ }
@@ -1,7 +1,7 @@
1
- @import "./reset.scss";
2
- @import "./mixins.scss";
3
- @import "./variables/colors.scss";
4
- @import "./typography.scss";
1
+ @use "./reset.scss" as *;
2
+ @use "./mixins.scss" as *;
3
+ @use "./variables/colors.scss" as *;
4
+ @use "./typography.scss" as *;
5
5
 
6
6
  body,
7
7
  textarea::placeholder,
@@ -147,9 +147,9 @@
147
147
  }
148
148
 
149
149
  .Ib-P1-medium {
150
- @include Ib-P1-regular;
150
+ @include Ib-P1-medium;
151
151
  }
152
152
 
153
153
  .Ib-P1-regular {
154
- @include Ib-P1-medium;
155
- }
154
+ @include Ib-P1-regular;
155
+ }
@@ -1,5 +1,5 @@
1
- @import "../../assets/scss/variables/colors.scss";
2
- @import "../../assets/scss/mixins.scss";
1
+ @use "../../assets/scss/variables/colors.scss" as *;
2
+ @use "../../assets/scss/mixins.scss" as *;
3
3
 
4
4
 
5
5
  $title-bg: $gray-200;
@@ -79,7 +79,7 @@ $content-bg: $gray-50;
79
79
  overflow: hidden;
80
80
  transition: height 0.3s, padding-top 0.3s, padding-bottom 0.3s;
81
81
  background-color: $content-bg;
82
-
82
+
83
83
  .accordion-content-wrapper {
84
84
  padding: 10px 15px 15px;
85
85
  }
@@ -76,6 +76,8 @@ export default {
76
76
  </script>
77
77
 
78
78
  <style lang="scss" scoped>
79
+ @use "./Accordion.scss" as *;
80
+
79
81
  .expand-enter-active,
80
82
  .expand-leave-active {
81
83
  transition: height 1s ease-in-out;
@@ -86,6 +88,4 @@ export default {
86
88
  .expand-leave-to {
87
89
  height: 0;
88
90
  }
89
-
90
- @import "./Accordion.scss";
91
91
  </style>
@@ -151,5 +151,5 @@ export default {
151
151
  </script>
152
152
 
153
153
  <style lang="scss" scoped>
154
- @import "./alert.scss";
154
+ @use "./alert.scss" as *;
155
155
  </style>
@@ -1,5 +1,5 @@
1
- @import "../../assets/scss/variables/colors.scss";
2
- @import "../../assets/scss//typography.scss";
1
+ @use "../../assets/scss/variables/colors.scss" as *;
2
+ @use "../../assets/scss//typography.scss" as *;
3
3
 
4
4
  $alert-content-color: $neutral-900;
5
5
  $alert-alert-primary-color: $red-800;
@@ -78,8 +78,8 @@ export default {
78
78
  </script>
79
79
 
80
80
  <style scoped lang="scss">
81
- @import "../../assets/scss/typography.scss";
82
- @import "../../assets/scss/variables/colors.scss";
81
+ @use "../../assets/scss/typography.scss" as *;
82
+ @use "../../assets/scss/variables/colors.scss" as *;
83
83
 
84
84
  $avatar-border: $blue-200;
85
85
  .avatar {
@@ -34,8 +34,8 @@ export default {
34
34
  </script>
35
35
 
36
36
  <style lang="scss" scoped>
37
- @import "../../assets/scss/typography.scss";
38
- @import "../../assets/scss/variables/colors.scss";
37
+ @use "../../assets/scss/typography.scss" as *;
38
+ @use "../../assets/scss/variables/colors.scss" as *;
39
39
 
40
40
  $badge-bg: $blue-800;
41
41
  $badge-color: $white;
@@ -26,7 +26,7 @@
26
26
  </router-link>
27
27
  </template>
28
28
 
29
- <p v-if="index === last">
29
+ <p v-if="index === last && item.title" v-overflow-tooltip.bottomCenter="item.title">
30
30
  {{ item.title }}
31
31
  </p>
32
32
 
@@ -70,6 +70,8 @@ import IbDropdownList from "../Dropdown/DropdownList.vue";
70
70
  import IbDropdownItem from "../Dropdown/DropdownItem.vue";
71
71
  import IbTooltip from "../Tooltip/Tooltip.vue";
72
72
 
73
+ import { TextOverflowTooltipDirective as OverflowTooltip } from "../../directives/tooltip/textOverflowTooltip";
74
+
73
75
  export default {
74
76
  name: "IbBreadcrumbs",
75
77
  props: {
@@ -100,9 +102,12 @@ export default {
100
102
  IbDropdownList,
101
103
  IbTooltip,
102
104
  },
105
+ directives: {
106
+ OverflowTooltip,
107
+ },
103
108
  };
104
109
  </script>
105
110
 
106
111
  <style scoped lang="scss">
107
- @import "./breadcrumbs.scss";
112
+ @use "./breadcrumbs.scss" as *;
108
113
  </style>
@@ -1,7 +1,7 @@
1
- @import "../../assets/scss/variables/colors.scss";
2
- @import "../../assets/scss/typography.scss";
3
- @import "../../assets/scss/mixins.scss";
4
- @import "../../assets/scss/reset.scss";
1
+ @use "../../assets/scss/variables/colors.scss" as *;
2
+ @use "../../assets/scss/typography.scss" as *;
3
+ @use "../../assets/scss/mixins.scss" as *;
4
+ @use "../../assets/scss/reset.scss" as *;
5
5
 
6
6
 
7
7
  .breadcrumb {
@@ -74,4 +74,4 @@
74
74
  }
75
75
  }
76
76
  }
77
- }
77
+ }
@@ -166,7 +166,7 @@ export default {
166
166
  if (this.href.length) {
167
167
  attrsList.href = this.href;
168
168
  }
169
-
169
+
170
170
  if(this.to) {
171
171
  attrsList.to = this.to;
172
172
  }
@@ -188,5 +188,5 @@ export default {
188
188
  </script>
189
189
 
190
190
  <style lang="scss">
191
- @import "./button.scss";
191
+ @use "./button.scss" as *;
192
192
  </style>
@@ -1,6 +1,6 @@
1
- @import "../../assets/scss/variables/colors.scss";
2
- @import "../../assets/scss/typography.scss";
3
- @import "../../assets/scss/mixins.scss";
1
+ @use "../../assets/scss/variables/colors.scss" as *;
2
+ @use "../../assets/scss/typography.scss" as *;
3
+ @use "../../assets/scss/mixins.scss" as *;
4
4
 
5
5
  // Primary button colors
6
6
  $primary-btn-background: $blue-800;
@@ -53,9 +53,9 @@ export default {
53
53
  };
54
54
  </script>
55
55
  <style lang="scss" scoped>
56
- @import "../../assets/scss/variables/colors.scss";
57
- @import "../../assets/scss/typography.scss";
58
- @import "../../assets/scss/mixins.scss";
56
+ @use "../../assets/scss/variables/colors.scss" as *;
57
+ @use "../../assets/scss/typography.scss" as *;
58
+ @use "../../assets/scss/mixins.scss" as *;
59
59
 
60
60
  .ib-chips {
61
61
  @include Ib-H4-medium;
File without changes
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="ib-dropdown" v-outside="close">
2
+ <div class="ib-dropdown" v-outside="closeOnOutsideClick">
3
3
  <span
4
4
  class="dropdown-trigger"
5
5
  ref="dropdown"
@@ -21,23 +21,46 @@
21
21
  <slot name="trigger" v-bind:is-opened="isOpenedState"></slot>
22
22
  </span>
23
23
 
24
- <div
25
- ref="body"
26
- :class="'ib-dropdown-menu ' + classes"
27
- v-if="!destroyOnHide || isOpenedState"
28
- v-show="isOpenedState"
24
+ <Teleport
25
+ :to="attachToBody ? 'body' : attachTo"
26
+ v-if="attachToBody || attachTo"
29
27
  >
30
- <div class="dropdown-body" @click="closeOnClickIfRequired">
31
- <slot name="body" v-bind:is-opened-state="isOpenedState"></slot>
32
-
33
- <span class="close" @click="close" v-if="showCloseIcon">
34
- <slot name="close"></slot>
35
- </span>
28
+ <div
29
+ ref="body"
30
+ :class="'ib-dropdown-menu is-teleported ' + classes"
31
+ v-if="!destroyOnHide || isOpenedState"
32
+ v-show="isOpenedState"
33
+ >
34
+ <div class="dropdown-body" @click="closeOnClickIfRequired">
35
+ <slot name="body" v-bind:is-opened-state="isOpenedState"></slot>
36
+ <span class="close" @click="close" v-if="showCloseIcon">
37
+ <slot name="close"></slot>
38
+ </span>
39
+ </div>
40
+ <div class="footer-slot">
41
+ <slot name="footer"></slot>
42
+ </div>
36
43
  </div>
37
- <div class="footer-slot">
38
- <slot name="footer"></slot>
44
+ </Teleport>
45
+
46
+ <template v-else>
47
+ <div
48
+ ref="body"
49
+ :class="'ib-dropdown-menu ' + classes"
50
+ v-if="!destroyOnHide || isOpenedState"
51
+ v-show="isOpenedState"
52
+ >
53
+ <div class="dropdown-body" @click="closeOnClickIfRequired">
54
+ <slot name="body" v-bind:is-opened-state="isOpenedState"></slot>
55
+ <span class="close" @click="close" v-if="showCloseIcon">
56
+ <slot name="close"></slot>
57
+ </span>
58
+ </div>
59
+ <div class="footer-slot">
60
+ <slot name="footer"></slot>
61
+ </div>
39
62
  </div>
40
- </div>
63
+ </template>
41
64
 
42
65
  <div class="before" @click="close">
43
66
  <slot name="before"></slot>
@@ -55,6 +78,7 @@ import {
55
78
  import { EVENT_NAME_CLICK } from "../../constants/events";
56
79
  import { OutsideDirective as Outside } from "../../directives/outside/outside";
57
80
  import { verticalPosition, horizontalPosition } from "./constants";
81
+ import { computePosition, flip, shift, offset } from "@floating-ui/dom";
58
82
 
59
83
  export default {
60
84
  name: "IbDropdown",
@@ -95,6 +119,14 @@ export default {
95
119
  type: Boolean,
96
120
  default: false,
97
121
  },
122
+ attachToBody: {
123
+ type: Boolean,
124
+ default: false,
125
+ },
126
+ attachTo: {
127
+ type: String,
128
+ default: null,
129
+ },
98
130
  },
99
131
  watch: {
100
132
  isOpened(value) {
@@ -122,6 +154,39 @@ export default {
122
154
  };
123
155
  },
124
156
  methods: {
157
+ async updatePosition() {
158
+ const trigger = this.$refs.dropdown;
159
+ const body = this.$refs.body;
160
+
161
+ if (!trigger || !body) return;
162
+
163
+ const placementMap = {
164
+ bottom: { v: "bottom", h: "left" },
165
+ top: { v: "top", h: "left" },
166
+ };
167
+
168
+ const verticalPlacement = this.vertical === "top" ? "top" : "bottom";
169
+ const horizontalAlignment =
170
+ this.horizontal === "right"
171
+ ? "end"
172
+ : this.horizontal === "center"
173
+ ? ""
174
+ : "start";
175
+
176
+ const placement = horizontalAlignment
177
+ ? `${verticalPlacement}-${horizontalAlignment}`
178
+ : verticalPlacement;
179
+
180
+ const { x, y } = await computePosition(trigger, body, {
181
+ placement,
182
+ middleware: [offset(3), flip(), shift({ padding: 8 })],
183
+ });
184
+
185
+ Object.assign(body.style, {
186
+ left: `${x}px`,
187
+ top: `${y}px`,
188
+ });
189
+ },
125
190
  onKeydown(e) {
126
191
  if (e.keyCode === ENTER_KEY_CODE || e.keyCode === SPACE_KEY_CODE) {
127
192
  e.preventDefault();
@@ -147,14 +212,16 @@ export default {
147
212
  }
148
213
  },
149
214
  open() {
150
- if (this.disabled) {
151
- return;
152
- }
153
-
154
- this.isOpenedState = true;
155
- this.$emit("open");
156
- this.$globalEvents.$emit("dropdown:open", this);
157
- },
215
+ if (this.disabled) return;
216
+ this.isOpenedState = true;
217
+ this.$emit('open');
218
+ this.$globalEvents.$emit('dropdown:open', this);
219
+ this.$nextTick(() => {
220
+ if (this.attachToBody || this.attachTo) {
221
+ this.updatePosition();
222
+ }
223
+ });
224
+ },
158
225
  close() {
159
226
  if (this.isOpenedState) {
160
227
  if (this.disabled) {
@@ -164,6 +231,13 @@ export default {
164
231
  this.$emit("close");
165
232
  }
166
233
  },
234
+ closeOnOutsideClick(event) {
235
+ if (this.$refs.body && this.$refs.body.contains(event.target)) {
236
+ return;
237
+ }
238
+
239
+ this.close();
240
+ },
167
241
  debouncedOpen() {
168
242
  this.timeout = setTimeout(() => {
169
243
  this.open();
@@ -179,6 +253,10 @@ export default {
179
253
  }
180
254
  },
181
255
  closeOnEventOutside(e) {
256
+ if (this.$refs.body && this.$refs.body.contains(e.target)) {
257
+ return;
258
+ }
259
+
182
260
  if (!this.$el.contains(e.target)) {
183
261
  this.close();
184
262
  }
@@ -221,8 +299,8 @@ export default {
221
299
  </script>
222
300
 
223
301
  <style scoped lang="scss">
224
- @import "../../assets/scss/variables/colors.scss";
225
- @import "../../assets/scss/variables/shadows.scss";
302
+ @use "../../assets/scss/variables/colors.scss" as *;
303
+ @use "../../assets/scss/variables/shadows.scss" as *;
226
304
 
227
305
  $menu-shadow: $ib-shadow-4;
228
306
  $menu-bg: $white;
@@ -250,7 +328,6 @@ $menu-bg: $white;
250
328
  position: absolute;
251
329
  display: block;
252
330
  background-color: $menu-bg;
253
- min-width: 100%;
254
331
  width: fit-content;
255
332
 
256
333
  .dropdown-body {
@@ -286,7 +363,7 @@ $menu-bg: $white;
286
363
  }
287
364
  </style>
288
365
  <style lang="scss">
289
- @import "../../assets/scss/variables/colors.scss";
366
+ @use "../../assets/scss/variables/colors.scss" as *;
290
367
 
291
368
  .dropdown-trigger {
292
369
  &.active {
@@ -5,7 +5,7 @@
5
5
  <script></script>
6
6
 
7
7
  <style lang="scss" scoped>
8
- @import "../../assets/scss/variables/colors.scss";
8
+ @use "../../assets/scss/variables/colors.scss" as *;
9
9
 
10
10
  .dropdown-divider {
11
11
  height: 1px;
@@ -60,7 +60,7 @@ export default {
60
60
  </script>
61
61
 
62
62
  <style lang="scss" scoped>
63
- @import "../../assets/scss/mixins/dropdown-list-item.scss";
63
+ @use "../../assets/scss/mixins/dropdown-list-item.scss" as *;
64
64
  @include DropdownListItem;
65
65
 
66
66
  .dropdown-item-wrapper {
@@ -1,11 +1,13 @@
1
1
  <template>
2
- <div class="dropdown-list-wrapper">
2
+ <div class="dropdown-list-wrapper" :class="class">
3
3
  <ib-dropdown
4
4
  :horizontal="horizontal"
5
5
  :vertical="vertical"
6
6
  :isOpened="isOpened"
7
7
  :closeOnClick="closeOnClick"
8
8
  :disabled="disabled"
9
+ :attachToBody="attachToBody"
10
+ :attachTo="attachTo"
9
11
  v-bind="$attrs"
10
12
  ref="dropdown"
11
13
  @all="proxyEvents"
@@ -50,6 +52,18 @@ export default {
50
52
  type: Boolean,
51
53
  default: false,
52
54
  },
55
+ class: {
56
+ type: String,
57
+ default: "",
58
+ },
59
+ attachToBody: {
60
+ type: Boolean,
61
+ default: false,
62
+ },
63
+ attachTo: {
64
+ type: String,
65
+ default: null,
66
+ },
53
67
  },
54
68
  methods: {
55
69
  proxyEvents(eventInfo) {
@@ -73,7 +87,7 @@ export default {
73
87
  };
74
88
  </script>
75
89
  <style lang="scss">
76
- @import "../../assets/scss/variables/colors.scss";
90
+ @use "../../assets/scss/variables/colors.scss" as *;
77
91
 
78
92
  .dropdown-list-wrapper {
79
93
  .list {
@@ -30,8 +30,8 @@ export default {
30
30
  </script>
31
31
 
32
32
  <style lang="scss" scoped>
33
- @import "../../assets/scss/variables/colors.scss";
34
- @import "../../assets/scss/typography.scss";
33
+ @use "../../assets/scss/variables/colors.scss" as *;
34
+ @use "../../assets/scss/typography.scss" as *;
35
35
 
36
36
  $textarea-character-count-color: $gray-600;
37
37
  $textarea-character-count-limited-color: $red-900;
@@ -1,6 +1,6 @@
1
- @import "../../../assets/scss/variables/colors.scss";
2
- @import "../../../assets/scss/typography.scss";
3
- @import "../../../assets/scss/mixins.scss";
1
+ @use "../../../assets/scss/variables/colors.scss" as *;
2
+ @use "../../../assets/scss/typography.scss" as *;
3
+ @use "../../../assets/scss/mixins.scss" as *;
4
4
 
5
5
  $checkbox-bg-disabled: $gray-100;
6
6
  $checkbox-filed-bg-disabled: $neutral-500;
@@ -45,7 +45,7 @@ $checkbox-bg-indeterminate: $blue-800;
45
45
  align-items: center;
46
46
  cursor: pointer;
47
47
  }
48
-
48
+
49
49
  /* Hide default HTML checkbox */
50
50
  input {
51
51
  display: none;
@@ -171,5 +171,5 @@ export default {
171
171
  </script>
172
172
 
173
173
  <style lang="scss" scoped>
174
- @import "./Checkbox.scss";
174
+ @use "./Checkbox.scss" as *;
175
175
  </style>
@@ -1,7 +1,7 @@
1
- @import "../../../assets/scss/mixins.scss";
2
- @import "../../../assets/scss/typography.scss";
3
- @import "../../../assets/scss/variables/colors.scss";
4
- @import "../../../assets/scss/variables/shadows.scss";
1
+ @use "../../../assets/scss/mixins.scss" as *;
2
+ @use "../../../assets/scss/typography.scss" as *;
3
+ @use "../../../assets/scss/variables/colors.scss" as *;
4
+ @use "../../../assets/scss/variables/shadows.scss" as *;
5
5
 
6
6
  $datepicker-shadow: $ib-shadow-3;
7
7
  $datepicker-bg: $white;
@@ -335,5 +335,5 @@ export default {
335
335
  };
336
336
  </script>
337
337
  <style lang="scss">
338
- @import "./DatePicker.scss";
338
+ @use "./DatePicker.scss" as *;
339
339
  </style>
@@ -22,8 +22,8 @@ export default {
22
22
  </script>
23
23
 
24
24
  <style lang="scss">
25
- @import "../../../assets/scss/typography.scss";
26
- @import "../../../assets/scss/variables/colors.scss";
25
+ @use "../../../assets/scss/typography.scss" as *;
26
+ @use "../../../assets/scss/variables/colors.scss" as *;
27
27
 
28
28
  .ib-form-group {
29
29
  display: flex;
@@ -35,7 +35,7 @@ export default {
35
35
  </script>
36
36
 
37
37
  <style lang="scss">
38
- @import "../../../assets/scss/typography.scss";
38
+ @use "../../../assets/scss/typography.scss" as *;
39
39
  .ib-form-group-set {
40
40
  max-width: 476px;
41
41
  width: fit-content;