@eturnity/eturnity_reusable_components 1.2.22-EPDM-5202.1 → 1.2.23

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_reusable_components",
3
- "version": "1.2.22-EPDM-5202.1",
3
+ "version": "1.2.23",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "dev": "vue-cli-service serve",
package/src/App.vue CHANGED
@@ -2,8 +2,8 @@
2
2
  <ThemeProvider :theme="getTheme()" :style="{ height: '100%' }">
3
3
  <page-container>
4
4
  <br />
5
- <modal backdrop="dark" :isLoading="false" :isOpen="false">
6
- <main-table titleText="My Table">
5
+ <!-- <modal backdrop="dark" :isLoading="false" :isOpen="false"> -->
6
+ <!-- <main-table titleText="My Table">
7
7
  <thead>
8
8
  <tr>
9
9
  <th>Column 1</th>
@@ -13,8 +13,8 @@
13
13
  </tr>
14
14
  </thead>
15
15
  <tbody>
16
- <tr>
17
- <!-- <table-dropdown
16
+ <tr> -->
17
+ <!-- <table-dropdown
18
18
  :colSpan="3"
19
19
  :tableItems="getDropdownValues()"
20
20
  @toggle-dropdown-open="toggleDropdownOpen()"
@@ -23,7 +23,7 @@
23
23
  :optionItems="itemOptions"
24
24
  :optionsDisplay="['display_name', 'company_item_number', 'model']"
25
25
  /> -->
26
- <td>Test</td>
26
+ <!-- <td>Test</td>
27
27
  <div class="icons-container">
28
28
  <three-dots :options="listOptions" :isLoading="false" />
29
29
  </div>
@@ -32,7 +32,7 @@
32
32
  </main-table>
33
33
  </modal>
34
34
  <row-container>
35
- <div v-for='(item, index) in markersArray' :key="item.index">
35
+ <div v-for="(item, index) in markersArray" :key="item.index">
36
36
  <project-marker
37
37
  :activeLanguage="'en-us'"
38
38
  :markerData="item"
@@ -58,23 +58,24 @@
58
58
  labelAlign="right"
59
59
  :disabled="false"
60
60
  />
61
- <br />
62
- <input-number
61
+ <br /> -->
62
+ <iconCollection />
63
+ <input-text
63
64
  placeholder="Enter distance"
64
- :numberPrecision="2"
65
65
  :value="inputValue"
66
66
  @input-change="onInputChange($event)"
67
+ type="password"
67
68
  />
68
69
  <br />
69
- <page-subtitle text="My Subtitle" infoText="My info Text" />
70
+ <!-- <page-subtitle text="My Subtitle" infoText="My info Text" />
70
71
  <spinner size="30px" />
71
72
  <checkbox
72
73
  label="Do you accept the Terms?"
73
74
  :isChecked="true"
74
75
  size="small"
75
76
  :isDisabled="false"
76
- />
77
- <external-button text="Click me!" minWidth="500px" />
77
+ /> -->
78
+ <!-- <external-button text="Click me!" minWidth="500px" /> -->
78
79
  </page-container>
79
80
  </ThemeProvider>
80
81
  </template>
@@ -83,46 +84,46 @@
83
84
  import { ThemeProvider } from 'vue-styled-components'
84
85
  import theme from './assets/theme'
85
86
  import styled from 'vue-styled-components'
86
- import MainTable from '@/components/tables/mainTable'
87
- import ThreeDots from '@/components/threeDots'
88
- import Toggle from '@/components/inputs/toggle'
89
- import InputNumber from '@/components/inputs/inputNumber'
90
- import Checkbox from '@/components/inputs/checkbox'
91
- import PageSubtitle from '@/components/pageSubtitle'
92
- import Spinner from '@/components/spinner'
93
- import ExternalButton from '@/components/buttons/externalButton'
94
- import ProjectMarker from '@/components/projectMarker'
87
+ // import MainTable from '@/components/tables/mainTable'
88
+ // import ThreeDots from '@/components/threeDots'
89
+ // import Toggle from '@/components/inputs/toggle'
90
+ import InputText from '@/components/inputs/inputText'
91
+ // import Checkbox from '@/components/inputs/checkbox'
92
+ // import PageSubtitle from '@/components/pageSubtitle'
93
+ // import Spinner from '@/components/spinner'
94
+ // import ExternalButton from '@/components/buttons/externalButton'
95
+ // import ProjectMarker from '@/components/projectMarker'
95
96
  import iconCollection from '@/components/icon/iconCollection'
96
- import Modal from '@/components/modals/modal'
97
+ // import Modal from '@/components/modals/modal'
97
98
  // import TableDropdown from "@/components/tableDropdown"
98
99
 
99
100
  const PageContainer = styled.div`
100
101
  padding: 40px;
101
102
  `
102
103
 
103
- const RowContainer = styled.div`
104
- display: inline-flex;
105
- gap: 10px;
106
- flex-wrap: wrap;
107
- `
104
+ // const RowContainer = styled.div`
105
+ // display: inline-flex;
106
+ // gap: 10px;
107
+ // flex-wrap: wrap;
108
+ // `
108
109
 
109
110
  export default {
110
111
  name: 'App',
111
112
  components: {
112
113
  ThemeProvider,
113
114
  PageContainer,
114
- MainTable,
115
- ThreeDots,
116
- Toggle,
117
- InputNumber,
118
- PageSubtitle,
119
- Spinner,
120
- Checkbox,
121
- ExternalButton,
122
- Modal,
123
- ProjectMarker,
124
- iconCollection,
125
- RowContainer
115
+ // MainTable,
116
+ // ThreeDots,
117
+ // Toggle,
118
+ InputText,
119
+ // PageSubtitle,
120
+ // Spinner,
121
+ // Checkbox,
122
+ // ExternalButton,
123
+ // Modal,
124
+ // ProjectMarker,
125
+ iconCollection
126
+ // RowContainer
126
127
  },
127
128
  data() {
128
129
  return {
@@ -132,7 +133,7 @@ export default {
132
133
  number_format_precision: 4,
133
134
  number_min_allowed: 0,
134
135
  number_max_allowed: 10,
135
- unit_short_name: 'cm',
136
+ unit_short_name: 'cm'
136
137
  },
137
138
  dropdownOpen: false,
138
139
  isChecked: false,
@@ -140,48 +141,114 @@ export default {
140
141
  {
141
142
  name: 'Option 1',
142
143
  value: 'option_1',
143
- disabled: true,
144
+ disabled: true
144
145
  },
145
146
  {
146
147
  name: 'Option 2',
147
- value: 'option_2',
148
+ value: 'option_2'
148
149
  },
149
150
  {
150
151
  name: 'Option 3',
151
- value: 'option_3',
152
+ value: 'option_3'
152
153
  },
153
154
  {
154
155
  name: 'Option 4',
155
- value: 'option_4',
156
- },
156
+ value: 'option_4'
157
+ }
157
158
  ],
158
159
  itemOptions: [
159
160
  {
160
161
  display_name: 'Test 1',
161
162
  company_item_number: '123',
162
163
  model: 'BTB-2145 Long Text Long Text Long Text Long Text Long Text',
163
- id: 1,
164
+ id: 1
164
165
  },
165
166
  {
166
167
  display_name: 'Test 2',
167
168
  company_item_number: '1234',
168
169
  model: 'BTB-123',
169
- id: 2,
170
+ id: 2
170
171
  },
171
172
  {
172
173
  display_name: 'Test 3',
173
174
  company_item_number: '12345',
174
175
  model: 'BTB-543',
175
- id: 3,
176
+ id: 3
176
177
  },
177
178
  {
178
179
  display_name: 'Test 4',
179
180
  company_item_number: '123456',
180
181
  model: 'BTB-4930',
181
- id: 4,
182
- },
182
+ id: 4
183
+ }
183
184
  ],
184
- markersArray: [{"id":1180,"choice":"project-on-hold","translations":{"fr":{"name":"fr - Project on hold"},"en-us":{"name":"Project on hold"},"it-ch":{"name":"it-ch - Project on hold"},"de-ch":{"name":"de-ch - Project on hold"},"fr-be":{"name":"fr-be - Project on hold"}},"color":"#D27CCA","can_be_deleted":true}, {"id":266,"choice":"transferred","translations":{"en-us":{"name":"Transferred"},"fr":{"name":"fr - Transferred"},"de-ch":{"name":"de-ch - Transferred"},"it-ch":{"name":"it-ch - Transferred"},"fr-be":{"name":"fr-be - Transferred"}},"color":"#20A4CA","can_be_deleted":false},{"id":267,"choice":"sold","translations":{"en-us":{"name":"Sold"},"fr":{"name":"Vendu"},"de-ch":{"name":"Verkauft"},"it-ch":{"name":"Venduto"},"fr-be":{"name":"Vendu"}},"color":"#008351","can_be_deleted":false},{"id":268,"choice":"lost","translations":{"en-us":{"name":"Lost"},"fr":{"name":"Perdu"},"de-ch":{"name":"Verloren"},"it-ch":{"name":"Perso"},"fr-be":{"name":"Perdu"}},"color":"#A52019","can_be_deleted":false},{"id":1181,"choice":"project-created","translations":{"fr":{"name":"Project created"},"en-us":{"name":"Project created"},"it-ch":{"name":"Project created"},"de-ch":{"name":"Project created"},"fr-be":{"name":"Project created"}},"color":"#FDB813","can_be_deleted":true}]
185
+ markersArray: [
186
+ {
187
+ id: 1180,
188
+ choice: 'project-on-hold',
189
+ translations: {
190
+ fr: { name: 'fr - Project on hold' },
191
+ 'en-us': { name: 'Project on hold' },
192
+ 'it-ch': { name: 'it-ch - Project on hold' },
193
+ 'de-ch': { name: 'de-ch - Project on hold' },
194
+ 'fr-be': { name: 'fr-be - Project on hold' }
195
+ },
196
+ color: '#D27CCA',
197
+ can_be_deleted: true
198
+ },
199
+ {
200
+ id: 266,
201
+ choice: 'transferred',
202
+ translations: {
203
+ 'en-us': { name: 'Transferred' },
204
+ fr: { name: 'fr - Transferred' },
205
+ 'de-ch': { name: 'de-ch - Transferred' },
206
+ 'it-ch': { name: 'it-ch - Transferred' },
207
+ 'fr-be': { name: 'fr-be - Transferred' }
208
+ },
209
+ color: '#20A4CA',
210
+ can_be_deleted: false
211
+ },
212
+ {
213
+ id: 267,
214
+ choice: 'sold',
215
+ translations: {
216
+ 'en-us': { name: 'Sold' },
217
+ fr: { name: 'Vendu' },
218
+ 'de-ch': { name: 'Verkauft' },
219
+ 'it-ch': { name: 'Venduto' },
220
+ 'fr-be': { name: 'Vendu' }
221
+ },
222
+ color: '#008351',
223
+ can_be_deleted: false
224
+ },
225
+ {
226
+ id: 268,
227
+ choice: 'lost',
228
+ translations: {
229
+ 'en-us': { name: 'Lost' },
230
+ fr: { name: 'Perdu' },
231
+ 'de-ch': { name: 'Verloren' },
232
+ 'it-ch': { name: 'Perso' },
233
+ 'fr-be': { name: 'Perdu' }
234
+ },
235
+ color: '#A52019',
236
+ can_be_deleted: false
237
+ },
238
+ {
239
+ id: 1181,
240
+ choice: 'project-created',
241
+ translations: {
242
+ fr: { name: 'Project created' },
243
+ 'en-us': { name: 'Project created' },
244
+ 'it-ch': { name: 'Project created' },
245
+ 'de-ch': { name: 'Project created' },
246
+ 'fr-be': { name: 'Project created' }
247
+ },
248
+ color: '#FDB813',
249
+ can_be_deleted: true
250
+ }
251
+ ]
185
252
  }
186
253
  },
187
254
  methods: {
@@ -212,21 +279,21 @@ export default {
212
279
  {
213
280
  value: this.getComponentInfo({
214
281
  row: this.itemOptions[0],
215
- value: 'display_name',
216
- }),
282
+ value: 'display_name'
283
+ })
217
284
  },
218
285
  {
219
286
  value: this.getComponentInfo({
220
287
  row: this.itemOptions[0],
221
- value: 'company_item_number',
222
- }),
288
+ value: 'company_item_number'
289
+ })
223
290
  },
224
291
  {
225
292
  value: this.getComponentInfo({
226
293
  row: this.itemOptions[0],
227
- value: 'model',
228
- }),
229
- },
294
+ value: 'model'
295
+ })
296
+ }
230
297
  ]
231
298
  return items
232
299
  },
@@ -240,8 +307,8 @@ export default {
240
307
  item = '-'
241
308
  }
242
309
  return item
243
- },
244
- },
310
+ }
311
+ }
245
312
  }
246
313
  </script>
247
314
 
@@ -19,6 +19,7 @@
19
19
  // color="red"
20
20
  // hoveredColor="blue"
21
21
  // size="60px" by default, this is 30px
22
+ // cursor="default"
22
23
  // />
23
24
 
24
25
  import styled from 'vue-styled-components'
@@ -14,26 +14,41 @@
14
14
  :alignText="infoTextAlign"
15
15
  />
16
16
  </label-wrapper>
17
- <input-container
18
- :placeholder="placeholder"
19
- :isError="isError"
20
- :inputWidth="inputWidth"
21
- :minWidth="minWidth"
22
- :value="value"
23
- @input="onChangeHandler"
24
- :noBorder="noBorder"
25
- :disabled="disabled"
26
- :isDisabled="disabled"
27
- :fontSize="fontSize"
28
- />
17
+ <icon-container>
18
+ <input-container
19
+ :placeholder="placeholder"
20
+ :isError="isError"
21
+ :inputWidth="inputWidth"
22
+ :minWidth="minWidth"
23
+ :value="value"
24
+ @input="onChangeHandler"
25
+ :noBorder="noBorder"
26
+ :disabled="disabled"
27
+ :isDisabled="disabled"
28
+ :fontSize="fontSize"
29
+ :inputType="inputType"
30
+ :type="inputTypeData"
31
+ />
32
+ <icon-wrapper
33
+ v-if="inputType === 'password' && !isError"
34
+ @click="toggleShowPassword()"
35
+ size="20px"
36
+ >
37
+ <icon name="current_variant" size="20px" />
38
+ </icon-wrapper>
39
+ <icon-wrapper v-if="isError" size="16px">
40
+ <icon name="warning" size="16px" cursor="default" />
41
+ </icon-wrapper>
42
+ </icon-container>
29
43
  </input-wrapper>
30
44
  <error-message v-if="isError">{{ errorMessage }}</error-message>
31
45
  </container>
32
46
  </template>
33
47
 
34
48
  <script>
35
- import styled from "vue-styled-components"
36
- import InfoText from "../../infoText"
49
+ import styled from 'vue-styled-components'
50
+ import InfoText from '../../infoText'
51
+ import Icon from '../../icon'
37
52
 
38
53
  const Container = styled.div`
39
54
  width: 100%;
@@ -41,17 +56,16 @@ const Container = styled.div`
41
56
  `
42
57
 
43
58
  const labelAttrs = { fontSize: String }
44
- const InputLabel = styled("div", labelAttrs)`
59
+ const InputLabel = styled('div', labelAttrs)`
45
60
  font-weight: bold;
46
- font-size: ${(props) => (props.fontSize ? props.fontSize : "13px")};
61
+ font-size: ${(props) => (props.fontSize ? props.fontSize : '13px')};
47
62
  `
48
63
 
49
64
  const LabelWrapper = styled.div`
50
65
  display: inline-grid;
51
- grid-template-columns: auto auto;
66
+ grid-template-columns: auto 1fr;
52
67
  grid-gap: 12px;
53
68
  align-items: center;
54
- justify-content: start;
55
69
  `
56
70
 
57
71
  const inputProps = {
@@ -61,29 +75,35 @@ const inputProps = {
61
75
  noBorder: Boolean,
62
76
  isDisabled: Boolean,
63
77
  fontSize: String,
78
+ inputType: String
64
79
  }
65
- const InputContainer = styled("input", inputProps)`
80
+ const InputContainer = styled('input', inputProps)`
66
81
  border: ${(props) =>
67
82
  props.isError
68
- ? "1px solid " + props.theme.colors.red
83
+ ? '1px solid ' + props.theme.colors.red
69
84
  : props.noBorder
70
- ? "none"
85
+ ? 'none'
71
86
  : props.hasLength
72
- ? "1px solid " + props.theme.colors.black
73
- : "1px solid " + props.theme.colors.mediumGray};
87
+ ? '1px solid ' + props.theme.colors.black
88
+ : '1px solid ' + props.theme.colors.mediumGray};
74
89
  padding: ${(props) =>
75
- props.hasUnit ? "11px 40px 11px 10px" : "11px 5px 11px 10px"};
90
+ props.isError
91
+ ? '11px 25px 11px 10px'
92
+ : props.inputType === 'password'
93
+ ? '11px 25px 11px 10px'
94
+ : '11px 5px 11px 10px'};
76
95
  border-radius: 4px;
77
- font-size: ${(props) => (props.fontSize ? props.fontSize : "16px")};
96
+ position: relative;
97
+ font-size: ${(props) => (props.fontSize ? props.fontSize : '16px')};
78
98
  color: ${(props) =>
79
99
  props.isError ? props.theme.colors.red : props.theme.colors.black};
80
- width: ${(props) => (props.inputWidth ? props.inputWidth : "100%")};
81
- min-width: ${(props) => (props.minWidth ? props.minWidth : "unset")};
100
+ width: ${(props) => (props.inputWidth ? props.inputWidth : '100%')};
101
+ min-width: ${(props) => (props.minWidth ? props.minWidth : 'unset')};
82
102
  box-sizing: border-box; // to allow width of 100% with padding
83
103
  font-weight: 500;
84
- cursor: ${(props) => (props.isDisabled ? "not-allowed" : "auto")};
104
+ cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'auto')};
85
105
  background-color: ${(props) =>
86
- props.isDisabled ? props.theme.colors.grey5 : "#fff"};
106
+ props.isDisabled ? props.theme.colors.grey5 : '#fff'};
87
107
 
88
108
  &::placeholder {
89
109
  color: ${(props) =>
@@ -96,13 +116,13 @@ const InputContainer = styled("input", inputProps)`
96
116
  `
97
117
 
98
118
  const inputAttrs = { alignItems: String, hasLabel: Boolean }
99
- const InputWrapper = styled("div", inputAttrs)`
119
+ const InputWrapper = styled('div', inputAttrs)`
100
120
  position: relative;
101
121
  display: grid;
102
122
  align-items: center;
103
123
  gap: 8px;
104
124
  grid-template-columns: ${(props) =>
105
- props.alignItems === "vertical" || !props.hasLabel ? "1fr" : "auto 1fr"};
125
+ props.alignItems === 'vertical' || !props.hasLabel ? '1fr' : 'auto 1fr'};
106
126
  `
107
127
 
108
128
  const ErrorMessage = styled.div`
@@ -112,6 +132,20 @@ const ErrorMessage = styled.div`
112
132
  top: calc(100% + 1px);
113
133
  `
114
134
 
135
+ const IconAttrs = { size: String }
136
+ const IconWrapper = styled('div', IconAttrs)`
137
+ position: absolute;
138
+ top: 0;
139
+ bottom: 0;
140
+ margin: auto;
141
+ right: 5px;
142
+ height: ${(props) => (props.size ? props.size : 'auto')};
143
+ `
144
+
145
+ const IconContainer = styled.div`
146
+ position: relative;
147
+ `
148
+
115
149
  export default {
116
150
  // import InputText from "@eturnity/eturnity_reusable_components/src/components/inputs/inputText"
117
151
  // To use:
@@ -129,7 +163,7 @@ export default {
129
163
  // minWidth="100px"
130
164
  // fontSize="13px"
131
165
  // />
132
- name: "input-text",
166
+ name: 'input-text',
133
167
  components: {
134
168
  Container,
135
169
  InputContainer,
@@ -138,62 +172,81 @@ export default {
138
172
  InfoText,
139
173
  InputLabel,
140
174
  LabelWrapper,
175
+ Icon,
176
+ IconWrapper,
177
+ IconContainer
178
+ },
179
+ data() {
180
+ return {
181
+ inputTypeData: 'text'
182
+ }
141
183
  },
142
184
  props: {
143
185
  placeholder: {
144
186
  required: false,
145
- default: "",
187
+ default: ''
146
188
  },
147
189
  alignItems: {
148
190
  required: false,
149
- default: "horizontal",
191
+ default: 'horizontal'
150
192
  },
151
193
  isError: {
152
194
  required: false,
153
- default: false,
195
+ default: false
154
196
  },
155
197
  inputWidth: {
156
198
  required: false,
157
- default: null,
199
+ default: null
158
200
  },
159
201
  minWidth: {
160
202
  required: false,
161
- default: null,
203
+ default: null
162
204
  },
163
205
  value: {
164
206
  required: true,
165
- default: null,
207
+ default: null
166
208
  },
167
209
  errorMessage: {
168
210
  required: false,
169
- default: "",
211
+ default: ''
170
212
  },
171
213
  infoTextMessage: {
172
- required: false,
214
+ required: false
173
215
  },
174
216
  infoTextAlign: {
175
- required: false,
217
+ required: false
176
218
  },
177
219
  label: {
178
- required: false,
220
+ required: false
179
221
  },
180
222
  noBorder: {
181
223
  required: false,
182
- default: false,
224
+ default: false
183
225
  },
184
226
  disabled: {
185
227
  required: false,
186
- default: false,
228
+ default: false
187
229
  },
188
230
  fontSize: {
189
231
  required: false,
190
- default: null,
232
+ default: null
191
233
  },
234
+ inputType: {
235
+ required: false,
236
+ default: 'text'
237
+ }
192
238
  },
193
239
  methods: {
194
240
  onChangeHandler($event) {
195
- this.$emit("input-change", $event)
241
+ this.$emit('input-change', $event)
196
242
  },
243
+ toggleShowPassword() {
244
+ this.inputTypeData =
245
+ this.inputTypeData === 'password' ? 'text' : 'password'
246
+ }
197
247
  },
248
+ created() {
249
+ this.inputTypeData = this.inputType
250
+ }
198
251
  }
199
252
  </script>