@dataloop-ai/components 0.20.261-new-input.1 → 0.20.261-new-input.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": "@dataloop-ai/components",
3
- "version": "0.20.261-new-input.1",
3
+ "version": "0.20.261-new-input.2",
4
4
  "exports": {
5
5
  ".": "./index.ts",
6
6
  "./models": "./models.ts",
@@ -160,14 +160,15 @@
160
160
  </div>
161
161
  <dl-menu
162
162
  v-if="showSuggestItems"
163
- v-model="isMenuOpen"
164
- auto-close
163
+ :model-value="isMenuOpen"
164
+ persistent
165
165
  no-focus
166
+ no-refocus
166
167
  :offset="[0, 3]"
167
168
  fit-container
168
169
  :fit-content="fitContent"
169
170
  :arrow-nav-items="stringSuggestions"
170
- @click="onMenuShow"
171
+ @update:model-value="onSuggestionMenuModelUpdate"
171
172
  @highlighted-item="setHighlightedIndex"
172
173
  @selected-item="handleSelectedItem"
173
174
  >
@@ -176,7 +177,10 @@
176
177
  :style="{ maxWidth: suggestMenuWidth }"
177
178
  >
178
179
  <slot name="suggestion-header">
179
- <dl-list-item v-if="suggestionHeader">
180
+ <dl-list-item
181
+ v-if="suggestionHeader"
182
+ class="dl-input__suggestion--header"
183
+ >
180
184
  {{ suggestionHeader }}
181
185
  </dl-list-item>
182
186
  </slot>
@@ -193,6 +197,7 @@
193
197
  :highlighted="
194
198
  suggestIndex === highlightedIndex
195
199
  "
200
+ @mousedown.prevent
196
201
  @click="onClick($event, item)"
197
202
  >
198
203
  <slot
@@ -742,7 +747,10 @@ export default defineComponent({
742
747
  const setHighlightedIndex = (value: any) => {
743
748
  highlightedIndex.value = value
744
749
  }
745
- const handleSelectedItem = (value: any) => {
750
+ const handleSelectedItem = (value: unknown) => {
751
+ if (typeof value !== 'string') {
752
+ return
753
+ }
746
754
  onAutoSuggestClick(null, value)
747
755
  }
748
756
 
@@ -834,7 +842,11 @@ export default defineComponent({
834
842
  }
835
843
 
836
844
  const onAutoSuggestClick = (e: Event, item: string): void => {
837
- const newValue = clearSuggestion(modelValue.value.toString(), item)
845
+ if (typeof item !== 'string' || !item.trim().length) {
846
+ return
847
+ }
848
+ const currentValue = String(modelValue.value ?? '')
849
+ const newValue = clearSuggestion(currentValue, item)
838
850
  if (!maxLength.value || newValue.length < maxLength.value) {
839
851
  const toEmit = newValue.replace(new RegExp('&nbsp;', 'g'), ' ')
840
852
  emit('input', toEmit, e)
@@ -843,6 +855,7 @@ export default defineComponent({
843
855
  setCaretAtTheEnd(input.value)
844
856
  isInternalChange.value = true
845
857
  }
858
+ isMenuOpen.value = false
846
859
  }
847
860
 
848
861
  const emitAddFile = (file: DlInputFile) => {
@@ -1396,8 +1409,12 @@ export default defineComponent({
1396
1409
  onPassShowClick(): void {
1397
1410
  this.showPass = !this.showPass
1398
1411
  },
1399
- onMenuShow(): void {
1400
- this.focus()
1412
+ onSuggestionMenuModelUpdate(value: boolean): void {
1413
+ if (!value && this.focused && this.openSuggestionsOnFocus) {
1414
+ this.openSuggestionMenuOnFocus()
1415
+ return
1416
+ }
1417
+ this.isMenuOpen = value
1401
1418
  },
1402
1419
  getSuggestWords(
1403
1420
  item: string,
@@ -1747,6 +1764,13 @@ export default defineComponent({
1747
1764
  }
1748
1765
 
1749
1766
  &__suggestion {
1767
+ &--header {
1768
+ font-family: var(--dl-typography-body-body3-font-family);
1769
+ font-size: var(--dl-typography-body-body3-font-size);
1770
+ line-height: var(--dl-typography-body-body3-line-height);
1771
+ font-weight: var(--dl-typography-body-body3-font-weight);
1772
+ color: var(--dell-gray-600);
1773
+ }
1750
1774
  &--highlighted {
1751
1775
  background-color: var(--dl-color-warning);
1752
1776
  border-radius: 2px;
@@ -16,7 +16,8 @@ export function addEventListenersToElement(
16
16
  }
17
17
 
18
18
  export function clearSuggestion(text: string, suggestion: string) {
19
- return text.split(' ').slice(0, -1).join(' ') + ' ' + suggestion
19
+ const prefix = text.split(' ').slice(0, -1).join(' ')
20
+ return prefix ? `${prefix} ${suggestion}` : suggestion
20
21
  }
21
22
 
22
23
  export function setInnerHTMLWithCursor(
@@ -124,6 +124,15 @@
124
124
  />
125
125
  </template>
126
126
  </dl-input>
127
+ <dl-input
128
+ v-model="headerSuggestionsValue"
129
+ style="width: 320px"
130
+ title="Suggestions with header and icons"
131
+ placeholder="Type to see suggestions"
132
+ suggestion-header="Suggested users"
133
+ :auto-suggest-items="headerSuggestionsItems"
134
+ open-suggestions-on-focus
135
+ />
127
136
  <div class="numberClip" style="max-width: 64px">
128
137
  <dl-input
129
138
  v-model="numberClip"
@@ -249,7 +258,10 @@
249
258
  import { v4 } from 'uuid'
250
259
  import { computed, defineComponent, ref } from 'vue-demi'
251
260
  import { DlInput, DlButton, DlIcon, DlSwitch } from '../components'
252
- import { DlInputFile } from '../components/compound/DlInput/types'
261
+ import {
262
+ DlInputFile,
263
+ DlInputSuggestion
264
+ } from '../components/compound/DlInput/types'
253
265
  export default defineComponent({
254
266
  name: 'DlInputDemo',
255
267
  components: {
@@ -265,6 +277,21 @@ export default defineComponent({
265
277
  const sizeSFieldValue = ref<string>('')
266
278
  const errorFieldValue = ref<string>('')
267
279
  const saveInputValue = ref<string>('Test vaaalueeee')
280
+ const headerSuggestionsValue = ref<string>('')
281
+ const headerSuggestionsItems = ref<DlInputSuggestion[]>([
282
+ {
283
+ suggestion: '@john-doe',
284
+ startIcon: 'icon-dl-user'
285
+ },
286
+ {
287
+ suggestion: '@jane-smith',
288
+ startIcon: 'icon-dl-user'
289
+ },
290
+ {
291
+ suggestion: '@team-design',
292
+ startIcon: 'icon-dl-users'
293
+ }
294
+ ])
268
295
 
269
296
  const files = ref<DlInputFile[]>([])
270
297
  const addFile = (e: Event) => {
@@ -313,6 +340,8 @@ export default defineComponent({
313
340
  warningFieldValue,
314
341
  errorFieldValue,
315
342
  saveInputValue,
343
+ headerSuggestionsValue,
344
+ headerSuggestionsItems,
316
345
  sizeSFieldValue,
317
346
  files,
318
347
  updateFiles,