@demos-europe/demosplan-ui 0.4.5 → 0.4.6

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 (43) hide show
  1. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_17_03_2025_10_20_[Changes]/shelved.patch +218 -0
  2. package/.idea/shelf/Uncommitted_changes_before_Merge_at_17_03_2025_10_49_[Changes]/shelved.patch +23 -0
  3. package/.idea/shelf/Uncommitted_changes_before_Update_at_11_03_2025_14_39_[Changes]/shelved.patch +19 -0
  4. package/.idea/shelf/Uncommitted_changes_before_Update_at_11_03_2025_14_39__Changes_.xml +4 -0
  5. package/.idea/shelf/Uncommitted_changes_before_Update_at_14_03_2025_10_42_[Changes]/shelved.patch +616 -0
  6. package/.idea/shelf/Uncommitted_changes_before_Update_at_14_03_2025_10_42__Changes_.xml +4 -0
  7. package/.idea/workspace.xml +112 -85
  8. package/.yarn/install-state.gz +0 -0
  9. package/CHANGELOG.md +15 -0
  10. package/dist/demosplan-ui.umd.js +1 -1
  11. package/package.json +5 -4
  12. package/src/components/DpButton/DpButton.vue +48 -48
  13. package/src/components/DpButtonRow/DpButtonRow.vue +2 -1
  14. package/src/components/DpCheckboxGroup/DpCheckboxGroup.vue +5 -1
  15. package/src/components/DpDataTable/DpWrapTrigger.vue +1 -1
  16. package/src/components/DpEditableList/DpEditableList.vue +6 -6
  17. package/src/components/DpFlyout/DpFlyout.vue +6 -6
  18. package/src/components/DpInput/DpInput.vue +25 -2
  19. package/src/components/DpMultiselect/DpMultiselect.vue +88 -90
  20. package/src/components/DpResettableInput/DpResettableInput.vue +16 -0
  21. package/src/components/DpSearchField/DpSearchField.vue +3 -2
  22. package/src/components/DpSplitButton/DpSplitButton.vue +3 -3
  23. package/src/components/DpTimePicker/DpTimePicker.vue +3 -2
  24. package/tokens/dist/js/boxShadow.js +1 -1
  25. package/tokens/dist/js/breakpoints.js +1 -1
  26. package/tokens/dist/js/color.brand.js +1 -1
  27. package/tokens/dist/js/color.data.js +1 -1
  28. package/tokens/dist/js/color.palette.js +1 -1
  29. package/tokens/dist/js/color.ui.js +1 -1
  30. package/tokens/dist/js/fontSize.js +1 -1
  31. package/tokens/dist/js/rounded.js +1 -1
  32. package/tokens/dist/js/space.js +1 -1
  33. package/tokens/dist/js/zIndex.js +1 -1
  34. package/tokens/dist/scss/_boxShadow.scss +1 -1
  35. package/tokens/dist/scss/_breakpoints.scss +1 -1
  36. package/tokens/dist/scss/_color.brand.scss +1 -1
  37. package/tokens/dist/scss/_color.data.scss +1 -1
  38. package/tokens/dist/scss/_color.palette.scss +1 -1
  39. package/tokens/dist/scss/_color.ui.scss +1 -1
  40. package/tokens/dist/scss/_fontSize.scss +1 -1
  41. package/tokens/dist/scss/_rounded.scss +1 -1
  42. package/tokens/dist/scss/_space.scss +1 -1
  43. package/tokens/dist/scss/_zIndex.scss +1 -1
@@ -0,0 +1,218 @@
1
+ Index: src/components/DpMultiselect/DpMultiselect.vue
2
+ IDEA additional info:
3
+ Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
4
+ <+><template>\n <div>\n <vue-multiselect\n v-bind=\"{\n allowEmpty,\n clearOnSelect,\n closeOnSelect,\n customLabel,\n deselectGroupLabel,\n deselectLabel,\n disabled,\n groupLabel,\n groupSelect,\n groupValues,\n id,\n label,\n loading,\n maxHeight,\n multiple,\n name,\n options,\n placeholder,\n searchable,\n selectGroupLabel,\n selectLabel,\n selectedLabel,\n tagPlaceholder,\n trackBy,\n value\n }\"\n :class=\"{ 'is-required' : required }\"\n :data-cy=\"dataCy\"\n :data-dp-validate-error-fieldname=\"dataDpValidateErrorFieldname\"\n :model-value=\"value\"\n v-dp-validate-multiselect=\"required\"\n @close=\"newVal => $emit('close', newVal)\"\n @update:model-value=\"newVal => $emit('input', newVal)\"\n @open=\"newVal => $emit('open', newVal)\"\n @remove=\"newVal => $emit('remove', newVal)\"\n @search-change=\"newVal => $emit('search-change', newVal)\"\n @select=\"newVal => $emit('select', newVal)\"\n @tag=\"newVal => $emit('tag', newVal)\">\n <template v-slot:noOptions>\n <slot name=\"noOptions\">\n {{ translations.noEntriesAvailable }}\n </slot>\n </template>\n\n <template v-slot:noResult>\n <slot name=\"noResult\">\n {{ translations.autocompleteNoResults }}\n </slot>\n </template>\n\n <template\n v-for=\"slot in subSlots\"\n v-slot:[slot]=\"props\">\n <slot\n :props=\"props\"\n :name=\"slot\" />\n </template>\n\n <!-- put more slots here -->\n\n <template\n v-if=\"selectionControls\"\n v-slot:beforeList=\"props\">\n <slot\n name=\"beforeList\"\n :props=\"props\">\n <div class=\"border-bottom\">\n <button\n class=\"btn--blank weight--bold u-ph-0_5 u-pv-0_25\"\n :disabled=\"value.length === options.length === 0\"\n type=\"button\"\n v-text=\"translations.selectAll\"\n @click=\"$emit('select-all')\">\n </button>\n\n <button\n class=\"btn--blank weight--bold u-ph-0_5 u-pv-0_25\"\n :disabled=\"value.length === 0\"\n type=\"button\"\n v-text=\"translations.deselectAll\"\n @click=\"$emit('unselect-all')\">\n </button>\n </div>\n </slot>\n </template>\n </vue-multiselect>\n </div>\n</template>\n\n<script>\nimport { de } from '~/components/shared/translations'\nimport { dpValidateMultiselectDirective } from '~/lib/validation'\nimport VueMultiselect from 'vue-multiselect'\n\nexport default {\n name: 'DpMultiselect',\n\n components: {\n VueMultiselect\n },\n\n directives: {\n dpValidateMultiselectDirective\n },\n\n emits: [\n 'close',\n 'input',\n 'open',\n 'remove',\n 'search-change',\n 'select',\n 'select-all',\n 'tag',\n 'unselect-all'\n ],\n\n props: {\n allowEmpty: {\n type: Boolean,\n required: false,\n default: true\n },\n\n clearOnSelect: {\n type: Boolean,\n required: false,\n default: true\n },\n\n closeOnSelect: {\n type: Boolean,\n required: false,\n default: true\n },\n\n customLabel: {\n type: Function,\n required: false,\n default: undefined\n },\n\n dataCy: {\n type: String,\n required: false,\n default: 'multiselect'\n },\n\n dataDpValidateErrorFieldname: {\n type: String,\n required: false,\n default: ''\n },\n\n deselectLabel: {\n type: String,\n required: false,\n default: ''\n },\n\n deselectGroupLabel: {\n type: String,\n required: false,\n default: ''\n },\n\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n\n groupLabel: {\n type: String,\n required: false,\n default: ''\n },\n\n groupSelect: {\n type: Boolean,\n required: false,\n default: false\n },\n\n groupValues: {\n type: String,\n required: false,\n default: ''\n },\n\n id: {\n type: String,\n required: false,\n default: ''\n },\n\n label: {\n type: String,\n required: false,\n default: ''\n },\n\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n\n maxHeight: {\n type: Number,\n required: false,\n default: 300\n },\n\n multiple: {\n required: false,\n type: Boolean,\n default: false\n },\n\n name: {\n type: String,\n required: false,\n default: ''\n },\n\n options: {\n type: Array,\n required: true\n },\n\n placeholder: {\n type: String,\n required: false,\n default: de.choose\n },\n\n required: {\n required: false,\n type: Boolean,\n default: false\n },\n\n searchable: {\n required: false,\n type: Boolean,\n default: true\n },\n\n selectionControls: {\n required: false,\n type: Boolean,\n default: false\n },\n\n selectGroupLabel: {\n type: String,\n required: false,\n default: ''\n },\n\n selectLabel: {\n type: String,\n required: false,\n default: ''\n },\n\n selectedLabel: {\n type: String,\n required: false,\n default: ''\n },\n\n /**\n * If necessary, slots can be added\n * according to this List\n * https://vue-multiselect.js.org/#sub-slots\n */\n subSlots: {\n type: Array,\n required: false,\n default: () => ['option', 'tag']\n },\n\n tagPlaceholder: {\n type: String,\n required: false,\n default: de.tag.create\n },\n\n trackBy: {\n type: [String, null],\n required: false,\n default: null\n },\n\n value: {\n type: [String, Number, Array, Object],\n required: false,\n default: ''\n }\n },\n\n data () {\n return {\n translations: {\n autocompleteNoResults: de.autocompleteNoResults,\n deselectAll: de.operations.deselect.all,\n noEntriesAvailable: de.noEntriesAvailable,\n selectAll: de.operations.select.all\n }\n }\n }\n}\n</script>\n
5
+ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
6
+ <+>UTF-8
7
+ ===================================================================
8
+ diff --git a/src/components/DpMultiselect/DpMultiselect.vue b/src/components/DpMultiselect/DpMultiselect.vue
9
+ --- a/src/components/DpMultiselect/DpMultiselect.vue (revision 720421c301d91b7001796d63f2bffda4793ce929)
10
+ +++ b/src/components/DpMultiselect/DpMultiselect.vue (date 1741948536047)
11
+ @@ -1,94 +1,92 @@
12
+ <template>
13
+ - <div>
14
+ - <vue-multiselect
15
+ - v-bind="{
16
+ - allowEmpty,
17
+ - clearOnSelect,
18
+ - closeOnSelect,
19
+ - customLabel,
20
+ - deselectGroupLabel,
21
+ - deselectLabel,
22
+ - disabled,
23
+ - groupLabel,
24
+ - groupSelect,
25
+ - groupValues,
26
+ - id,
27
+ - label,
28
+ - loading,
29
+ - maxHeight,
30
+ - multiple,
31
+ - name,
32
+ - options,
33
+ - placeholder,
34
+ - searchable,
35
+ - selectGroupLabel,
36
+ - selectLabel,
37
+ - selectedLabel,
38
+ - tagPlaceholder,
39
+ - trackBy,
40
+ - value
41
+ - }"
42
+ - :class="{ 'is-required' : required }"
43
+ - :data-cy="dataCy"
44
+ - :data-dp-validate-error-fieldname="dataDpValidateErrorFieldname"
45
+ - :model-value="value"
46
+ - v-dp-validate-multiselect="required"
47
+ - @close="newVal => $emit('close', newVal)"
48
+ - @update:model-value="newVal => $emit('input', newVal)"
49
+ - @open="newVal => $emit('open', newVal)"
50
+ - @remove="newVal => $emit('remove', newVal)"
51
+ - @search-change="newVal => $emit('search-change', newVal)"
52
+ - @select="newVal => $emit('select', newVal)"
53
+ - @tag="newVal => $emit('tag', newVal)">
54
+ - <template v-slot:noOptions>
55
+ - <slot name="noOptions">
56
+ - {{ translations.noEntriesAvailable }}
57
+ - </slot>
58
+ - </template>
59
+ + <vue-multiselect
60
+ + v-bind="{
61
+ + allowEmpty,
62
+ + clearOnSelect,
63
+ + closeOnSelect,
64
+ + customLabel,
65
+ + deselectGroupLabel,
66
+ + deselectLabel,
67
+ + disabled,
68
+ + groupLabel,
69
+ + groupSelect,
70
+ + groupValues,
71
+ + id,
72
+ + label,
73
+ + loading,
74
+ + maxHeight,
75
+ + multiple,
76
+ + name,
77
+ + options,
78
+ + placeholder,
79
+ + searchable,
80
+ + selectGroupLabel,
81
+ + selectLabel,
82
+ + selectedLabel,
83
+ + tagPlaceholder,
84
+ + trackBy,
85
+ + value
86
+ + }"
87
+ + :class="{ 'is-required' : required }"
88
+ + :data-cy="dataCy"
89
+ + :data-dp-validate-error-fieldname="dataDpValidateErrorFieldname"
90
+ + :model-value="value"
91
+ + v-dp-validate-multiselect="required"
92
+ + @close="newVal => $emit('close', newVal)"
93
+ + @update:model-value="newVal => $emit('input', newVal)"
94
+ + @open="newVal => $emit('open', newVal)"
95
+ + @remove="newVal => $emit('remove', newVal)"
96
+ + @search-change="newVal => $emit('search-change', newVal)"
97
+ + @select="newVal => $emit('select', newVal)"
98
+ + @tag="newVal => $emit('tag', newVal)">
99
+ + <template v-slot:noOptions>
100
+ + <slot name="noOptions">
101
+ + {{ translations.noEntriesAvailable }}
102
+ + </slot>
103
+ + </template>
104
+
105
+ - <template v-slot:noResult>
106
+ - <slot name="noResult">
107
+ - {{ translations.autocompleteNoResults }}
108
+ - </slot>
109
+ - </template>
110
+ + <template v-slot:noResult>
111
+ + <slot name="noResult">
112
+ + {{ translations.autocompleteNoResults }}
113
+ + </slot>
114
+ + </template>
115
+
116
+ - <template
117
+ - v-for="slot in subSlots"
118
+ - v-slot:[slot]="props">
119
+ - <slot
120
+ - :props="props"
121
+ - :name="slot" />
122
+ - </template>
123
+ + <template
124
+ + v-for="slot in subSlots"
125
+ + v-slot:[slot]="props">
126
+ + <slot
127
+ + :props="props"
128
+ + :name="slot" />
129
+ + </template>
130
+
131
+ - <!-- put more slots here -->
132
+ + <!-- put more slots here -->
133
+
134
+ - <template
135
+ - v-if="selectionControls"
136
+ - v-slot:beforeList="props">
137
+ - <slot
138
+ - name="beforeList"
139
+ - :props="props">
140
+ - <div class="border-bottom">
141
+ - <button
142
+ - class="btn--blank weight--bold u-ph-0_5 u-pv-0_25"
143
+ - :disabled="value.length === options.length === 0"
144
+ - type="button"
145
+ - v-text="translations.selectAll"
146
+ - @click="$emit('select-all')">
147
+ - </button>
148
+ + <template
149
+ + v-if="selectionControls"
150
+ + v-slot:beforeList="props">
151
+ + <slot
152
+ + name="beforeList"
153
+ + :props="props">
154
+ + <div class="border-bottom">
155
+ + <button
156
+ + class="btn--blank weight--bold u-ph-0_5 u-pv-0_25"
157
+ + :disabled="value.length === options.length === 0"
158
+ + type="button"
159
+ + v-text="translations.selectAll"
160
+ + @click="$emit('select-all')">
161
+ + </button>
162
+
163
+ - <button
164
+ - class="btn--blank weight--bold u-ph-0_5 u-pv-0_25"
165
+ - :disabled="value.length === 0"
166
+ - type="button"
167
+ - v-text="translations.deselectAll"
168
+ - @click="$emit('unselect-all')">
169
+ - </button>
170
+ - </div>
171
+ - </slot>
172
+ - </template>
173
+ - </vue-multiselect>
174
+ - </div>
175
+ + <button
176
+ + class="btn--blank weight--bold u-ph-0_5 u-pv-0_25"
177
+ + :disabled="value.length === 0"
178
+ + type="button"
179
+ + v-text="translations.deselectAll"
180
+ + @click="$emit('unselect-all')">
181
+ + </button>
182
+ + </div>
183
+ + </slot>
184
+ + </template>
185
+ + </vue-multiselect>
186
+ </template>
187
+
188
+ <script>
189
+ Index: yarn.lock
190
+ IDEA additional info:
191
+ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
192
+ <+>UTF-8
193
+ ===================================================================
194
+ diff --git a/yarn.lock b/yarn.lock
195
+ --- a/yarn.lock (revision 720421c301d91b7001796d63f2bffda4793ce929)
196
+ +++ b/yarn.lock (date 1741948165857)
197
+ @@ -2116,7 +2116,6 @@
198
+ babel-loader: "npm:^9.1.2"
199
+ babel-plugin-syntax-jsx: "npm:^6.18.0"
200
+ babel-plugin-transform-vue-jsx: "npm:^3.7.0"
201
+ - click-outside-vue3: "npm:^4.0.1"
202
+ css-loader: "npm:^7.0.0"
203
+ dayjs: "npm:^1.11.5"
204
+ dompurify: "npm:^3.0.0"
205
+ @@ -8950,13 +8949,6 @@
206
+ checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a
207
+ languageName: node
208
+ linkType: hard
209
+ -
210
+ -"click-outside-vue3@npm:^4.0.1":
211
+ - version: 4.0.1
212
+ - resolution: "click-outside-vue3@npm:4.0.1"
213
+ - checksum: 10c0/a45d290e2798da0d0d12c8aaf4b651c9f5cf0132f5b59e20daac99c26b62572cb898c5055968e0bdf7a6e11220ab74581793ea8c28cae67f9933a2d4de8d0202
214
+ - languageName: node
215
+ - linkType: hard
216
+
217
+ "clipboardy@npm:^2.3.0":
218
+ version: 2.3.0
@@ -0,0 +1,23 @@
1
+ Index: src/components/DpEditor/libs/tiptapExtensions.js
2
+ IDEA additional info:
3
+ Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
4
+ <+>import Bold from '@tiptap/extension-bold'\nimport BulletList from '@tiptap/extension-bullet-list'\nimport Document from '@tiptap/extension-document'\nimport HardBreak from '@tiptap/extension-hard-break'\nimport Heading from '@tiptap/extension-heading'\nimport History from '@tiptap/extension-history'\nimport Italic from '@tiptap/extension-italic'\nimport Link from '@tiptap/extension-link'\nimport ListItem from '@tiptap/extension-list-item'\nimport { Mention } from '@tiptap/extension-mention'\nimport OrderedList from '@tiptap/extension-ordered-list'\nimport Paragraph from '@tiptap/extension-paragraph'\nimport Strike from '@tiptap/extension-strike'\nimport Table from '@tiptap/extension-table'\nimport TableCell from '@tiptap/extension-table-cell'\nimport TableHeader from '@tiptap/extension-table-header'\nimport TableRow from '@tiptap/extension-table-row'\nimport Text from '@tiptap/extension-text'\nimport Underline from '@tiptap/extension-underline'\n\nexport {\n Bold,\n BulletList,\n Document,\n HardBreak,\n Heading,\n History,\n Italic,\n Link,\n ListItem,\n Mention,\n OrderedList,\n Paragraph,\n Strike,\n Table,\n TableCell,\n TableHeader,\n TableRow,\n Text,\n Underline\n}\n
5
+ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
6
+ <+>UTF-8
7
+ ===================================================================
8
+ diff --git a/src/components/DpEditor/libs/tiptapExtensions.js b/src/components/DpEditor/libs/tiptapExtensions.js
9
+ --- a/src/components/DpEditor/libs/tiptapExtensions.js (revision 280bb9b4205b83034897edcc681ea56750f9b3cd)
10
+ +++ b/src/components/DpEditor/libs/tiptapExtensions.js (date 1742204985396)
11
+ @@ -7,7 +7,9 @@
12
+ import Italic from '@tiptap/extension-italic'
13
+ import Link from '@tiptap/extension-link'
14
+ import ListItem from '@tiptap/extension-list-item'
15
+ -import { Mention } from '@tiptap/extension-mention'
16
+ +// THIS IS A WORKAROUND.
17
+ +// In our setup per default the cjs-file is used. That file for some reason has a problem to resolve an internal dependency (Suggestion) properly.
18
+ +import { Mention } from '../../../../node_modules/@tiptap/extension-mention/dist/index.js'
19
+ import OrderedList from '@tiptap/extension-ordered-list'
20
+ import Paragraph from '@tiptap/extension-paragraph'
21
+ import Strike from '@tiptap/extension-strike'
22
+ diff --git a/src/components/DpEditor/libs/editorMention.js b/src/components/DpEditor/libs/editorMention.js
23
+ deleted file mode 100644
@@ -0,0 +1,19 @@
1
+ Index: src/components/DpCheckboxGroup/DpCheckboxGroup.vue
2
+ IDEA additional info:
3
+ Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
4
+ <+><template>\n <fieldset class=\"u-pb-0\">\n <legend\n v-if=\"label !== ''\"\n v-cleanhtml=\"label\"\n class=\"font-size-medium is-label\"\n :class=\"inline ? 'float-left' : 'u-mb-0_25'\" />\n <dp-checkbox\n v-for=\"(option, idx) in options\"\n :id=\"option.id\"\n :key=\"`option_${idx}`\"\n v-model=\"selected[option.id]\"\n :class=\"inline ? 'inline-block u-ml' : ''\"\n :label=\"{\n text: option.label\n }\"\n :name=\"option.name || ''\"\n :data-cy=\"dataCy !== '' ? `${dataCy}:${option.id}` : null\"\n @change=\"$emit('update', selected)\" />\n </fieldset>\n</template>\n\n<script>\nimport { CleanHtml } from '~/directives'\nimport DpCheckbox from '~/components/DpCheckbox'\n\nexport default {\n name: 'DpCheckboxGroup',\n\n components: {\n DpCheckbox\n },\n\n directives: {\n cleanhtml: CleanHtml\n },\n\n props: {\n dataCy: {\n type: String,\n required: false,\n default: ''\n },\n\n options: {\n type: Array,\n required: true\n },\n\n label: {\n type: String,\n required: false,\n default: ''\n },\n\n inline: {\n type: Boolean,\n default: false\n },\n\n selectedOptions: {\n type: Object,\n default: () => ({})\n }\n },\n\n data () {\n return {\n selected: {}\n }\n },\n\n watch: {\n selectedOptions () {\n this.selected = this.selectedOptions\n }\n },\n\n methods: {\n setSelected () {\n this.options.forEach(option => {\n this.selected[option.id] = false\n })\n }\n },\n\n mounted () {\n this.setSelected()\n }\n}\n</script>\n
5
+ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
6
+ <+>UTF-8
7
+ ===================================================================
8
+ diff --git a/src/components/DpCheckboxGroup/DpCheckboxGroup.vue b/src/components/DpCheckboxGroup/DpCheckboxGroup.vue
9
+ --- a/src/components/DpCheckboxGroup/DpCheckboxGroup.vue (revision 78eb5d9df86bf727ada34e5acfae7f75ad984afe)
10
+ +++ b/src/components/DpCheckboxGroup/DpCheckboxGroup.vue (date 1741700279330)
11
+ @@ -16,7 +16,7 @@
12
+ }"
13
+ :name="option.name || ''"
14
+ :data-cy="dataCy !== '' ? `${dataCy}:${option.id}` : null"
15
+ - @change="$emit('update', selected)" />
16
+ + @change="() => $emit('update', { selected })" />
17
+ </fieldset>
18
+ </template>
19
+
@@ -0,0 +1,4 @@
1
+ <changelist name="Uncommitted_changes_before_Update_at_11_03_2025_14_39_[Changes]" date="1741700375719" recycled="true" deleted="true">
2
+ <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_11_03_2025_14_39_[Changes]/shelved.patch" />
3
+ <option name="DESCRIPTION" value="Uncommitted changes before Update at 11 03 2025 14:39 [Changes]" />
4
+ </changelist>