@avakhula/ui 0.0.503 → 0.0.505-alpha-spa.2

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 (160) hide show
  1. package/.babelrc.json +0 -0
  2. package/.eslintrc.cjs +0 -0
  3. package/.nvmrc +0 -0
  4. package/.storybook/main.js +0 -0
  5. package/.storybook/preview-head.html +0 -0
  6. package/.storybook/preview.js +0 -0
  7. package/dist/index.js +16912 -2987
  8. package/dist/index.umd.cjs +168 -22
  9. package/dist/style.css +1 -1
  10. package/package.json +4 -4
  11. package/src/App.vue +13 -128
  12. package/src/assets/scss/mixins/dropdown-list-item.scss +5 -0
  13. package/src/assets/scss/mixins/tooltip-position.scss +0 -0
  14. package/src/assets/scss/variables/colors.json +0 -0
  15. package/src/assets/scss/variables/colors.scss +0 -0
  16. package/src/assets/scss/variables/shadows.json +0 -0
  17. package/src/assets/scss/variables/shadows.scss +0 -0
  18. package/src/components/Accordion/Accordion.scss +0 -0
  19. package/src/components/Accordion/Accordion.stories.js +0 -0
  20. package/src/components/Accordion/Accordion.vue +0 -0
  21. package/src/components/Accordion/Acordion.spec.js +0 -0
  22. package/src/components/Accordion/readme.mdx +0 -0
  23. package/src/components/Alert/Alert.spec.js +0 -0
  24. package/src/components/Alert/Alert.stories.js +0 -0
  25. package/src/components/Alert/Alert.vue +5 -0
  26. package/src/components/Alert/alert.scss +6 -1
  27. package/src/components/Alert/constants.js +0 -0
  28. package/src/components/Alert/readme.mdx +0 -0
  29. package/src/components/Avatar/Avatar.stories.js +5 -1
  30. package/src/components/Avatar/Avatar.vue +25 -2
  31. package/src/components/Avatar/constants.js +6 -0
  32. package/src/components/Badge/Badge.spec.js +0 -0
  33. package/src/components/Badge/Badge.vue +0 -0
  34. package/src/components/Badge/readme.mdx +0 -0
  35. package/src/components/Breadcrumbs/Breadcrumbs.vue +0 -0
  36. package/src/components/Breadcrumbs/breadcrumbs.scss +0 -0
  37. package/src/components/Breadcrumbs/breadcrumbs.stories.js +0 -0
  38. package/src/components/Button/Button.spec.js +0 -0
  39. package/src/components/Button/Button.vue +19 -3
  40. package/src/components/Button/button.scss +4 -0
  41. package/src/components/Button/readme.mdx +0 -0
  42. package/src/components/ButtonGroup/ButtonGroup.stories.js +0 -0
  43. package/src/components/ButtonGroup/readme.mdx +0 -0
  44. package/src/components/Chips/Chips.stories.js +30 -0
  45. package/src/components/Chips/Chips.vue +125 -0
  46. package/src/components/Dropdown/Dropdown.stories.js +0 -0
  47. package/src/components/Dropdown/Dropdown.vue +0 -0
  48. package/src/components/Dropdown/DropdownItem.vue +26 -4
  49. package/src/components/Dropdown/DropdownList.stories.js +0 -0
  50. package/src/components/Dropdown/readme.mdx +0 -0
  51. package/src/components/Form/CharactersCount.vue +10 -7
  52. package/src/components/Form/Checkbox/Checkbox.scss +0 -0
  53. package/src/components/Form/Checkbox/Checkbox.stories.js +0 -0
  54. package/src/components/Form/Checkbox/Checkbox.vue +23 -11
  55. package/src/components/Form/Checkbox/readme.mdx +0 -0
  56. package/src/components/Form/CheckboxGroup/CheckboxGroup.stories.js +0 -0
  57. package/src/components/Form/CheckboxGroup/CheckboxGroup.vue +15 -0
  58. package/src/components/Form/CheckboxGroup/readme.mdx +2 -0
  59. package/src/components/Form/DatePicker/DatePicker.scss +345 -260
  60. package/src/components/Form/DatePicker/DatePicker.stories.js +0 -0
  61. package/src/components/Form/DatePicker/DatePicker.vue +55 -14
  62. package/src/components/Form/DatePicker/readme.mdx +0 -0
  63. package/src/components/Form/FormGroup/FormGroup.vue +3 -3
  64. package/src/components/Form/Input/Input.stories.js +0 -0
  65. package/src/components/Form/Input/Input.vue +6 -2
  66. package/src/components/Form/Input/constants.js +0 -0
  67. package/src/components/Form/Input/input.scss +0 -0
  68. package/src/components/Form/Input/readme.mdx +0 -0
  69. package/src/components/Form/Label/Label.stories.js +0 -0
  70. package/src/components/Form/Label/Label.vue +22 -10
  71. package/src/components/Form/Label/readme.mdx +0 -0
  72. package/src/components/Form/PhoneInput/PhoneInput.stories.js +0 -0
  73. package/src/components/Form/PhoneInput/PhoneInput.vue +21 -12
  74. package/src/components/Form/PhoneInput/phoneInput.scss +4 -5
  75. package/src/components/Form/PhoneInput/readme.mdx +0 -0
  76. package/src/components/Form/Radio/Radio.stories.js +0 -0
  77. package/src/components/Form/Radio/Radio.vue +22 -35
  78. package/src/components/Form/Radio/radio.scss +5 -2
  79. package/src/components/Form/Radio/readme.mdx +0 -0
  80. package/src/components/Form/TextEditor/TextEditor.stories.js +0 -0
  81. package/src/components/Form/TextEditor/TextEditor.vue +67 -15
  82. package/src/components/Form/TextEditor/readme.mdx +0 -0
  83. package/src/components/Form/TextEditor/textEditor.scss +22 -0
  84. package/src/components/Form/Textarea/Textarea.stories.js +0 -0
  85. package/src/components/Form/Textarea/Textarea.vue +19 -2
  86. package/src/components/Form/Textarea/readme.mdx +0 -0
  87. package/src/components/Form/Textarea/textarea.scss +20 -1
  88. package/src/components/Form/Toggle/Toggle.stories.js +0 -0
  89. package/src/components/Form/Toggle/Toggle.vue +0 -0
  90. package/src/components/Form/Toggle/readme.mdx +0 -0
  91. package/src/components/Form/Toggle/toggle.scss +0 -0
  92. package/src/components/IconButton/IconButton.scss +11 -0
  93. package/src/components/IconButton/IconButton.vue +5 -0
  94. package/src/components/IconButton/readme.mdx +0 -0
  95. package/src/components/List.vue +0 -0
  96. package/src/components/Modal/Modal.stories.js +0 -0
  97. package/src/components/Modal/Modal.vue +6 -5
  98. package/src/components/Modal/constants.js +0 -0
  99. package/src/components/Modal/readme.mdx +0 -0
  100. package/src/components/Pagination/LimitSelector.vue +4 -0
  101. package/src/components/Pagination/Pagination.vue +9 -2
  102. package/src/components/Pagination/pagination.scss +0 -0
  103. package/src/components/Panel/Panel.stories.js +0 -0
  104. package/src/components/Panel/Panel.vue +68 -2
  105. package/src/components/Popover/Popover.vue +4 -4
  106. package/src/components/Popover/constants.js +0 -0
  107. package/src/components/Popover/popover.scss +1 -1
  108. package/src/components/Popover/readme.mdx +0 -0
  109. package/src/components/ProgressBar/ProgressBar.vue +0 -0
  110. package/src/components/ProgressBar/constants.js +0 -0
  111. package/src/components/ProgressBar/progressBar.scss +0 -0
  112. package/src/components/ProgressBar/readme.mdx +0 -0
  113. package/src/components/Sorting/Sorting.stories.js +0 -0
  114. package/src/components/Sorting/Sorting.vue +0 -0
  115. package/src/components/Sorting/sorting.scss +0 -0
  116. package/src/components/SplitButton/SplitButton.stories.js +0 -0
  117. package/src/components/SplitButton/SplitButton.vue +31 -7
  118. package/src/components/SplitButton/SplitButtonItem.vue +13 -1
  119. package/src/components/SplitButton/readme.mdx +0 -0
  120. package/src/components/SplitButton/splitButton.scss +0 -0
  121. package/src/components/StatusIndicator/StatusIndicator.stories.js +0 -0
  122. package/src/components/StatusIndicator/StatusIndicator.vue +0 -0
  123. package/src/components/StatusIndicator/constants.js +0 -0
  124. package/src/components/StatusIndicator/icons.js +0 -0
  125. package/src/components/StatusIndicator/readme.mdx +0 -0
  126. package/src/components/Tabs/TabDropdown.vue +0 -0
  127. package/src/components/Tabs/Tabs.stories.js +0 -0
  128. package/src/components/Tabs/Tabs.vue +0 -0
  129. package/src/components/Tabs/tabs.scss +0 -0
  130. package/src/components/TagPill/TagPill.stories.js +0 -0
  131. package/src/components/TagPill/readme.mdx +0 -0
  132. package/src/components/ToggleTip/constants.js +0 -0
  133. package/src/components/ToggleTip/readme.mdx +0 -0
  134. package/src/components/ToggleTip/toggleTip.scss +0 -0
  135. package/src/components/Tooltip/Tooltip.vue +1 -1
  136. package/src/components/Tooltip/readme.mdx +0 -0
  137. package/src/components/TreeSelect/Option.vue +40 -9
  138. package/src/components/TreeSelect/Select.stories.js +0 -0
  139. package/src/components/TreeSelect/Select.vue +77 -29
  140. package/src/components/TreeSelect/TreeSelect.stories.js +0 -0
  141. package/src/components/TreeSelect/mixins/InfinityLoaderMixin.js +40 -0
  142. package/src/components/TreeSelect/scss/option.scss +31 -0
  143. package/src/components/TreeSelect/scss/select.scss +47 -1
  144. package/src/directives/outside/outside.stories.js +0 -0
  145. package/src/directives/outside/readme.mdx +0 -0
  146. package/src/directives/tooltip/TooltipController.js +2 -0
  147. package/src/directives/tooltip/readme.mdx +0 -0
  148. package/src/directives/tooltip/textOverflowTooltip.js +3 -1
  149. package/src/directives/tooltip/tooltip.js +15 -0
  150. package/src/directives/tooltip/tooltip.stories.js +0 -0
  151. package/src/helpers/removeEvents.js +0 -0
  152. package/src/index.js +4 -0
  153. package/src/main.js +0 -0
  154. package/src/mixins/expandAnimation.js +0 -0
  155. package/src/scripts/parseScssVariables.js +0 -0
  156. package/src/stories/link.readme.mdx +0 -0
  157. package/src/stories/variables/colors.stories.js +0 -0
  158. package/src/stories/variables/shadows.stories.js +0 -0
  159. package/static/docks/button.pdf +0 -0
  160. package/static/favicon.ico +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avakhula/ui",
3
- "version": "0.0.503",
3
+ "version": "0.0.505-alpha-spa.2",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.umd.cjs",
6
6
  "source": "src/index.js",
@@ -11,7 +11,7 @@
11
11
  "registry": "https://registry.npmjs.org/"
12
12
  },
13
13
  "scripts": {
14
- "dev": "vite",
14
+ "dev": "vite --port 3006",
15
15
  "build": "vite build",
16
16
  "preview": "vite preview",
17
17
  "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --ignore-path .gitignore",
@@ -21,9 +21,9 @@
21
21
  "build-storybook": "storybook build"
22
22
  },
23
23
  "dependencies": {
24
- "@floating-ui/dom": "^1.5.4",
25
24
  "@vueup/vue-quill": "^1.2.0",
26
25
  "mitt": "^3.0.0",
26
+ "quill-placeholder-module": "^0.3.1",
27
27
  "vue": "^3.2.45"
28
28
  },
29
29
  "devDependencies": {
@@ -61,6 +61,6 @@
61
61
  "vite": "^4.0.0",
62
62
  "vitest": "^0.28.4",
63
63
  "vue-loader": "^16.8.3",
64
- "vue-tel-input": "^8.1.1"
64
+ "vue-tel-input": "^9.1.4"
65
65
  }
66
66
  }
package/src/App.vue CHANGED
@@ -1,135 +1,20 @@
1
1
  <template>
2
- <ib-select :options="opt">
3
- <template v-slot:triggerContent="{ selectedCount }">
4
- {{ selectedCount }}
2
+ <chips :active="true" @click="() => console.log('hello click')">
3
+ <template #icon>
4
+ <icon name="people-outline" />
5
5
  </template>
6
- </ib-select>
7
-
6
+ Users
7
+ </chips>
8
8
  </template>
9
9
 
10
10
  <script>
11
- import IbSelect from "./components/TreeSelect/Select.vue";
12
- const testData1 = [
13
- {
14
- id: "1",
15
- title: "A Education",
16
- is_category: true,
17
- initiallyVisible: true,
18
- visible: true,
19
- isDisabled: false,
20
- checked: true,
21
- isChildrenVisible: true,
22
- },
23
- {
24
- id: "2",
25
- title: "Education 2",
26
- is_category: true,
27
- initiallyVisible: true,
28
- visible: true,
29
- isDisabled: false,
30
- checked: false,
31
- isChildrenVisible: true,
32
- },
33
- {
34
- id: "3",
35
- title: "Education 3",
36
- is_category: true,
37
- initiallyVisible: true,
38
- visible: true,
39
- isDisabled: false,
40
- checked: false,
41
- isChildrenVisible: true,
42
- },
43
- {
44
- id: "4",
45
- title: "Education 4",
46
- is_category: true,
47
- initiallyVisible: true,
48
- visible: true,
49
- isDisabled: false,
50
- checked: false,
51
- isChildrenVisible: true,
52
- },
53
- {
54
- id: "5",
55
- title: "Education 5",
56
- is_category: true,
57
- initiallyVisible: true,
58
- visible: true,
59
- isDisabled: false,
60
- checked: false,
61
- isChildrenVisible: true,
62
- },
63
-
64
- {
65
- id: "6",
66
- title: "Education 6",
67
- is_category: true,
68
- initiallyVisible: true,
69
- visible: true,
70
- isDisabled: false,
71
- checked: false,
72
- isChildrenVisible: true,
73
- },
74
-
75
- {
76
- id: "7",
77
- title: "Education 7",
78
- is_category: true,
79
- initiallyVisible: true,
80
- visible: true,
81
- isDisabled: false,
82
- checked: false,
83
- isChildrenVisible: true,
84
- },
85
-
86
- {
87
- id: "8",
88
- title: "Education 8",
89
- is_category: true,
90
- initiallyVisible: true,
91
- visible: true,
92
- isDisabled: false,
93
- checked: false,
94
- isChildrenVisible: true,
95
- },
96
- {
97
- id: "9",
98
- title: "Education 9",
99
- is_category: true,
100
- initiallyVisible: true,
101
- visible: true,
102
- isDisabled: false,
103
- checked: false,
104
- isChildrenVisible: true,
105
- },
106
- {
107
- id: "10",
108
- title: "Education 10",
109
- is_category: true,
110
- initiallyVisible: true,
111
- visible: true,
112
- isDisabled: false,
113
- checked: false,
114
- isChildrenVisible: true,
115
- },
116
- {
117
- id: "11",
118
- title: "Education 11",
119
- is_category: true,
120
- initiallyVisible: true,
121
- visible: true,
122
- isDisabled: false,
123
- checked: false,
124
- isChildrenVisible: true,
125
- },
126
- ];
11
+ import Chips from "./components/Chips/Chips.vue";
12
+ import Icon from "./components/Icon.vue";
127
13
  export default {
128
- data() {
129
- return {
130
- opt: testData1,
131
- }
14
+ components: {
15
+ Chips,
16
+ Icon,
132
17
  },
133
- components: {IbSelect}
134
- }
135
- </script>
18
+ };
19
+ </script>
20
+
@@ -36,6 +36,11 @@
36
36
  background-color: $gray-100;
37
37
  }
38
38
 
39
+ &:disabled {
40
+ cursor: not-allowed;
41
+ color: $neutral-500;
42
+ }
43
+
39
44
  &:focus {
40
45
  @include focus();
41
46
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,6 +6,7 @@
6
6
  <b v-if="title?.length" class="ib-alert-title">
7
7
  {{ title }}
8
8
  </b>
9
+ <slot name="title"></slot>
9
10
  </span>
10
11
 
11
12
  <span class="text-content">
@@ -54,6 +55,10 @@ export default {
54
55
  type: String,
55
56
  default: "",
56
57
  },
58
+ additionalTitleText: {
59
+ type: String,
60
+ default: "",
61
+ },
57
62
  },
58
63
  mounted() {
59
64
  this.checkHeight();
@@ -82,6 +82,7 @@ $alert-success-secondary-color: $green-50;
82
82
 
83
83
  .text-content {
84
84
  @include Ib-H5-regular;
85
+ margin-left: 3px;
85
86
  }
86
87
 
87
88
  &.large {
@@ -109,6 +110,7 @@ $alert-success-secondary-color: $green-50;
109
110
  margin-bottom: 5px;
110
111
  padding-left: 0!important;
111
112
  word-break: break-word;
113
+ margin-left: 3px;
112
114
  }
113
115
 
114
116
  & + .close-button {
@@ -138,10 +140,13 @@ $alert-success-secondary-color: $green-50;
138
140
  }
139
141
 
140
142
  &-title {
141
- margin-right: 5px;
142
143
  @include Ib-H4-medium;
143
144
  }
144
145
 
146
+ &-additional-text {
147
+ margin-right: 5px;
148
+ }
149
+
145
150
  &-icon {
146
151
  display: inline-block;
147
152
  font-size: 20px;
File without changes
File without changes
@@ -1,5 +1,5 @@
1
1
  import Avatar from "./Avatar.vue";
2
- import { avatarSizes } from "./constants";
2
+ import { avatarSizes, avatarTypes } from "./constants";
3
3
 
4
4
  export default {
5
5
  title: "Avatar",
@@ -9,6 +9,10 @@ export default {
9
9
  control: { type: "select" },
10
10
  options: Object.values(avatarSizes),
11
11
  },
12
+ type: {
13
+ control: { type: "select" },
14
+ options: Object.values(avatarTypes),
15
+ },
12
16
  },
13
17
  };
14
18
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  <script>
28
28
  import IbIcon from "../Icon.vue";
29
- import { avatarSizes } from "./constants";
29
+ import { avatarSizes, avatarTypes } from "./constants";
30
30
 
31
31
  export default {
32
32
  name: "IbAvatar",
@@ -51,10 +51,14 @@ export default {
51
51
  type: String,
52
52
  default: avatarSizes.M,
53
53
  },
54
+ type: {
55
+ type: String,
56
+ default: avatarTypes.CIRCLE,
57
+ },
54
58
  },
55
59
  computed: {
56
60
  classList() {
57
- const classList = ["avatar", `avatar-size-${this.size}`];
61
+ const classList = ["avatar", `avatar-size-${this.size}`, `avatar-type-${this.type}`];
58
62
  return classList;
59
63
  },
60
64
  validateName() {
@@ -86,15 +90,34 @@ $avatar-border: $blue-200;
86
90
  justify-content: center;
87
91
  object-fit: cover;
88
92
 
93
+ &.avatar-type-circle {
94
+ border-radius: 100%;
95
+ }
96
+
97
+ &.avatar-type-square {
98
+ border-radius: 4px;
99
+ }
100
+
89
101
  &.avatar-size {
90
102
  &-m {
91
103
  width: 34px;
104
+ min-width: 34px;
92
105
  height: 34px;
106
+ min-height: 34px;
93
107
  }
94
108
 
95
109
  &-l {
96
110
  width: 74px;
111
+ min-width: 74px;
97
112
  height: 74px;
113
+ min-height: 74px;
114
+ }
115
+
116
+ &-xl {
117
+ width: 87px;
118
+ min-width: 87px;
119
+ height: 87px;
120
+ min-height: 87px;
98
121
  }
99
122
  }
100
123
 
@@ -1,4 +1,10 @@
1
1
  export const avatarSizes = {
2
2
  M: "m",
3
3
  L: "l",
4
+ XL: "xl",
4
5
  };
6
+
7
+ export const avatarTypes = {
8
+ SQUARE: "square",
9
+ CIRCLE: "circle",
10
+ };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <component
3
- :is="href.length ? 'a' : 'button'"
3
+ :is="component"
4
+ v-bind="attrs"
4
5
  @click="onClick($event)"
5
6
  @mouseenter="onMouseenter"
6
7
  @mouseleave="onMouseleave"
7
- v-bind="attrs"
8
8
  >
9
9
  <slot name="icon"></slot>
10
10
  <slot></slot>
@@ -61,6 +61,9 @@ export default {
61
61
  type: String,
62
62
  default: "",
63
63
  },
64
+ to: {
65
+ type: [String, Object],
66
+ },
64
67
  linkMethod: {
65
68
  type: String,
66
69
  default: "get",
@@ -123,6 +126,15 @@ export default {
123
126
  },
124
127
  },
125
128
  computed: {
129
+ component() {
130
+ if (this.href.length) {
131
+ return "a";
132
+ } else if (this.to) {
133
+ return "router-link";
134
+ } else {
135
+ return "button";
136
+ }
137
+ },
126
138
  classes() {
127
139
  const classList = ["ib-button"];
128
140
  classList.push(`ib-btn-${this.kind}`);
@@ -135,7 +147,7 @@ export default {
135
147
  classList.push("ib-btn-block");
136
148
  }
137
149
 
138
- if (this.href.length) {
150
+ if (this.href.length || this.to) {
139
151
  classList.push("ib-btn-link");
140
152
  }
141
153
 
@@ -154,6 +166,10 @@ export default {
154
166
  if (this.href.length) {
155
167
  attrsList.href = this.href;
156
168
  }
169
+
170
+ if(this.to) {
171
+ attrsList.to = this.to;
172
+ }
157
173
 
158
174
  return attrsList;
159
175
  },
@@ -136,6 +136,7 @@ $disabled-btn-color: $neutral-500;
136
136
  background: $tertiary-btn-focus-background;
137
137
  }
138
138
 
139
+ &.active,
139
140
  &:active {
140
141
  color: $tertiary-btn-active-color;
141
142
  background: $tertiary-btn-active-background;
@@ -151,6 +152,7 @@ $disabled-btn-color: $neutral-500;
151
152
  background: $ghost-btn-hover-background;
152
153
  }
153
154
 
155
+ &.active,
154
156
  &:active {
155
157
  color: $ghost-btn-active-color;
156
158
  background: $ghost-btn-active-background;
@@ -216,6 +218,8 @@ $disabled-btn-color: $neutral-500;
216
218
  &:disabled {
217
219
  background: $disabled-btn-background;
218
220
  color: $disabled-btn-color;
221
+ cursor: auto;
222
+ pointer-events: none;
219
223
  }
220
224
  }
221
225
  }
File without changes
File without changes
File without changes
@@ -0,0 +1,30 @@
1
+ import IbChips from "./Chips.vue";
2
+ import Icon from "../Icon.vue";
3
+
4
+ export default {
5
+ title: "Chips",
6
+ component: IbChips,
7
+ }
8
+
9
+ const Template = (args) => ({
10
+ components: { IbChips },
11
+ setup() {
12
+ return { args };
13
+ },
14
+ template: '<ib-chips v-bind="args">Total Visits: 0-20</ib-chips>',
15
+ });
16
+
17
+ const TemplateWithIcon = (args) => ({
18
+ components: { IbChips, Icon },
19
+ setup() {
20
+ return { args };
21
+ },
22
+ template: '<ib-chips v-bind="args"><template #icon><icon name="people-outline" /></template>Users</ib-chips>',
23
+ });
24
+
25
+ export const Default = Template.bind({});
26
+ Default.args = {};
27
+
28
+ export const ChipsWithIcon = TemplateWithIcon.bind({});
29
+ ChipsWithIcon.args = {};
30
+
@@ -0,0 +1,125 @@
1
+ <template>
2
+ <button
3
+ :class="{
4
+ 'ib-chips': true,
5
+ 'ib-chips-active': active,
6
+ 'ib-chips-error': error,
7
+ 'ib-chips-disabled': disabled,
8
+ }"
9
+ :disabled="disabled"
10
+ >
11
+ <span v-if="hasIcon" class="ib-chips-icon-wrapper">
12
+ <slot class="ib-chips-icon" name="icon" />
13
+ </span>
14
+
15
+ <slot />
16
+
17
+ <span class="ib-chips-close-wrapper" v-if="showCloseIcon">
18
+ <icon class="ib-chips-icon" name="close-outline" />
19
+ </span>
20
+ </button>
21
+ </template>
22
+
23
+ <script>
24
+ import Icon from "../Icon.vue";
25
+
26
+ export default {
27
+ props: {
28
+ showCloseIcon: {
29
+ type: Boolean,
30
+ default: false,
31
+ },
32
+ active: {
33
+ type: Boolean,
34
+ default: false,
35
+ },
36
+ error: {
37
+ type: Boolean,
38
+ default: false,
39
+ },
40
+ disabled: {
41
+ type: Boolean,
42
+ default: false,
43
+ },
44
+ },
45
+ computed: {
46
+ hasIcon() {
47
+ return this.$slots?.icon;
48
+ },
49
+ },
50
+ components: {
51
+ Icon,
52
+ },
53
+ };
54
+ </script>
55
+ <style lang="scss" scoped>
56
+ @import "../../assets/scss/variables/colors.scss";
57
+ @import "../../assets/scss/typography.scss";
58
+ @import "../../assets/scss/mixins.scss";
59
+
60
+ .ib-chips {
61
+ @include Ib-H4-medium;
62
+ padding: 8.5px 10px;
63
+ border: 2px solid transparent;
64
+ border-radius: 4px;
65
+ height: 36px;
66
+ display: flex;
67
+ align-items: center;
68
+ background-color: $gray-100;
69
+ color: $neutral-600;
70
+ cursor: pointer;
71
+ transition: all 0.3s;
72
+
73
+ .ib-chips-close-wrapper,
74
+ .ib-chips-icon-wrapper {
75
+ width: 16px;
76
+ height: 16px;
77
+ }
78
+
79
+ .ib-chips-icon-wrapper {
80
+ margin-right: 5px;
81
+ }
82
+ .ib-chips-close-wrapper {
83
+ margin-left: 5px;
84
+ }
85
+
86
+ .ib-chips-icon {
87
+ color: inherit;
88
+ font-size: 16px;
89
+ }
90
+
91
+ &.ib-chips-active {
92
+ background-color: $blue-200;
93
+ color: $blue-800;
94
+ }
95
+
96
+ &.ib-chips-error {
97
+ border-color: $red-800;
98
+ color: $red-800;
99
+ background-color: $red-50;
100
+ }
101
+
102
+ &.ib-chips-disabled {
103
+ border-color: transparent!important;
104
+ color: $neutral-500!important;
105
+ background-color: $gray-100!important;
106
+ cursor: default;
107
+ }
108
+
109
+ &:hover {
110
+ border-color: $blue-300;
111
+ background-color: $blue-100;
112
+ color: $blue-700;
113
+ }
114
+
115
+ &:active {
116
+ border-color: transparent;
117
+ background-color: $blue-200;
118
+ color: $blue-900;
119
+ }
120
+
121
+ &:focus {
122
+ @include focus(2px);
123
+ }
124
+ }
125
+ </style>
File without changes
File without changes