@eturnity/eturnity_reusable_components 7.33.6 → 7.35.1

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 (172) hide show
  1. package/package.json +40 -33
  2. package/src/Test.vue +10 -0
  3. package/src/assets/svgIcons/obstacle_tool.svg +1 -1
  4. package/src/components/buttons/mainButton/MainButton.stories.js +51 -0
  5. package/src/components/buttons/mainButton/index.vue +25 -15
  6. package/src/components/buttons/mainButton/mainButton.spec.js +35 -0
  7. package/src/components/icon/iconCollection.vue +16 -2
  8. package/src/components/inputs/checkbox/Checkbox.stories.js +49 -43
  9. package/src/components/inputs/checkbox/checkbox.spec.js +109 -0
  10. package/src/components/inputs/checkbox/index.vue +1 -0
  11. package/src/components/inputs/toggle/toggle.spec.js +2 -2
  12. package/src/stories/Button.stories.js +6 -6
  13. package/src/stories/Header.stories.js +5 -5
  14. package/src/stories/Page.stories.js +8 -8
  15. package/.eslintrc.js +0 -181
  16. package/.prettierrc +0 -9
  17. package/.storybook/main.js +0 -23
  18. package/.storybook/preview.js +0 -46
  19. package/babel.config.js +0 -18
  20. package/coverage/base.css +0 -224
  21. package/coverage/block-navigation.js +0 -87
  22. package/coverage/favicon.png +0 -0
  23. package/coverage/index.html +0 -986
  24. package/coverage/prettify.css +0 -1
  25. package/coverage/prettify.js +0 -2
  26. package/coverage/sort-arrow-sprite.png +0 -0
  27. package/coverage/sorter.js +0 -196
  28. package/coverage/src/App.vue.html +0 -175
  29. package/coverage/src/Test.vue.html +0 -421
  30. package/coverage/src/assets/index.html +0 -116
  31. package/coverage/src/assets/tests/helpers.js.html +0 -121
  32. package/coverage/src/assets/tests/index.html +0 -116
  33. package/coverage/src/assets/theme.js.html +0 -208
  34. package/coverage/src/components/addNewButton/AddNewButton.stories.js.html +0 -157
  35. package/coverage/src/components/addNewButton/index.html +0 -131
  36. package/coverage/src/components/addNewButton/index.vue.html +0 -268
  37. package/coverage/src/components/banner/actionBanner/index.html +0 -116
  38. package/coverage/src/components/banner/actionBanner/index.vue.html +0 -277
  39. package/coverage/src/components/banner/banner/banner.stories.js.html +0 -178
  40. package/coverage/src/components/banner/banner/index.html +0 -131
  41. package/coverage/src/components/banner/banner/index.vue.html +0 -649
  42. package/coverage/src/components/banner/infoBanner/index.html +0 -116
  43. package/coverage/src/components/banner/infoBanner/index.vue.html +0 -256
  44. package/coverage/src/components/buttons/buttonIcon/index.html +0 -116
  45. package/coverage/src/components/buttons/buttonIcon/index.vue.html +0 -520
  46. package/coverage/src/components/buttons/closeButton/CloseButton.stories.js.html +0 -172
  47. package/coverage/src/components/buttons/closeButton/index.html +0 -131
  48. package/coverage/src/components/buttons/closeButton/index.vue.html +0 -268
  49. package/coverage/src/components/buttons/mainButton/index.html +0 -116
  50. package/coverage/src/components/buttons/mainButton/index.vue.html +0 -505
  51. package/coverage/src/components/card/index.html +0 -116
  52. package/coverage/src/components/card/index.vue.html +0 -373
  53. package/coverage/src/components/collapsableInfoText/index.html +0 -116
  54. package/coverage/src/components/collapsableInfoText/index.vue.html +0 -466
  55. package/coverage/src/components/deleteIcon/DeleteIcon.stories.js.html +0 -172
  56. package/coverage/src/components/deleteIcon/index.html +0 -131
  57. package/coverage/src/components/deleteIcon/index.vue.html +0 -319
  58. package/coverage/src/components/draggableInputHandle/index.html +0 -116
  59. package/coverage/src/components/draggableInputHandle/index.vue.html +0 -223
  60. package/coverage/src/components/dropdown/Dropdown.stories.js.html +0 -244
  61. package/coverage/src/components/dropdown/index.html +0 -131
  62. package/coverage/src/components/dropdown/index.vue.html +0 -499
  63. package/coverage/src/components/errorMessage/index.html +0 -116
  64. package/coverage/src/components/errorMessage/index.vue.html +0 -277
  65. package/coverage/src/components/filter/filterSettings.vue.html +0 -2002
  66. package/coverage/src/components/filter/index.html +0 -146
  67. package/coverage/src/components/filter/index.vue.html +0 -547
  68. package/coverage/src/components/filter/parentDropdown.vue.html +0 -358
  69. package/coverage/src/components/icon/Icons.stories.js.html +0 -208
  70. package/coverage/src/components/icon/iconCollection.vue.html +0 -289
  71. package/coverage/src/components/icon/index.html +0 -146
  72. package/coverage/src/components/icon/index.vue.html +0 -505
  73. package/coverage/src/components/iconWrapper/index.html +0 -116
  74. package/coverage/src/components/iconWrapper/index.vue.html +0 -622
  75. package/coverage/src/components/infoCard/index.html +0 -116
  76. package/coverage/src/components/infoCard/index.vue.html +0 -205
  77. package/coverage/src/components/infoText/index.html +0 -116
  78. package/coverage/src/components/infoText/index.vue.html +0 -595
  79. package/coverage/src/components/inputs/checkbox/Checkbox.stories.js.html +0 -256
  80. package/coverage/src/components/inputs/checkbox/index.html +0 -131
  81. package/coverage/src/components/inputs/checkbox/index.vue.html +0 -757
  82. package/coverage/src/components/inputs/inputNumber/InputNumber.stories.js.html +0 -535
  83. package/coverage/src/components/inputs/inputNumber/index.html +0 -131
  84. package/coverage/src/components/inputs/inputNumber/index.vue.html +0 -2452
  85. package/coverage/src/components/inputs/inputNumberQuestion/index.html +0 -116
  86. package/coverage/src/components/inputs/inputNumberQuestion/index.vue.html +0 -739
  87. package/coverage/src/components/inputs/inputText/InputText.stories.js.html +0 -310
  88. package/coverage/src/components/inputs/inputText/index.html +0 -131
  89. package/coverage/src/components/inputs/inputText/index.vue.html +0 -1213
  90. package/coverage/src/components/inputs/radioButton/RadioButton.stories.js.html +0 -259
  91. package/coverage/src/components/inputs/radioButton/index.html +0 -131
  92. package/coverage/src/components/inputs/radioButton/index.vue.html +0 -904
  93. package/coverage/src/components/inputs/searchInput/SearchInput.stories.js.html +0 -205
  94. package/coverage/src/components/inputs/searchInput/index.html +0 -131
  95. package/coverage/src/components/inputs/searchInput/index.vue.html +0 -538
  96. package/coverage/src/components/inputs/select/index.html +0 -131
  97. package/coverage/src/components/inputs/select/index.vue.html +0 -2809
  98. package/coverage/src/components/inputs/select/option/index.html +0 -116
  99. package/coverage/src/components/inputs/select/option/index.vue.html +0 -529
  100. package/coverage/src/components/inputs/select/select.stories.js.html +0 -259
  101. package/coverage/src/components/inputs/slider/index.html +0 -116
  102. package/coverage/src/components/inputs/slider/index.vue.html +0 -463
  103. package/coverage/src/components/inputs/switchField/index.html +0 -116
  104. package/coverage/src/components/inputs/switchField/index.vue.html +0 -847
  105. package/coverage/src/components/inputs/textAreaInput/TextAreaInput.stories.js.html +0 -466
  106. package/coverage/src/components/inputs/textAreaInput/index.html +0 -131
  107. package/coverage/src/components/inputs/textAreaInput/index.vue.html +0 -679
  108. package/coverage/src/components/inputs/toggle/Toggle.stories.js.html +0 -316
  109. package/coverage/src/components/inputs/toggle/index.html +0 -131
  110. package/coverage/src/components/inputs/toggle/index.vue.html +0 -1036
  111. package/coverage/src/components/label/index.html +0 -116
  112. package/coverage/src/components/label/index.vue.html +0 -382
  113. package/coverage/src/components/markerItem/index.html +0 -116
  114. package/coverage/src/components/markerItem/index.vue.html +0 -349
  115. package/coverage/src/components/modals/actionModal/index.html +0 -116
  116. package/coverage/src/components/modals/actionModal/index.vue.html +0 -277
  117. package/coverage/src/components/modals/infoModal/index.html +0 -116
  118. package/coverage/src/components/modals/infoModal/index.vue.html +0 -241
  119. package/coverage/src/components/modals/modal/index.html +0 -131
  120. package/coverage/src/components/modals/modal/index.vue.html +0 -649
  121. package/coverage/src/components/modals/modal/modal.stories.js.html +0 -178
  122. package/coverage/src/components/navigationTabs/index.html +0 -116
  123. package/coverage/src/components/navigationTabs/index.vue.html +0 -427
  124. package/coverage/src/components/pageSubtitle/index.html +0 -116
  125. package/coverage/src/components/pageSubtitle/index.vue.html +0 -286
  126. package/coverage/src/components/pageTitle/index.html +0 -116
  127. package/coverage/src/components/pageTitle/index.vue.html +0 -289
  128. package/coverage/src/components/pagination/index.html +0 -116
  129. package/coverage/src/components/pagination/index.vue.html +0 -529
  130. package/coverage/src/components/progressBar/index.html +0 -116
  131. package/coverage/src/components/progressBar/index.vue.html +0 -460
  132. package/coverage/src/components/projectMarker/index.html +0 -116
  133. package/coverage/src/components/projectMarker/index.vue.html +0 -985
  134. package/coverage/src/components/rangeSlider/Slider.vue.html +0 -1804
  135. package/coverage/src/components/rangeSlider/index.html +0 -131
  136. package/coverage/src/components/rangeSlider/index.vue.html +0 -1636
  137. package/coverage/src/components/rangeSlider/utils/dom.js.html +0 -232
  138. package/coverage/src/components/rangeSlider/utils/fns.js.html +0 -163
  139. package/coverage/src/components/rangeSlider/utils/index.html +0 -131
  140. package/coverage/src/components/selectedOptions/index.html +0 -116
  141. package/coverage/src/components/selectedOptions/index.vue.html +0 -520
  142. package/coverage/src/components/sideMenu/index.html +0 -116
  143. package/coverage/src/components/sideMenu/index.vue.html +0 -895
  144. package/coverage/src/components/spinner/index.html +0 -116
  145. package/coverage/src/components/spinner/index.vue.html +0 -289
  146. package/coverage/src/components/tableDropdown/index.html +0 -116
  147. package/coverage/src/components/tableDropdown/index.vue.html +0 -1999
  148. package/coverage/src/components/tables/mainTable/exampleNested.vue.html +0 -1069
  149. package/coverage/src/components/tables/mainTable/index.html +0 -131
  150. package/coverage/src/components/tables/mainTable/index.vue.html +0 -1615
  151. package/coverage/src/components/tables/viewTable/index.html +0 -116
  152. package/coverage/src/components/tables/viewTable/index.vue.html +0 -670
  153. package/coverage/src/components/tabsHeader/index.html +0 -116
  154. package/coverage/src/components/tabsHeader/index.vue.html +0 -334
  155. package/coverage/src/components/threeDots/index.html +0 -116
  156. package/coverage/src/components/threeDots/index.vue.html +0 -1324
  157. package/coverage/src/components/videoThumbnail/index.html +0 -131
  158. package/coverage/src/components/videoThumbnail/index.vue.html +0 -394
  159. package/coverage/src/components/videoThumbnail/videoThumbnail.stories.js.html +0 -184
  160. package/coverage/src/helpers/currencyMapping.js.html +0 -169
  161. package/coverage/src/helpers/index.html +0 -146
  162. package/coverage/src/helpers/numberConverter.js.html +0 -394
  163. package/coverage/src/helpers/translateLang.js.html +0 -469
  164. package/coverage/src/index.html +0 -131
  165. package/coverage/src/mixins/index.html +0 -116
  166. package/coverage/src/mixins/inputValidations.js.html +0 -376
  167. package/coverage/src/router/dynamicRoutes.js.html +0 -154
  168. package/coverage/src/router/index.html +0 -116
  169. package/coverage/src/utils/index.html +0 -116
  170. package/coverage/src/utils/index.js.html +0 -121
  171. package/jest.config.js +0 -24
  172. package/postcss.config.js +0 -6
package/package.json CHANGED
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_reusable_components",
3
- "version": "7.33.6",
3
+ "version": "7.35.1",
4
+ "files": [
5
+ "dist",
6
+ "src"
7
+ ],
8
+ "main": "./dist/main.umd.js",
9
+ "module": "./dist/main.es.js",
4
10
  "private": false,
5
11
  "scripts": {
6
- "dev": "vue-cli-service serve",
7
- "build": "vue-cli-service build",
12
+ "dev": "vite",
13
+ "build": "vite build",
8
14
  "lint": "vue-cli-service lint",
9
15
  "storybook": "storybook dev -p 6006",
10
16
  "build-storybook": "storybook build",
@@ -14,52 +20,54 @@
14
20
  "prepublishOnly": "npm run test"
15
21
  },
16
22
  "dependencies": {
17
- "@storybook/vue3": "8.2.8",
23
+ "@originjs/vite-plugin-commonjs": "1.0.3",
18
24
  "@vue/compat": "3.3.4",
19
25
  "@vueform/slider": "2.1.10",
20
26
  "@vuepic/vue-datepicker": "6.1.0",
21
27
  "click-outside-vue3": "4.0.1",
22
- "html-loader": "0.5.5",
23
- "postcss": "8.4.25",
28
+ "storybook": "8.2.9",
29
+ "vite-plugin-require": "1.1.14",
24
30
  "vue": "3.3.4",
25
- "vue-router": "^4.4.2",
31
+ "vue-router": "4.2.2",
26
32
  "vue3-styled-components": "1.2.1",
27
33
  "vuedraggable": "4.1.0"
28
34
  },
29
35
  "devDependencies": {
30
- "@babel/core": "^7.25.2",
31
- "@babel/plugin-syntax-import-meta": "^7.10.4",
32
- "@babel/preset-env": "^7.25.3",
33
- "@chromatic-com/storybook": "^1.6.1",
34
- "@storybook/addon-essentials": "^8.2.8",
35
- "@storybook/addon-interactions": "^8.2.8",
36
- "@storybook/addon-links": "^8.2.8",
37
- "@storybook/addon-onboarding": "^8.2.8",
38
- "@storybook/addon-webpack5-compiler-swc": "^1.0.5",
39
- "@storybook/blocks": "^8.2.8",
40
- "@storybook/test": "^8.2.8",
41
- "@storybook/testing-library": "^0.2.1",
42
- "@storybook/vue3-webpack5": "^8.2.8",
43
- "@types/node": "^22.1.0",
44
- "@vue/cli-plugin-babel": "^5.0.8",
36
+ "@babel/core": "7.25.2",
37
+ "@babel/plugin-syntax-import-meta": "7.10.4",
38
+ "@babel/preset-env": "7.25.3",
39
+ "@chromatic-com/storybook": "1.6.1",
40
+ "@storybook/addon-essentials": "8.2.9",
41
+ "@storybook/addon-interactions": "8.2.9",
42
+ "@storybook/addon-links": "8.2.9",
43
+ "@storybook/addon-onboarding": "8.2.8",
44
+ "@storybook/blocks": "8.2.8",
45
+ "@storybook/test": "8.2.8",
46
+ "@storybook/vue3-vite": "8.2.9",
47
+ "@types/node": "22.1.0",
48
+ "@vitejs/plugin-vue": "4.0.0",
49
+ "@vue/cli-plugin-babel": "5.0.8",
45
50
  "@vue/cli-plugin-eslint": "5.0.8",
46
- "@vue/cli-service": "^5.0.8",
51
+ "@vue/cli-service": "5.0.8",
47
52
  "@vue/compiler-sfc": "3.3.4",
48
- "@vue/test-utils": "^2.4.6",
53
+ "@vue/test-utils": "2.4.6",
49
54
  "babel-eslint": "10.1.0",
50
- "babel-jest": "^26.6.3",
55
+ "babel-jest": "26.6.3",
51
56
  "eslint": "8.0.1",
52
57
  "eslint-config-prettier": "8.8.0",
53
58
  "eslint-plugin-prettier": "4.2.1",
54
- "eslint-plugin-storybook": "^0.8.0",
59
+ "eslint-plugin-storybook": "0.8.0",
55
60
  "eslint-plugin-vue": "9.14.1",
56
- "identity-obj-proxy": "^3.0.0",
57
- "jest": "^26.6.3",
61
+ "identity-obj-proxy": "3.0.0",
62
+ "jest": "26.6.3",
63
+ "jest-styled-components": "7.2.0",
64
+ "jsdom": "24.1.1",
58
65
  "prettier": "2.8.4",
59
- "storybook": "^8.2.8",
60
- "vue-jest": "^5.0.0-alpha.10",
61
- "vue-loader": "^17.4.2",
62
- "vue-svg-loader": "^0.16.0"
66
+ "vite": "4.0.0",
67
+ "vite-svg-loader": "5.1.0",
68
+ "vue-jest": "5.0.0-alpha.10",
69
+ "vue-loader": "17.4.2",
70
+ "vue-svg-loader": "0.16.0"
63
71
  },
64
72
  "browserslist": [
65
73
  "> 1%",
@@ -67,7 +75,6 @@
67
75
  "not dead"
68
76
  ],
69
77
  "description": "## Project setup ``` npm install ```",
70
- "main": "babel.config.js",
71
78
  "repository": {
72
79
  "type": "git",
73
80
  "url": "git+https://aaronenser@bitbucket.org/eturnitydevs/eturnity_reusable_components.git"
package/src/Test.vue CHANGED
@@ -1,5 +1,7 @@
1
1
  <template>
2
2
  <PageContainer>
3
+ <IconComponent color="red" cursor="pointer" name="House" size="30px" />
4
+ <MainButton icon="bell" text="Click ME" type="secondary" />
3
5
  <AddNewButton />
4
6
  <ToggleComponent
5
7
  :disabled="false"
@@ -58,6 +60,8 @@
58
60
 
59
61
  <hr />
60
62
  <button @click="value = 42">Click to set at 42</button>
63
+ <br />
64
+ <IconCollection />
61
65
  </PageContainer>
62
66
  </template>
63
67
 
@@ -65,7 +69,10 @@
65
69
  import styled from 'vue3-styled-components'
66
70
  import InputNumber from '@/components/inputs/inputNumber'
67
71
  import ToggleComponent from '@/components/inputs/toggle'
72
+ import IconCollection from '@/components/icon/iconCollection'
68
73
  import AddNewButton from '@/components/addNewButton'
74
+ import MainButton from '@/components/buttons/mainButton'
75
+ import IconComponent from '@/components/icon'
69
76
 
70
77
  const PageContainer = styled.div`
71
78
  padding: 40px;
@@ -77,7 +84,10 @@
77
84
  PageContainer,
78
85
  InputNumber,
79
86
  ToggleComponent,
87
+ IconCollection,
80
88
  AddNewButton,
89
+ MainButton,
90
+ IconComponent,
81
91
  },
82
92
  data() {
83
93
  return {
@@ -5,5 +5,5 @@
5
5
  </pattern>
6
6
  </defs>
7
7
  <rect width="16" height="16" fill="url(#pattern_Z6wSY)" :opacity="1" />
8
- </g>
9
8
  </svg>
9
+
@@ -0,0 +1,51 @@
1
+ import MainButton from './index.vue'
2
+
3
+ export default {
4
+ title: 'MainButton',
5
+ component: MainButton,
6
+ tags: ['autodocs'],
7
+ }
8
+
9
+ export const DefaultButton = {
10
+ args: {
11
+ type: 'primary',
12
+ text: 'Click me',
13
+ },
14
+ }
15
+
16
+ export const SecondaryButton = {
17
+ args: {
18
+ type: 'secondary',
19
+ text: 'Click me',
20
+ },
21
+ }
22
+
23
+ export const CancelButton = {
24
+ args: {
25
+ type: 'cancel',
26
+ text: 'Click me',
27
+ },
28
+ }
29
+
30
+ export const DisabledButton = {
31
+ args: {
32
+ text: 'Click me',
33
+ isDisabled: true,
34
+ },
35
+ }
36
+
37
+ export const CustomColorButton = {
38
+ args: {
39
+ text: 'Click me',
40
+ customColor: '#0068DE',
41
+ fontColor: '#fdb813',
42
+ },
43
+ }
44
+
45
+ export const IconButton = {
46
+ args: {
47
+ text: 'Click me',
48
+ icon: 'bell',
49
+ customColor: '#fdb813',
50
+ },
51
+ }
@@ -10,26 +10,26 @@
10
10
  :no-wrap="noWrap"
11
11
  :type="type"
12
12
  >
13
- <Label :has-icon="Boolean(icon)">
13
+ <LabelComponent :has-icon="Boolean(icon)">
14
14
  <Icon v-if="icon" :name="icon" size="14px" />
15
15
  {{ text }}
16
- </Label>
16
+ </LabelComponent>
17
17
  </ButtonContainer>
18
18
  </PageContainer>
19
19
  </template>
20
20
 
21
21
  <script>
22
- // To use:
23
- // import RCMainButton from "@eturnity/eturnity_reusable_components/src/components/buttons/mainButton"
24
- // <RCMainButton
25
- // text="Click Me"
26
- // customColor="#ab5348"
27
- // type="secondary" // primary, secondary, cancel
28
- // icon="icon-name" // icon name from icon component
29
- // :isDisabled="true"
30
- // :minWidth="minWidth"
31
- // :data-id="test_data_id"
32
- // />
22
+ // To use:
23
+ // import RCMainButton from "@eturnity/eturnity_reusable_components/src/components/buttons/mainButton"
24
+ // <RCMainButton
25
+ // text="Click Me"
26
+ // customColor="#ab5348"
27
+ // type="secondary" // primary, secondary, cancel
28
+ // icon="icon-name" // icon name from icon component
29
+ // :isDisabled="true"
30
+ // :minWidth="minWidth"
31
+ // :data-id="test_data_id"
32
+ // />
33
33
 
34
34
  import styled from 'vue3-styled-components'
35
35
  import Icon from '../../icon'
@@ -81,7 +81,7 @@
81
81
  hasIcon: Boolean,
82
82
  }
83
83
 
84
- const Label = styled('span', LabelAttrs)`
84
+ const LabelComponent = styled('span', LabelAttrs)`
85
85
  display: flex;
86
86
  align-items: center;
87
87
  justify-content: center;
@@ -92,7 +92,7 @@
92
92
  name: 'MainButton',
93
93
  components: {
94
94
  Icon,
95
- Label,
95
+ LabelComponent,
96
96
  PageContainer,
97
97
  ButtonContainer,
98
98
  },
@@ -100,36 +100,46 @@
100
100
  type: {
101
101
  required: false,
102
102
  default: 'primary',
103
+ type: String,
103
104
  },
104
105
  isDisabled: {
105
106
  required: false,
106
107
  default: false,
108
+ type: Boolean,
107
109
  },
108
110
  icon: {
109
111
  required: false,
110
112
  default: null,
113
+ type: String,
111
114
  },
112
115
  text: {
113
116
  required: true,
117
+ type: String,
114
118
  },
115
119
  customColor: {
116
120
  required: false,
117
121
  default: null,
122
+ type: String,
118
123
  },
119
124
  fontColor: {
120
125
  required: false,
126
+ default: '',
127
+ type: String,
121
128
  },
122
129
  noWrap: {
123
130
  required: false,
124
131
  default: false,
132
+ type: Boolean,
125
133
  },
126
134
  minWidth: {
127
135
  required: false,
128
136
  default: null,
137
+ type: String,
129
138
  },
130
139
  id: {
131
140
  required: false,
132
141
  default: null,
142
+ type: String,
133
143
  },
134
144
  dataId: {
135
145
  type: String,
@@ -0,0 +1,35 @@
1
+ /* eslint-disable */
2
+ import { mount } from '@vue/test-utils'
3
+ import MainButton from '@/components/buttons/mainButton'
4
+ import theme from '@/assets/theme'
5
+
6
+ jest.mock('@/components/icon/iconCache.mjs', () => ({
7
+ // need to mock this due to how jest handles import.meta
8
+ fetchIcon: jest.fn(() => Promise.resolve('mocked-icon-url.svg')),
9
+ }))
10
+
11
+ describe('MainButton.vue', () => {
12
+ let wrapper
13
+
14
+ beforeEach(() => {
15
+ wrapper = mount(MainButton, {
16
+ props: {
17
+ type: 'primary',
18
+ text: 'Click me',
19
+ isDisabled: false,
20
+ dataId: 'button_wrapper',
21
+ },
22
+ global: {
23
+ provide: {
24
+ theme,
25
+ },
26
+ },
27
+ })
28
+ })
29
+
30
+ it('button is rendered with correct props', async () => {
31
+ await wrapper.vm.$nextTick()
32
+ const buttonWrapper = wrapper.find('[data-id="button_wrapper"]')
33
+ expect(buttonWrapper.exists()).toBe(true)
34
+ })
35
+ })
@@ -49,8 +49,22 @@
49
49
  }
50
50
  },
51
51
 
52
- mounted() {
53
- this.importAll(require.context('../../assets/svgIcons/', true, /\.svg$/))
52
+ // mounted() {
53
+ // this.importAll(require.context('../../assets/svgIcons/', true, /\.svg$/))
54
+ // },
55
+ async mounted() {
56
+ // Use import.meta.glob to import SVGs dynamically
57
+ const icons = import.meta.glob('../../assets/svgIcons/*.svg')
58
+
59
+ for (const path in icons) {
60
+ const module = await icons[path]()
61
+
62
+ this.iconList.push({
63
+ pathLong: module.default,
64
+ pathShort: path,
65
+ name: path.replace('.svg', '').replace('../../assets/svgIcons/', ''),
66
+ })
67
+ }
54
68
  },
55
69
 
56
70
  methods: {
@@ -3,55 +3,61 @@ import Checkbox from './index.vue'
3
3
  export default {
4
4
  title: 'Checkbox',
5
5
  component: Checkbox,
6
- // argTypes: {},
6
+ tags: ['autodocs'],
7
7
  }
8
8
 
9
- const Template = (args, { argTypes }) => ({
10
- // Components used in your story `template` are defined in the `components` object
11
- components: { Checkbox },
12
- // The story's `args` need to be mapped into the template through the `setup()` method
13
- props: Object.keys(argTypes),
14
- template: '<checkbox v-bind="$props" />',
15
-
16
- // import Checkbox from "@eturnity/eturnity_reusable_components/src/components/inputs/checkbox"
17
- //To use:
18
- // <checkbox
19
- // label="Do you accept the Terms?"
20
- // :isChecked="isChecked" //required
21
- // @on-event-handler="onInputChange($event)" //required
22
- // checkColor="blue"
23
- // size="small"
24
- // backgroundColor="red"
25
- // :isDisabled="true"
26
- // />
27
- })
28
-
29
- export const Default = Template.bind({})
30
- Default.args = {
31
- isChecked: true,
32
- size: 'medium', // "small" or "medium"
33
- isDisabled: false,
9
+ // <checkbox
10
+ // label="Do you accept the Terms?"
11
+ // :isChecked="isChecked" //required
12
+ // @on-event-handler="onInputChange($event)" //required
13
+ // checkColor="blue"
14
+ // size="small"
15
+ // backgroundColor="red"
16
+ // :isDisabled="true"
17
+ // cursorType="default"
18
+ // />
19
+
20
+ export const DefaultCheckbox = {
21
+ args: {
22
+ isChecked: 'false',
23
+ },
24
+ }
25
+
26
+ export const IsChecked = {
27
+ args: {
28
+ isChecked: 'true',
29
+ },
30
+ }
31
+
32
+ export const CheckboxLabel = {
33
+ args: {
34
+ isChecked: 'false',
35
+ label: 'Click me',
36
+ },
34
37
  }
35
38
 
36
- export const Small = Template.bind({})
37
- Small.args = {
38
- isChecked: true,
39
- size: 'small', // "small" or "medium"
40
- isDisabled: false,
39
+ export const SmallCheckbox = {
40
+ args: {
41
+ isChecked: 'false',
42
+ label: 'Click me',
43
+ size: 'small',
44
+ },
41
45
  }
42
46
 
43
- export const CustomColor = Template.bind({})
44
- CustomColor.args = {
45
- isChecked: true,
46
- size: 'medium', // "small" or "medium"
47
- checkColor: 'blue',
48
- backgroundColor: 'red',
49
- isDisabled: false,
47
+ export const DisabledCheckbox = {
48
+ args: {
49
+ isChecked: false,
50
+ label: 'Click me',
51
+ size: 'small',
52
+ isDisabled: 'true',
53
+ },
50
54
  }
51
55
 
52
- export const Disabled = Template.bind({})
53
- Disabled.args = {
54
- isChecked: false,
55
- size: 'medium', // "small" or "medium"
56
- isDisabled: true,
56
+ export const CustomColor = {
57
+ args: {
58
+ isChecked: 'false',
59
+ size: 'medium',
60
+ checkColor: 'blue',
61
+ backgroundColor: 'yellow',
62
+ },
57
63
  }
@@ -0,0 +1,109 @@
1
+ /* eslint-disable */
2
+ import { mount } from '@vue/test-utils'
3
+ import Checkbox from '@/components/inputs/checkbox'
4
+ import theme from '@/assets/theme'
5
+
6
+ describe('Checkbox Component', () => {
7
+ let wrapper
8
+
9
+ beforeEach(() => {
10
+ wrapper = mount(Checkbox, {
11
+ props: {
12
+ isChecked: false,
13
+ label: 'Click me',
14
+ isDisabled: false,
15
+ dataId: 'checkbox_wrapper',
16
+ },
17
+ global: {
18
+ provide: {
19
+ theme,
20
+ },
21
+ },
22
+ })
23
+ })
24
+ it('checkbox is rendered and emits correct payload on change', async () => {
25
+ const checkboxWrapper = wrapper.find('[data-test-id="checkbox_wrapper"]')
26
+
27
+ // check that the element exists with correct props
28
+ expect(checkboxWrapper.exists()).toBe(true)
29
+ expect(wrapper.vm.isChecked).toBe(false)
30
+ expect(wrapper.vm.label).toBe('Click me')
31
+ expect(wrapper.vm.size).toBe('medium')
32
+ expect(wrapper.vm.isDisabled).toBe(false)
33
+
34
+ // Test the change
35
+ const inputCheckbox = checkboxWrapper.find('input[type="checkbox"]')
36
+ await inputCheckbox.trigger('change')
37
+ expect(wrapper.emitted('on-event-handler')).toBeTruthy()
38
+ const emittedEvent = wrapper.emitted('on-event-handler')
39
+ // To inspect emitted events:
40
+ expect(emittedEvent).toHaveLength(1) // Check if the event was emitted exactly once
41
+ // Check the payload of the event
42
+ expect(emittedEvent[0]).toEqual([true])
43
+ })
44
+ it('disabled should not emit anything', async () => {
45
+ const checkboxWrapper = wrapper.find('[data-test-id="checkbox_wrapper"]')
46
+ await wrapper.setProps({ isDisabled: true })
47
+
48
+ // check that the element exists with correct props
49
+ expect(checkboxWrapper.exists()).toBe(true)
50
+ expect(wrapper.vm.isDisabled).toBe(true)
51
+
52
+ // Test the change
53
+ const inputCheckbox = checkboxWrapper.find('input[type="checkbox"]')
54
+ await inputCheckbox.trigger('change')
55
+ // expect(wrapper.emitted('on-event-handler')).toBeTruthy()
56
+ const emittedEvents = wrapper.emitted('on-event-handler')
57
+ // To inspect emitted events:
58
+ expect(emittedEvents).toBeUndefined() // No event should be emitted
59
+ })
60
+ it('checkbox can handle multiple clicks', async () => {
61
+ const checkboxWrapper = wrapper.find('[data-test-id="checkbox_wrapper"]')
62
+
63
+ // check that the element exists with correct props
64
+ expect(checkboxWrapper.exists()).toBe(true)
65
+ expect(wrapper.vm.isChecked).toBe(false)
66
+
67
+ // Test the change
68
+ const inputCheckbox = checkboxWrapper.find('input[type="checkbox"]')
69
+ await inputCheckbox.trigger('change')
70
+ expect(wrapper.emitted('on-event-handler')).toBeTruthy()
71
+ const emittedEvent = wrapper.emitted('on-event-handler')
72
+ expect(emittedEvent).toHaveLength(1) // Check if the event was emitted exactly once
73
+ // Check the payload of the event
74
+ expect(emittedEvent[0]).toEqual([true])
75
+ await wrapper.setProps({ isChecked: true }) // manually update the props
76
+
77
+ // test the 2nd click
78
+ await inputCheckbox.trigger('change')
79
+ expect(wrapper.emitted('on-event-handler')).toBeTruthy()
80
+ expect(emittedEvent).toHaveLength(2) // Check if the event was emitted exactly once
81
+ // Check the payload of the event
82
+ expect(emittedEvent[1]).toEqual([false])
83
+ await wrapper.setProps({ isChecked: false }) // manually update the props
84
+
85
+ // test the 3rd click
86
+ await inputCheckbox.trigger('change')
87
+ expect(wrapper.emitted('on-event-handler')).toBeTruthy()
88
+ expect(emittedEvent).toHaveLength(3) // Check if the event was emitted exactly once
89
+ // Check the payload of the event
90
+ expect(emittedEvent[2]).toEqual([true])
91
+ await wrapper.setProps({ isChecked: true }) // manually update the props
92
+ })
93
+ it('should have a custom background color', async () => {
94
+ const checkboxWrapper = wrapper.find('[data-test-id="checkbox_wrapper"]')
95
+ await wrapper.setProps({ backgroundColor: theme.colors.red })
96
+
97
+ // check that the element exists with correct props
98
+ expect(checkboxWrapper.exists()).toBe(true)
99
+ expect(wrapper.vm.backgroundColor).toBe(theme.colors.red)
100
+ })
101
+ it('should have a custom checkbox color', async () => {
102
+ const checkboxWrapper = wrapper.find('[data-test-id="checkbox_wrapper"]')
103
+ await wrapper.setProps({ checkColor: theme.colors.brightBlue })
104
+
105
+ // check that the element exists with correct props
106
+ expect(checkboxWrapper.exists()).toBe(true)
107
+ expect(wrapper.vm.checkColor).toBe(theme.colors.brightBlue)
108
+ })
109
+ })
@@ -4,6 +4,7 @@
4
4
  :background-color="backgroundColor"
5
5
  :check-color="checkColor"
6
6
  :cursor-type="cursorType"
7
+ :data-test-id="dataId"
7
8
  :has-label="hasLabel"
8
9
  :is-checked="isChecked"
9
10
  :is-disabled="isDisabled"
@@ -9,7 +9,7 @@ jest.mock('@/components/icon/iconCache.mjs', () => ({
9
9
  }))
10
10
 
11
11
  describe('RCToggle.vue', () => {
12
- it('checkbox is rendered and emits correct payload on change', async () => {
12
+ it('toggle is rendered and emits correct payload on change', async () => {
13
13
  const wrapper = mount(RCToggle, {
14
14
  props: { isChecked: true, label: 'Test label', disabled: false },
15
15
  global: {
@@ -42,7 +42,7 @@ describe('RCToggle.vue', () => {
42
42
  // Check the payload of the event
43
43
  expect(emittedEvent[0]).toEqual([false])
44
44
  }),
45
- it('checkbox disabled does not emit anything', async () => {
45
+ it('toggle disabled does not emit anything', async () => {
46
46
  const wrapper = mount(RCToggle, {
47
47
  props: { isChecked: false, disabled: true },
48
48
  global: {
@@ -1,4 +1,4 @@
1
- import MyButton from './Button.vue';
1
+ import MyButton from './Button.vue'
2
2
 
3
3
  // More on how to set up stories at: https://storybook.js.org/docs/vue/writing-stories/introduction
4
4
  export default {
@@ -17,7 +17,7 @@ export default {
17
17
  options: ['small', 'medium', 'large'],
18
18
  },
19
19
  },
20
- };
20
+ }
21
21
 
22
22
  // More on writing stories with args: https://storybook.js.org/docs/vue/writing-stories/args
23
23
  export const Primary = {
@@ -25,24 +25,24 @@ export const Primary = {
25
25
  primary: true,
26
26
  label: 'Button',
27
27
  },
28
- };
28
+ }
29
29
 
30
30
  export const Secondary = {
31
31
  args: {
32
32
  label: 'Button',
33
33
  },
34
- };
34
+ }
35
35
 
36
36
  export const Large = {
37
37
  args: {
38
38
  size: 'large',
39
39
  label: 'Button',
40
40
  },
41
- };
41
+ }
42
42
 
43
43
  export const Small = {
44
44
  args: {
45
45
  size: 'small',
46
46
  label: 'Button',
47
47
  },
48
- };
48
+ }