@eturnity/eturnity_reusable_components 7.35.1-EPDM-11386.1 → 7.35.1-EPDM-10620.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_reusable_components",
3
- "version": "7.35.1-EPDM-11386.1",
3
+ "version": "7.35.1-EPDM-10620.2",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
package/src/App.vue CHANGED
@@ -1,10 +1,13 @@
1
1
  <template>
2
- <ThemeProvider :style="{ height: '100%' }" :theme="getTheme()" />
2
+ <ThemeProvider :style="{ height: '100%' }" :theme="getTheme()">
3
+ <RouterView />
4
+ </ThemeProvider>
3
5
  </template>
4
6
 
5
7
  <script>
6
8
  import { ThemeProvider } from 'vue3-styled-components'
7
9
  import theme from './assets/theme'
10
+
8
11
  export default {
9
12
  name: 'App',
10
13
  components: {
@@ -0,0 +1,6 @@
1
+ <svg width="16" height="16" viewBox="12 12 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M20 13L27 16.8175L26.0477 18.4379L20 15.1397L13.9523 18.4379L13 16.8175L20 13Z" fill="#263238"/>
3
+ <path d="M17.1006 19.1906L20.0001 17.6078L22.8996 19.1906" stroke="#263238" stroke-width="2"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M20 21.5621L22.6508 23.0078L21.6985 24.6282L20 23.7019L18.3015 24.6282L17.3492 23.0078L20 21.5621ZM16.1269 25.8141L13.9523 27L13 25.3797L15.1746 24.1937L16.1269 25.8141ZM26.0477 27L23.8731 25.8141L24.8254 24.1937L27 25.3797L26.0477 27Z" fill="#263238"/>
5
+ <path d="M20.9662 22.9146H19.0332L19.0332 18.2928H20.9662L20.9662 22.9146Z" fill="#263238"/>
6
+ </svg>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg width="800px" height="800px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="copy" fill="none" transform="translate(85.333333, 42.666667)">
6
+ <path d="M341.333333,85.3333333 L341.333333,405.333333 L85.3333333,405.333333 L85.3333333,85.3333333 L341.333333,85.3333333 Z M298.666667,128 L128,128 L128,362.666667 L298.666667,362.666667 L298.666667,128 Z M234.666667,7.10542736e-15 L234.666667,42.6666667 L42.6666667,42.6666667 L42.6666667,298.666667 L1.42108547e-14,298.666667 L1.42108547e-14,7.10542736e-15 L234.666667,7.10542736e-15 Z">
7
+ </path>
8
+ </g>
9
+ </g>
10
+ </svg>
@@ -35,9 +35,6 @@ const theme = {
35
35
  tablet: '768px',
36
36
  tabletLarge: '950px',
37
37
  },
38
- fonts: {
39
- mainFont: '"Figtree", sans-serif',
40
- },
41
38
  borderRadius: '4px',
42
39
  }
43
40
 
@@ -87,7 +87,10 @@
87
87
  :key="index + '_field'"
88
88
  >
89
89
  <SelectComponent
90
- v-if="isMultipleSelector(filter.filter_type)"
90
+ v-if="
91
+ isMultipleSelector(filter.filter_type) ||
92
+ isSingleSelector(filter.filter_type)
93
+ "
91
94
  align-items="vertical"
92
95
  :disabled="!filter.choices.length"
93
96
  font-size="13px"
@@ -102,16 +105,12 @@
102
105
  <OptionTitle> {{ filter.selectedText }} </OptionTitle>
103
106
  </template>
104
107
  <template #dropdown>
105
- <DropdownCheckboxContainer
106
- v-for="(filterOption, optionIdx) in filter.choices"
107
- :key="optionIdx + 'optionIdx'"
108
- @click.stop
109
- >
110
- <Checkbox
111
- :is-checked="filterOption.selected"
112
- :label="filterOption.text"
113
- size="small"
114
- @on-event-handler="
108
+ <template v-if="isSingleSelector(filter.filter_type)">
109
+ <Option
110
+ v-for="(filterOption, optionIdx) in filter.choices"
111
+ :key="optionIdx + 'optionIdx'"
112
+ :value="filterOption.text"
113
+ @click="
115
114
  onChange({
116
115
  dataType: item.type,
117
116
  value: $event,
@@ -119,8 +118,31 @@
119
118
  field: filter.field,
120
119
  })
121
120
  "
122
- />
123
- </DropdownCheckboxContainer>
121
+ >
122
+ {{ filterOption.text }}
123
+ </Option>
124
+ </template>
125
+ <template v-else>
126
+ <DropdownCheckboxContainer
127
+ v-for="(filterOption, optionIdx) in filter.choices"
128
+ :key="optionIdx + 'optionIdx'"
129
+ @click.stop
130
+ >
131
+ <Checkbox
132
+ :is-checked="filterOption.selected"
133
+ :label="filterOption.text"
134
+ size="small"
135
+ @on-event-handler="
136
+ onChange({
137
+ dataType: item.type,
138
+ value: $event,
139
+ choice: filterOption.choice,
140
+ field: filter.field,
141
+ })
142
+ "
143
+ />
144
+ </DropdownCheckboxContainer>
145
+ </template>
124
146
  </template>
125
147
  </SelectComponent>
126
148
  <SectionContainer v-else-if="isRangeSelector(filter.filter_type)">
@@ -305,25 +327,29 @@
305
327
  const ContainerWrapper = styled.div`
306
328
  position: absolute;
307
329
  margin-top: 4px;
330
+ max-height: 70vh;
331
+ overflow-y: auto;
308
332
  background-color: ${(props) => props.theme.colors.white};
309
333
  min-width: 100%;
310
334
  width: max-content;
311
335
  border: 1px solid ${(props) => props.theme.colors.grey4};
312
336
  border-radius: 4px;
313
- z-index: 99999;
337
+ z-index: 1;
314
338
  font-size: 13px;
315
339
  `
316
340
 
317
341
  const ColAttrs = { numCols: Number, hasActiveView: Boolean }
318
342
  const ColumnWrapper = styled('div', ColAttrs)`
319
343
  display: grid;
344
+ max-height: 50vh;
345
+ overflow-y: auto;
320
346
  grid-template-columns: repeat(${(props) => props.numCols}, auto);
321
347
 
322
348
  ${({ hasActiveView, theme }) =>
323
349
  hasActiveView &&
324
350
  `
325
- border-top: 1px solid ${theme.colors.grey4};
326
- `}
351
+ border-top: 1px solid ${theme.colors.grey4};
352
+ `}
327
353
  `
328
354
 
329
355
  const TitleAttrs = { showBorder: Boolean }
@@ -335,8 +361,8 @@
335
361
  ${({ showBorder, theme }) =>
336
362
  showBorder &&
337
363
  `
338
- border-right: 1px solid ${theme.colors.grey4};
339
- `}
364
+ border-right: 1px solid ${theme.colors.grey4};
365
+ `}
340
366
  `
341
367
 
342
368
  const ButtonContainer = styled.div`
@@ -372,8 +398,8 @@
372
398
  ${({ showBorder, theme }) =>
373
399
  showBorder &&
374
400
  `
375
- border-right: 1px solid ${theme.colors.grey4};
376
- `}
401
+ border-right: 1px solid ${theme.colors.grey4};
402
+ `}
377
403
 
378
404
  .ghost {
379
405
  opacity: 0.5;
@@ -402,6 +428,7 @@
402
428
  display: grid;
403
429
  gap: 6px;
404
430
  width: 100%;
431
+ overflow-wrap: anywhere;
405
432
  padding: 7px 10px;
406
433
  background: ${(props) => props.theme.colors.grey5};
407
434
  `
@@ -435,11 +462,11 @@
435
462
  `
436
463
 
437
464
  const UpperContainer = styled.div`
438
- display: grid;
439
- grid-gap: 20px
440
- grid-template-columns: 1fr 1fr;
441
- padding: 10px 14px;
442
- `
465
+ display: grid;
466
+ grid-gap: 20px
467
+ grid-template-columns: 1fr 1fr;
468
+ padding: 10px 14px;
469
+ `
443
470
 
444
471
  const ResetButton = styled.div`
445
472
  display: inline-flex;
@@ -622,6 +649,9 @@
622
649
  const foundItem = options.find((item) => item.choice === value)
623
650
  return foundItem ? foundItem.text : value ? value : filter.selectedText
624
651
  },
652
+ isSingleSelector(type) {
653
+ return type === 'boolean'
654
+ },
625
655
  isMultipleSelector(type) {
626
656
  return type === 'multi_select_integer' || type === 'multi_select_string'
627
657
  },
@@ -92,7 +92,7 @@
92
92
  mounted() {
93
93
  document.addEventListener('click', this.clickOutside)
94
94
  },
95
- beforeDestroy() {
95
+ beforeUnmount() {
96
96
  document.removeEventListener('click', this.clickOutside)
97
97
  },
98
98
  methods: {
@@ -26,7 +26,7 @@
26
26
 
27
27
  import { onMounted, reactive, watch } from 'vue'
28
28
  import styled from 'vue3-styled-components'
29
- import { fetchIcon } from './iconCache.mjs'
29
+ // import { fetchIcon } from './iconCache.mjs'
30
30
 
31
31
  const props = defineProps({
32
32
  disabled: {
@@ -1,32 +1,92 @@
1
1
  <template>
2
- <PageContainer>
3
- <BoxContainer>
4
- <SelectedContainer>
5
- {{ numberSelected }} {{ $gettext('selected') }}
6
- </SelectedContainer>
7
- <ListContainer v-if="optionsList.length">
8
- <ListItem
9
- v-for="item in optionsList"
2
+ <PageWrapper>
3
+ <PageContainer v-if="!expanded">
4
+ <BoxContainer>
5
+ <SelectedContainer>
6
+ {{ numberSelected }} {{ $gettext('selected') }}
7
+ </SelectedContainer>
8
+ <ListContainer v-if="optionsList.length">
9
+ <ListItem
10
+ v-for="item in limitedOptions"
11
+ :key="item.type"
12
+ :disabled="item.disabled || false"
13
+ :hover-color="item.hoverColor"
14
+ @click="$emit('on-' + item.type)"
15
+ >
16
+ {{ item.name }}
17
+ </ListItem>
18
+ <ButtonContainer
19
+ v-if="optionsList.length > optionLimit || hasComponent"
20
+ name="more_options,_tool_tips"
21
+ @click="expandOptions"
22
+ >
23
+ <DotItem />
24
+ <DotItem />
25
+ <DotItem />
26
+ </ButtonContainer>
27
+ </ListContainer>
28
+ <EmptyText v-if="!optionsList.length">
29
+ {{ $gettext('no_batch_actions_available') }}
30
+ </EmptyText>
31
+ <IconContainer @click="$emit('on-close')">
32
+ <Icon
33
+ color="white"
34
+ cursor="pointer"
35
+ name="close_for_modals,_tool_tips"
36
+ size="14px"
37
+ />
38
+ </IconContainer>
39
+ </BoxContainer>
40
+ </PageContainer>
41
+ <CenterPageContainer v-else>
42
+ <CenterBox>
43
+ <TitleContainer>
44
+ <BoxTitle> {{ numberSelected }} {{ $gettext('selected') }} </BoxTitle>
45
+ <IconContainer @click="$emit('on-close')">
46
+ <Icon
47
+ color="white"
48
+ cursor="pointer"
49
+ name="close_for_modals,_tool_tips"
50
+ size="14px"
51
+ />
52
+ </IconContainer>
53
+ </TitleContainer>
54
+ <Divider />
55
+ <ExpandedListItem
56
+ v-for="item in limitedOptions"
10
57
  :key="item.type"
58
+ :disabled="item.disabled || false"
11
59
  :hover-color="item.hoverColor"
12
- @click="$emit('on-' + item.type)"
60
+ @click="!item?.component && $emit('on-' + item.type)"
13
61
  >
14
- {{ item.name }}
15
- </ListItem>
16
- </ListContainer>
17
- <EmptyText v-if="!optionsList.length">
18
- {{ $gettext('no_batch_actions_available') }}
19
- </EmptyText>
20
- <IconContainer @click="$emit('on-close')">
21
- <Icon
22
- color="white"
23
- cursor="pointer"
24
- name="close_for_modals,_tool_tips"
25
- size="14px"
26
- />
27
- </IconContainer>
28
- </BoxContainer>
29
- </PageContainer>
62
+ <ListItemWrapper
63
+ v-if="item?.component"
64
+ @click="!item.disabled && toggleElement(item.type)"
65
+ >
66
+ <ListItemTitle>
67
+ {{ item.name }}
68
+ <InfoText
69
+ v-if="item.disabled && item.disabledInfo"
70
+ :text="item.disabledInfo"
71
+ />
72
+ </ListItemTitle>
73
+ <Icon
74
+ color="white"
75
+ :cursor="item.disabled ? 'not-allowed' : 'pointer'"
76
+ name="arrow_right"
77
+ size="20px"
78
+ />
79
+ </ListItemWrapper>
80
+ <template v-else>
81
+ {{ item.name }}
82
+ </template>
83
+ <OptionsContainer v-if="item?.component && item.open">
84
+ <slot :name="item.component"></slot>
85
+ </OptionsContainer>
86
+ </ExpandedListItem>
87
+ </CenterBox>
88
+ </CenterPageContainer>
89
+ </PageWrapper>
30
90
  </template>
31
91
 
32
92
  <script>
@@ -37,6 +97,13 @@
37
97
  // name: 'Export'
38
98
  // },
39
99
  // {
100
+ // type: 'export',
101
+ // name: 'Export'
102
+ // ...
103
+ // add component parameter if we were passing a component to the selected options
104
+ // component: 'set_supplier'
105
+ // },
106
+ // {
40
107
  // type: 'delete',
41
108
  // name: 'Delete',
42
109
  // hoverColor: 'red' // default is green
@@ -48,10 +115,25 @@
48
115
  // :optionsList="optionsList"
49
116
  // @on-close="onCloseFunction()"
50
117
  // @on-export="function()" @on-delete="function()"
51
- // />
118
+ // >
119
+ // <template v-slot:set_supplier>
120
+ // <CustomSelectComponent
121
+ // :option-list="suppliers"
122
+ // @set-supplier="checkboxBulkActions('setSupplier', $event)"
123
+ // />
124
+ // </template>
125
+ // </SelectedOptions>
52
126
  import styled from 'vue3-styled-components'
127
+ import InfoText from '../infoText'
53
128
  import Icon from '../icon'
54
129
 
130
+ const PageWrapper = styled.div``
131
+
132
+ const Divider = styled.div`
133
+ border-bottom: 1px solid ${({ theme }) => theme.colors.white};
134
+ width: 100%;
135
+ `
136
+
55
137
  const PageContainer = styled.div`
56
138
  position: fixed;
57
139
  bottom: 30px;
@@ -59,6 +141,23 @@
59
141
  transform: translateX(-50%);
60
142
  `
61
143
 
144
+ const CenterPageContainer = styled.div`
145
+ position: fixed;
146
+ top: 50%;
147
+ left: 50%;
148
+ transform: translate(-50%, -50%);
149
+ border-radius: 4px;
150
+ background-color: rgba(0, 0, 0, 0.4);
151
+ `
152
+
153
+ const OptionsContainer = styled.div`
154
+ position: fixed;
155
+ right: -300px;
156
+ background-color: ${(props) => props.theme.colors.black};
157
+ border-radius: 4px;
158
+ padding: 20px;
159
+ `
160
+
62
161
  const SelectedContainer = styled.div`
63
162
  display: grid;
64
163
  align-items: center;
@@ -67,6 +166,18 @@
67
166
  border-right: 1px solid rgba(255, 255, 255, 0.2);
68
167
  `
69
168
 
169
+ const TitleContainer = styled.div`
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: space-between;
173
+ width: 100%;
174
+ `
175
+
176
+ const BoxTitle = styled.div`
177
+ font-size: 14px;
178
+ color: ${(props) => props.theme.colors.white};
179
+ `
180
+
70
181
  const BoxContainer = styled.div`
71
182
  display: flex;
72
183
  align-items: center;
@@ -79,21 +190,58 @@
79
190
  height: 40px;
80
191
  `
81
192
 
193
+ const CenterBox = styled(BoxContainer)`
194
+ justify-content: center;
195
+ flex-direction: column;
196
+ height: auto;
197
+ gap: 25px;
198
+ align-items: flex-start;
199
+ border-radius: 4px;
200
+ width: 400px;
201
+ padding: 20px;
202
+ `
203
+
204
+ const ButtonContainer = styled.div`
205
+ display: flex;
206
+ flex-direction: row;
207
+ align-items: center;
208
+ justify-content: center;
209
+ padding: 5px;
210
+ cursor: pointer;
211
+
212
+ div {
213
+ // This is the dot color
214
+ background: ${(props) => props.theme.colors.white};
215
+ }
216
+ `
217
+ const DotItem = styled.div`
218
+ width: 4px;
219
+ height: 4px;
220
+ margin: 1px;
221
+ border-radius: 50%;
222
+ `
223
+
82
224
  const ListContainer = styled.div`
83
225
  padding: 0 20px;
84
226
  display: flex;
227
+ align-items: center;
85
228
  gap: 20px;
86
229
  color: ${(props) => props.theme.colors.white};
87
230
  `
88
231
 
89
232
  const ListAttrs = {
233
+ disabled: Boolean,
90
234
  hoverColor: String,
91
235
  }
92
236
  const ListItem = styled('div', ListAttrs)`
93
- cursor: pointer;
237
+ cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
238
+ color: ${(props) => props.disabled && props.theme.colors.grey3};
239
+
94
240
  &:hover {
95
241
  color: ${(props) =>
96
- props.hoverColor
242
+ props.disabled
243
+ ? props.theme.colors.grey3
244
+ : props.hoverColor
97
245
  ? props.theme.colors[props.hoverColor]
98
246
  : props.theme.colors.green};
99
247
  }
@@ -106,7 +254,7 @@
106
254
  height: 30px;
107
255
  width: 30px;
108
256
  cursor: pointer;
109
- margin-left: 20px;
257
+ margin-left: 15px;
110
258
 
111
259
  &:hover {
112
260
  background: rgba(255, 255, 255, 0.1);
@@ -114,6 +262,26 @@
114
262
  }
115
263
  `
116
264
 
265
+ const ExpandedListItem = styled(ListItem)`
266
+ display: flex;
267
+ width: 100%;
268
+ justify-content: space-between;
269
+ align-items: center;
270
+ `
271
+
272
+ const ListItemWrapper = styled.div`
273
+ width: 100%;
274
+ display: flex;
275
+ align-items: center;
276
+ justify-content: space-between;
277
+ `
278
+
279
+ const ListItemTitle = styled.div`
280
+ display: flex;
281
+ align-items: center;
282
+ gap: 10px;
283
+ `
284
+
117
285
  const EmptyText = styled.div`
118
286
  color: ${(props) => props.theme.colors.white};
119
287
  font-size: 13px;
@@ -127,19 +295,79 @@
127
295
  BoxContainer,
128
296
  SelectedContainer,
129
297
  ListContainer,
298
+ ButtonContainer,
299
+ DotItem,
130
300
  ListItem,
301
+ InfoText,
302
+ CenterBox,
131
303
  Icon,
304
+ CenterPageContainer,
305
+ ListItemWrapper,
306
+ ListItemTitle,
307
+ PageWrapper,
308
+ OptionsContainer,
309
+ ExpandedListItem,
310
+ TitleContainer,
132
311
  IconContainer,
133
312
  EmptyText,
313
+ BoxTitle,
314
+ Divider,
134
315
  },
135
316
  props: {
136
317
  optionsList: {
318
+ type: Array,
137
319
  required: true,
138
320
  },
139
321
  numberSelected: {
322
+ type: Number,
140
323
  required: true,
141
324
  default: 0,
142
325
  },
143
326
  },
327
+ data() {
328
+ return {
329
+ //maximum number of options to display, if more than 4, display a 'more' option
330
+ optionLimit: 4,
331
+ showOverlay: false,
332
+ expanded: false,
333
+ limitedOptions: [],
334
+ }
335
+ },
336
+ computed: {
337
+ hasComponent() {
338
+ return this.optionsList.some((item) => item.component)
339
+ },
340
+ },
341
+ watch: {
342
+ optionsList() {
343
+ this.initializeOptions()
344
+ },
345
+ },
346
+ mounted() {
347
+ this.initializeOptions()
348
+ },
349
+ methods: {
350
+ initializeOptions() {
351
+ this.limitedOptions = this.optionsList
352
+ .map((item) => {
353
+ return { ...item, open: false }
354
+ })
355
+ .filter((item) => !item.component)
356
+ .slice(0, this.optionLimit)
357
+ },
358
+ toggleElement(type) {
359
+ this.limitedOptions = this.optionsList.map((item) => {
360
+ if (item.type === type) {
361
+ item.open = !item.open
362
+ } else item.open = false
363
+
364
+ return item
365
+ })
366
+ },
367
+ expandOptions() {
368
+ this.expanded = !this.expanded
369
+ this.limitedOptions = this.optionsList
370
+ },
371
+ },
144
372
  }
145
373
  </script>
@@ -1,6 +0,0 @@
1
- <svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
2
- viewBox="0 0 512 512" xml:space="preserve">
3
- <path d="M256,0C114.617,0,0,114.615,0,256s114.617,256,256,256s256-114.615,256-256S397.383,0,256,0z M224,320
4
- c0,8.836-7.164,16-16,16h-32c-8.836,0-16-7.164-16-16V192c0-8.836,7.164-16,16-16h32c8.836,0,16,7.164,16,16V320z M352,320
5
- c0,8.836-7.164,16-16,16h-32c-8.836,0-16-7.164-16-16V192c0-8.836,7.164-16,16-16h32c8.836,0,16,7.164,16,16V320z"/>
6
- </svg>
@@ -1,103 +0,0 @@
1
- <template>
2
- <Container>
3
- <RoundedTabLeft
4
- :background-color="backgroundColor"
5
- :border-radius="borderRadius"
6
- />
7
- <Tab
8
- :background-color="backgroundColor"
9
- :border-radius="borderRadius"
10
- :height="height"
11
- :width="width"
12
- >
13
- <slot></slot>
14
- </Tab>
15
- <RoundedTabRight
16
- :background-color="backgroundColor"
17
- :border-radius="borderRadius"
18
- />
19
- </Container>
20
- </template>
21
- <script>
22
- import styled from 'vue3-styled-components'
23
-
24
- const Container = styled.div`
25
- position: relative;
26
- display: flex;
27
- align-items: center;
28
- justify-content: center;
29
- `
30
- const RoundedTabLeft = styled('div', {
31
- backgroundColor: String,
32
- borderRadius: String,
33
- })`
34
- position:absolute;
35
- bottom:0;
36
- left:-${(prop) => prop.borderRadius}
37
- background-color: ${(prop) => prop.backgroundColor};
38
- width: ${(prop) => prop.borderRadius};
39
- height: ${(prop) => prop.borderRadius};
40
- -webkit-mask-image: radial-gradient(
41
- circle at top left,
42
- transparent 71%,
43
- black 71%
44
- );
45
- `
46
- const RoundedTabRight = styled('div', {
47
- backgroundColor: String,
48
- borderRadius: String,
49
- })`
50
- position:absolute;
51
- bottom:0;
52
- right:-${(prop) => prop.borderRadius}
53
- background-color: ${(prop) => prop.backgroundColor};
54
- width: ${(prop) => prop.borderRadius};
55
- height: ${(prop) => prop.borderRadius};
56
- -webkit-mask-image: radial-gradient(
57
- circle at top right,
58
- transparent 71%,
59
- black 71%
60
- );`
61
- const Tab = styled('div', {
62
- width: String,
63
- height: String,
64
- backgroundColor: String,
65
- borderRadius: String,
66
- })`
67
- display: flex;
68
- align-items: center;
69
- justify-content: center;
70
- background-color: ${(prop) => prop.backgroundColor};
71
- width: ${(prop) => prop.width};
72
- height: ${(prop) => prop.height};
73
- border-radius: ${(prop) => prop.borderRadius} ${(prop) => prop.borderRadius}
74
- 0 0;
75
- `
76
- export default {
77
- name: 'SelectedOptions',
78
- components: {
79
- Container,
80
- Tab,
81
- RoundedTabLeft,
82
- RoundedTabRight,
83
- },
84
- props: {
85
- height: {
86
- required: false,
87
- default: '40px',
88
- },
89
- width: {
90
- required: false,
91
- default: '200px',
92
- },
93
- backgroundColor: {
94
- required: false,
95
- default: 'blue',
96
- },
97
- borderRadius: {
98
- required: false,
99
- default: '20px',
100
- },
101
- },
102
- }
103
- </script>