@awes-io/ui 2.29.0 → 2.31.0

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 (35) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/assets/css/components/_index.css +2 -0
  3. package/assets/css/components/birthday-picker.css +18 -0
  4. package/assets/css/components/dropdown-button.css +5 -0
  5. package/assets/css/components/modal.css +1 -1
  6. package/assets/css/components/select.css +10 -0
  7. package/assets/css/components/table.css +4 -0
  8. package/assets/css/components/userpic.css +30 -0
  9. package/assets/js/string.js +55 -1
  10. package/components/1_atoms/AwDescription.vue +8 -1
  11. package/components/1_atoms/AwLabel.vue +1 -1
  12. package/components/2_molecules/AwSelect.vue +19 -4
  13. package/components/2_molecules/AwSelectObject.vue +22 -8
  14. package/components/2_molecules/AwUserpic.vue +24 -6
  15. package/components/3_organisms/AwBirthdayPicker.vue +6 -5
  16. package/components/3_organisms/AwMarkdownEditor.vue +1 -1
  17. package/components/3_organisms/AwModal.vue +2 -3
  18. package/components/3_organisms/AwSearch.vue +7 -2
  19. package/components/4_pages/AwPage.vue +1 -1
  20. package/components/5_layouts/AwLayoutCenter.vue +1 -1
  21. package/components/5_layouts/_AwHeaderNotification.vue +1 -1
  22. package/components/5_layouts/_AwMobileMenuItem.vue +1 -1
  23. package/components/5_layouts/_AwNoty.vue +2 -2
  24. package/components/_config.js +4 -0
  25. package/lang/de.js +1 -1
  26. package/lang/en.js +1 -1
  27. package/lang/ru.js +1 -1
  28. package/lang/uk.js +1 -1
  29. package/nuxt/templates/sanitize.plugin.js +5 -0
  30. package/package.json +3 -3
  31. package/readme.md +1 -0
  32. package/assets/.DS_Store +0 -0
  33. package/assets/css/.DS_Store +0 -0
  34. package/assets/js/.DS_Store +0 -0
  35. package/assets/svg/.DS_Store +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,73 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.31.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.30.0...@awes-io/ui@2.31.0) (2021-10-21)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * bump version ([ed4612a](https://github.com/awes-io/client/commit/ed4612ad6f81c698a06590c91356c0a47be87f81))
12
+
13
+
14
+ ### Features
15
+
16
+ * bump version ([dc0250d](https://github.com/awes-io/client/commit/dc0250d3b671a7df341ea5e6bb8d752577011c0f))
17
+
18
+
19
+
20
+
21
+
22
+ # [2.30.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.29.3...@awes-io/ui@2.30.0) (2021-10-21)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **aw-modal:** overlay-aside animation fixed ([cd4e960](https://github.com/awes-io/client/commit/cd4e960f377af53df9f20492c857667baf636ba0))
28
+ * **aw-select-object:** do not encode search param ([4141879](https://github.com/awes-io/client/commit/41418793d0e3f3dd732155867b35ec9b98753333))
29
+ * sanitize v-html ([95ecf78](https://github.com/awes-io/client/commit/95ecf78cd95e9e8cab96d81e9fa0697a1e86e3bc))
30
+
31
+
32
+ ### Features
33
+
34
+ * **aw-select:** disabling options added ([a83da1a](https://github.com/awes-io/client/commit/a83da1a0986d081f036ac4ce92ed7d9cc528105b))
35
+
36
+
37
+
38
+
39
+
40
+ ## [2.29.3](https://github.com/awes-io/client/compare/@awes-io/ui@2.29.2...@awes-io/ui@2.29.3) (2021-10-18)
41
+
42
+
43
+ ### Bug Fixes
44
+
45
+ * updated aw-search ([ac88aca](https://github.com/awes-io/client/commit/ac88acaa0e003e36c67ae5ac94450795dda7bf00))
46
+
47
+
48
+
49
+
50
+
51
+ ## [2.29.2](https://github.com/awes-io/client/compare/@awes-io/ui@2.29.1...@awes-io/ui@2.29.2) (2021-10-18)
52
+
53
+
54
+ ### Bug Fixes
55
+
56
+ * updated field for the search ([22d1a98](https://github.com/awes-io/client/commit/22d1a98d27ecee9070e709112242930eff3223c0))
57
+
58
+
59
+
60
+
61
+
62
+ ## [2.29.1](https://github.com/awes-io/client/compare/@awes-io/ui@2.29.0...@awes-io/ui@2.29.1) (2021-10-14)
63
+
64
+
65
+ ### Bug Fixes
66
+
67
+ * **aw-description:** tag is span by default ([3441b5a](https://github.com/awes-io/client/commit/3441b5ac609224cb3ea5963915c9868f48c2317a))
68
+
69
+
70
+
71
+
72
+
6
73
  # [2.29.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.28.2...@awes-io/ui@2.29.0) (2021-10-04)
7
74
 
8
75
 
@@ -8,6 +8,7 @@
8
8
  @import './avatar.css';
9
9
  @import './banner-text.css';
10
10
  @import './badge.css';
11
+ @import './birthday-picker.css';
11
12
  @import './button.css';
12
13
  @import './button-nav.css';
13
14
 
@@ -71,6 +72,7 @@
71
72
 
72
73
  @import './select.css';
73
74
 
75
+ @import './userpic.css';
74
76
  @import './uploader.css';
75
77
 
76
78
  /* last because of @keyframes lowers performance */
@@ -0,0 +1,18 @@
1
+ .aw-birthday-picker {
2
+ &__wrap {
3
+ display: flex;
4
+ align-items: center;
5
+ gap: theme('spacing.4', 1rem);
6
+ }
7
+
8
+ &__day {
9
+ min-width: 5rem;
10
+ flex-basis: 20%;
11
+ }
12
+
13
+ &__month,
14
+ &__year {
15
+ min-width: 5rem;
16
+ flex-basis: 40%;
17
+ }
18
+ }
@@ -29,6 +29,11 @@
29
29
  @apply bg-mono-800;
30
30
  }
31
31
  }
32
+
33
+ &[disabled] > span {
34
+ opacity: 0.5;
35
+ cursor: not-allowed;
36
+ }
32
37
  }
33
38
 
34
39
  @screen md {
@@ -435,7 +435,7 @@ $modal-t-dur: 250ms;
435
435
  transform: none;
436
436
 
437
437
  .aw-modal__dialog {
438
- transform: translateX(100%);
438
+ transform: translateX(95%);
439
439
  }
440
440
  }
441
441
 
@@ -105,6 +105,16 @@
105
105
  left: 0;
106
106
  right: 0;
107
107
  z-index: 120;
108
+
109
+ &::-webkit-scrollbar {
110
+ background-color: transparent;
111
+ height: 0.5rem;
112
+ width: 0.5rem;
113
+ }
114
+
115
+ &::-webkit-scrollbar-thumb {
116
+ background-color: rgba(var(--c-on-surface-rgb), 0.1);
117
+ }
108
118
  }
109
119
  }
110
120
  }
@@ -133,6 +133,10 @@
133
133
  align-items: center;
134
134
  padding: 0;
135
135
  margin-bottom: theme('spacing.4', 1rem);
136
+
137
+ &:last-child {
138
+ margin-bottom: 0;
139
+ }
136
140
  }
137
141
 
138
142
  &__mobile-header-content {
@@ -0,0 +1,30 @@
1
+ .aw-userpic {
2
+ display: flex;
3
+ align-items: center;
4
+
5
+ &--crop {
6
+ max-width: 14rem;
7
+ }
8
+
9
+ &__content {
10
+ display: flex;
11
+ flex-direction: column;
12
+ min-width: 0;
13
+ margin-left: theme('spacing.2', 0.5rem);
14
+
15
+ &--with-description {
16
+
17
+ font-size: theme('fontSize.sm', 0.875rem);
18
+ }
19
+ }
20
+
21
+ &__name {
22
+ min-width: 0;
23
+ }
24
+
25
+ &__description {
26
+ color: var(--c-mono-400);
27
+ line-height: 1;
28
+ min-width: 0;
29
+ }
30
+ }
@@ -1,4 +1,5 @@
1
- import { split, reduce } from 'rambdax'
1
+ import insane from 'insane'
2
+ import { split, reduce, clone } from 'rambdax'
2
3
 
3
4
  export const ucFirst = (text = '') => {
4
5
  return text.charAt(0).toUpperCase() + text.substr(1)
@@ -34,3 +35,56 @@ export const hashStringToIndex = (str, limit) => {
34
35
 
35
36
  return hash
36
37
  }
38
+
39
+ export const SANITIZE_DEFAULTS = {
40
+ allowedAttributes: {
41
+ a: ['href', 'name', 'target', 'class', 'style'],
42
+ iframe: ['allowfullscreen', 'frameborder', 'src', 'class', 'style'],
43
+ img: [
44
+ 'src',
45
+ 'alt',
46
+ 'srcset',
47
+ 'sizes',
48
+ 'width',
49
+ 'height',
50
+ 'class',
51
+ 'style'
52
+ ],
53
+ button: ['class', 'id', 'style'],
54
+ allowedTags: [
55
+ 'a',
56
+ 'b',
57
+ 'br',
58
+ 'del',
59
+ 'div',
60
+ 'em',
61
+ 'i',
62
+ 'img',
63
+ 'ins',
64
+ 'kbd',
65
+ 'li',
66
+ 'ol',
67
+ 'p',
68
+ 'span',
69
+ 'strike',
70
+ 'strong',
71
+ 'sub',
72
+ 'sup',
73
+ 'u',
74
+ 'ul'
75
+ ]
76
+ }
77
+ }
78
+
79
+ export const getSanitizer = (options, strict = false) => {
80
+ let _options = clone(options)
81
+
82
+ if (!strict) {
83
+ _options = { ...SANITIZE_DEFAULTS, ..._options }
84
+ }
85
+
86
+ return (html) => (typeof html === 'string' ? insane(html, _options) : html)
87
+ }
88
+
89
+ export const sanitize = (html) =>
90
+ typeof html === 'string' ? insane(html, SANITIZE_DEFAULTS) : html
@@ -5,13 +5,20 @@
5
5
  </template>
6
6
 
7
7
  <script>
8
+ import { conf } from '@AwUtils/component'
9
+ import { AwDescription as _config } from '@AwConfig'
10
+
8
11
  export default {
9
12
  name: 'AwDescription',
10
13
 
14
+ _config,
15
+
11
16
  props: {
12
17
  tag: {
13
18
  type: String,
14
- default: 'p'
19
+ default() {
20
+ return conf(this, 'tag')
21
+ }
15
22
  }
16
23
  }
17
24
  }
@@ -27,7 +27,7 @@
27
27
  class="inline mr-1"
28
28
  />
29
29
 
30
- <slot v-html="label">{{ label }}</slot>
30
+ <slot>{{ label }}</slot>
31
31
 
32
32
  <component
33
33
  :is="_iconSecondComponent"
@@ -192,13 +192,20 @@
192
192
  <!-- options list -->
193
193
  <template v-if="optionsList.length && _isEditingOptions">
194
194
  <AwDropdownButton
195
- v-for="({ optionLabel, optionValue, index, active },
195
+ v-for="({
196
+ optionLabel,
197
+ optionValue,
198
+ index,
199
+ active,
200
+ disabled
201
+ },
196
202
  i) in optionsList"
197
203
  :key="`${optionLabel}-${index}`"
198
204
  :active="active"
199
205
  :data-select-index="index"
200
206
  :data-selected="active ? '' : null"
201
207
  :data-value="optionValue"
208
+ :disabled="disabled"
202
209
  tabindex="-1"
203
210
  data-arrow-focus
204
211
  >
@@ -244,6 +251,7 @@ import CancelToken from 'axios/lib/cancel/CancelToken'
244
251
  import isCancel from 'axios/lib/cancel/isCancel'
245
252
  import arrowFocusMixin from '@AwMixins/arrow-focus'
246
253
  import { TEST_ID_ATTR } from '@AwUtils/constants'
254
+ import { sanitize } from '@AwUtils/string'
247
255
 
248
256
  const returnSelf = (arg) => arg
249
257
 
@@ -274,6 +282,11 @@ export default {
274
282
  default: ''
275
283
  },
276
284
 
285
+ optionDisabled: {
286
+ type: Function,
287
+ default: () => false
288
+ },
289
+
277
290
  trackBy: {
278
291
  type: String,
279
292
  default: ''
@@ -423,6 +436,7 @@ export default {
423
436
  const matchSerach = this._hasInternalSearch
424
437
  ? this._matchSearch(option)
425
438
  : true
439
+ const disabled = this.optionDisabled(option)
426
440
 
427
441
  return inRange && matchSerach
428
442
  ? acc.concat({
@@ -430,7 +444,8 @@ export default {
430
444
  optionLabel: this._getLabel(option),
431
445
  optionValue: this._getValue(option),
432
446
  index,
433
- active
447
+ active,
448
+ disabled
434
449
  })
435
450
  : acc
436
451
  }, [])
@@ -654,11 +669,11 @@ export default {
654
669
 
655
670
  _highlightOption(option) {
656
671
  if (!this.searchPhrase.trim().length) {
657
- return option
672
+ return sanitize(option)
658
673
  }
659
674
 
660
675
  try {
661
- const opt = String(option)
676
+ const opt = String(sanitize(option))
662
677
  const phrase = this._escapeRegExpSpecialChars(this.searchPhrase)
663
678
  const matches = opt.match(new RegExp(phrase, 'gi'))
664
679
  return this._addBoldTagsToString(opt, matches)
@@ -120,13 +120,20 @@
120
120
  <!-- options list -->
121
121
  <template v-if="optionsList.length">
122
122
  <AwDropdownButton
123
- v-for="({ optionLabel, optionValue, index, active },
123
+ v-for="({
124
+ optionLabel,
125
+ optionValue,
126
+ index,
127
+ active,
128
+ disabled
129
+ },
124
130
  i) in optionsList"
125
131
  :key="`${optionLabel}-${index}`"
126
132
  :active="active"
127
133
  :data-select-index="index"
128
134
  :data-selected="active ? '' : null"
129
135
  :data-value="optionValue"
136
+ :disabled="disabled"
130
137
  tabindex="-1"
131
138
  data-arrow-focus
132
139
  >
@@ -174,6 +181,7 @@ import CancelToken from 'axios/lib/cancel/CancelToken'
174
181
  import isCancel from 'axios/lib/cancel/isCancel'
175
182
  import arrowFocusMixin from '@AwMixins/arrow-focus'
176
183
  import { TEST_ID_ATTR } from '@AwUtils/constants'
184
+ import { sanitize } from '@AwUtils/string'
177
185
  import AwSelectInput from './_AwSelectInput.vue'
178
186
 
179
187
  const isObject = (val) => val !== null && typeof val === 'object'
@@ -211,6 +219,11 @@ export default {
211
219
  default: ''
212
220
  },
213
221
 
222
+ optionDisabled: {
223
+ type: Function,
224
+ default: () => false
225
+ },
226
+
214
227
  trackBy: {
215
228
  type: String,
216
229
  default: ''
@@ -339,13 +352,15 @@ export default {
339
352
  const optionLabel = this._getLabel(option)
340
353
  const optionValue = this._getValue(option)
341
354
  const active = this._isActive(optionValue)
355
+ const disabled = this.optionDisabled(option)
342
356
 
343
357
  return acc.concat({
344
358
  option,
345
359
  optionLabel,
346
360
  optionValue,
347
361
  index,
348
- active
362
+ active,
363
+ disabled
349
364
  })
350
365
  } else {
351
366
  return acc
@@ -597,9 +612,11 @@ export default {
597
612
  }
598
613
 
599
614
  try {
600
- return option.replace(this._optionSearchRegEx, '<b>$&</b>')
615
+ return sanitize(
616
+ option.replace(this._optionSearchRegEx, '<b>$&</b>')
617
+ )
601
618
  } catch (e) {
602
- return option
619
+ return sanitize(option)
603
620
  }
604
621
  },
605
622
 
@@ -730,10 +747,7 @@ export default {
730
747
  this.cancellation = CancelToken.source()
731
748
 
732
749
  try {
733
- let config = this.options(
734
- encodeURIComponent(this.searchPhrase),
735
- page
736
- )
750
+ let config = this.options(this.searchPhrase, page)
737
751
 
738
752
  if (typeof config === 'string') {
739
753
  config = {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <span class="flex items-center">
2
+ <span class="aw-userpic" :class="{ 'aw-userpic--crop': crop }">
3
3
  <AwAvatar
4
4
  :size="bigImage ? 36 : 22"
5
5
  :src="src"
@@ -10,17 +10,23 @@
10
10
  <slot name="name" v-bind="{ name, description }">
11
11
  <span
12
12
  v-if="!hideName"
13
- class="ml-2 flex flex-col min-w-0"
14
- :class="{ 'text-sm': !!description }"
13
+ class="aw-userpic__content"
14
+ :class="{
15
+ 'aw-userpic__content--with-description':
16
+ !!description || $scopedSlots.description
17
+ }"
15
18
  >
16
- <span class="min-w-0 truncate">
19
+ <span class="aw-userpic__name" :class="{ truncate }">
17
20
  {{ name }} <slot name="after-name" v-bind="{ name }" />
18
21
  </span>
19
22
 
20
23
  <slot name="description" v-bind="{ name, description }">
21
- <span class="text-mono-400 leading-none min-w-0 truncate">
24
+ <AwDescription
25
+ class="aw-userpic__description"
26
+ :class="{ truncate }"
27
+ >
22
28
  {{ description }} <slot name="after-description" />
23
- </span>
29
+ </AwDescription>
24
30
  </slot>
25
31
  </span>
26
32
  </slot>
@@ -66,6 +72,18 @@ export default {
66
72
  bigImage: {
67
73
  type: Boolean,
68
74
  default: false
75
+ },
76
+
77
+ // Crop max width
78
+ crop: {
79
+ type: Boolean,
80
+ default: true
81
+ },
82
+
83
+ // Truncate title and description
84
+ truncate: {
85
+ type: Boolean,
86
+ default: true
69
87
  }
70
88
  },
71
89
 
@@ -1,15 +1,15 @@
1
1
  <template>
2
- <AwInfo :label="label">
3
- <AwGrid :col="{ md: 5 }">
2
+ <AwInfo :label="label" class="aw-birthday-picker">
3
+ <div class="aw-birthday-picker__wrap">
4
4
  <AwSelect
5
5
  v-model="month"
6
- :span="{ md: 2 }"
7
6
  :options="monthsList"
8
7
  :required="required"
9
8
  :name="_inputKeys.month"
10
9
  :label="$t('AwBirthdayPicker.month')"
11
10
  track-by="value"
12
11
  option-label="text"
12
+ class="aw-birthday-picker__month"
13
13
  @input="checkMaxDay"
14
14
  />
15
15
 
@@ -19,10 +19,11 @@
19
19
  :required="required"
20
20
  :name="_inputKeys.day"
21
21
  :label="$t('AwBirthdayPicker.day')"
22
+ class="aw-birthday-picker__day"
22
23
  @input="emit"
23
24
  />
24
25
 
25
- <div class="flex items-center h-full" :span="{ md: 2 }">
26
+ <div class="aw-birthday-picker__year">
26
27
  <AwLink
27
28
  v-if="!_showYear"
28
29
  :text="$t('AwBirthdayPicker.set_year')"
@@ -42,7 +43,7 @@
42
43
  @clear="clearYear"
43
44
  />
44
45
  </div>
45
- </AwGrid>
46
+ </div>
46
47
  </AwInfo>
47
48
  </template>
48
49
 
@@ -129,7 +129,7 @@ export default {
129
129
 
130
130
  computed: {
131
131
  switchers() {
132
- return MODES.map(mode => this.$t(`AwMarkdownEditor.${mode}`))
132
+ return MODES.map((mode) => this.$t(`AwMarkdownEditor.${mode}`))
133
133
  },
134
134
 
135
135
  isPreview() {
@@ -11,7 +11,6 @@
11
11
  <aside
12
12
  v-show="isOpened"
13
13
  :class="[className, `is-${theme}`]"
14
- :tabindex="isOpened ? '0' : '-1'"
15
14
  role="dialog"
16
15
  :aria-hidden="isOpened ? 'false' : 'true'"
17
16
  :aria-label="title"
@@ -23,7 +22,7 @@
23
22
  >
24
23
  <div :class="elClasses.dialog" role="document">
25
24
  <!-- header -->
26
- <div :class="elClasses.header">
25
+ <div ref="header" tabindex="-1" :class="elClasses.header">
27
26
  <div :class="elClasses.title">
28
27
  {{ title }}
29
28
  </div>
@@ -247,7 +246,7 @@ export default {
247
246
  if (isVisible) {
248
247
  if (typeof document === 'undefined') return
249
248
  this.lastFocused = document.activeElement
250
- this.$nextTick(() => this.$el.focus())
249
+ this.$nextTick(() => this.$refs.header.focus())
251
250
  window.addEventListener('keyup', this._escButtonHandler)
252
251
  } else {
253
252
  window.removeEventListener('keyup', this._escButtonHandler)
@@ -5,6 +5,7 @@
5
5
  v-bind="$attrs"
6
6
  v-model="text"
7
7
  autocomplete="off"
8
+ class="aw-search"
8
9
  :placeholder="placeholder"
9
10
  @keydown.enter.prevent="_setSearchImmediate"
10
11
  >
@@ -12,9 +13,13 @@
12
13
  <AwIconSystemMono
13
14
  v-if="!$route.query[param]"
14
15
  name="search"
15
- class="h-full w-10 p-3"
16
+ class="aw-search__icon-default h-full w-10 p-3"
16
17
  />
17
- <button v-else class="focus:outline-none" @click="_clear">
18
+ <button
19
+ v-else
20
+ class="aw-search__icon-close focus:outline-none"
21
+ @click="_clear"
22
+ >
18
23
  <AwIconSystemMono name="close" class="h-full w-10 p-3" />
19
24
  </button>
20
25
  </template>
@@ -66,7 +66,7 @@
66
66
  >
67
67
  <div
68
68
  class="flex-1 text-sm text-mono-400"
69
- v-html="$t('AwLayoutDefault.footer')"
69
+ v-html="$sanitize($t('AwLayoutDefault.footer'))"
70
70
  ></div>
71
71
  <div class="flex-1 text-center">
72
72
  <AwButton
@@ -19,7 +19,7 @@
19
19
  </div>
20
20
 
21
21
  <div
22
- v-html="$t('AwLayoutDefault.footer')"
22
+ v-html="$sanitize($t('AwLayoutDefault.footer'))"
23
23
  class="pt-8 text-sm"
24
24
  ></div>
25
25
  </div>
@@ -14,7 +14,7 @@
14
14
  class="aw-header-notification__content container-fluid"
15
15
  >
16
16
  <AwIcon v-if="config.icon" :name="config.icon" />
17
- <span v-html="config.text" class="text-center"></span>
17
+ <span v-html="$sanitize(config.text)" class="text-center"></span>
18
18
  <AwButton
19
19
  v-for="({ listeners, ...props }, i) in config.buttons"
20
20
  :key="i"
@@ -17,7 +17,7 @@
17
17
  {{ text }}
18
18
  <span
19
19
  v-if="description"
20
- v-html="description"
20
+ v-html="$sanitize(description)"
21
21
  class="aw-mobile-menu-item__description"
22
22
  ></span>
23
23
  </span>
@@ -53,7 +53,7 @@
53
53
  </template>
54
54
 
55
55
  <script>
56
- import insane from 'insane'
56
+ import { sanitize } from '@AwUtils/string'
57
57
  import AwIcon from '@AwAtoms/AwIcon/AwIcon.vue'
58
58
  import AwIconSystemMono from '@AwAtoms/AwIcon/AwIconSystemMono.vue'
59
59
 
@@ -100,6 +100,6 @@ export default {
100
100
  }
101
101
  },
102
102
 
103
- sanitize: insane
103
+ sanitize
104
104
  }
105
105
  </script>
@@ -28,6 +28,10 @@ export const AwDate = {
28
28
  format: 'll'
29
29
  }
30
30
 
31
+ export const AwDescription = {
32
+ tag: 'span'
33
+ }
34
+
31
35
  export const AwDropdown = {
32
36
  tag: 'div',
33
37
  baseClass: 'aw-dropdown',
package/lang/de.js CHANGED
@@ -112,7 +112,7 @@ export const AwUploader = {
112
112
 
113
113
  export const AwSearch = {
114
114
  text: 'Suche',
115
- keyBind: ' (Drücken Sie "{key}", um zu fokussieren)'
115
+ keyBind: ''
116
116
  }
117
117
 
118
118
  export const AwUserMenu = {
package/lang/en.js CHANGED
@@ -133,7 +133,7 @@ export const AwUploader = {
133
133
 
134
134
  export const AwSearch = {
135
135
  text: 'Search',
136
- keyBind: ' (Press "{key}" to focus)'
136
+ keyBind: ''
137
137
  }
138
138
 
139
139
  export const AwUserMenu = {
package/lang/ru.js CHANGED
@@ -117,7 +117,7 @@ export const AwUploader = {
117
117
 
118
118
  export const AwSearch = {
119
119
  text: 'Поиск',
120
- keyBind: ' (Нажмите "{key}", для поиска)'
120
+ keyBind: ''
121
121
  }
122
122
 
123
123
  export const AwUserMenu = {
package/lang/uk.js CHANGED
@@ -113,7 +113,7 @@ export const AwTableBuilder = {
113
113
 
114
114
  export const AwSearch = {
115
115
  text: 'Пошук',
116
- keyBind: ' (Натисніть "{key}", для пошуку)'
116
+ keyBind: ''
117
117
  }
118
118
 
119
119
  export const AwUserMenu = {
@@ -0,0 +1,5 @@
1
+ import { sanitize } from '@AwUtils/string'
2
+
3
+ export default (ctx, inject) => {
4
+ inject('sanitize', sanitize)
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awes-io/ui",
3
- "version": "2.29.0",
3
+ "version": "2.31.0",
4
4
  "description": "User Interface (UI) components",
5
5
  "keywords": [
6
6
  "ui",
@@ -9,7 +9,7 @@
9
9
  "awes-io",
10
10
  "material design"
11
11
  ],
12
- "homepage": "https://www.awes.io",
12
+ "homepage": "https://awes.io",
13
13
  "bugs": {
14
14
  "url": "https://github.com/awes-io/client/issues"
15
15
  },
@@ -123,5 +123,5 @@
123
123
  "vue-template-compiler": "^2.6.10",
124
124
  "webfonts-generator": "^0.4.0"
125
125
  },
126
- "gitHead": "30ce309cb3886f77efbce6ed30bdcaf1974161c5"
126
+ "gitHead": "c2b5c259d670718d335f294b240d5c264f4c30b9"
127
127
  }
package/readme.md ADDED
@@ -0,0 +1 @@
1
+ Awes.io/Ui
package/assets/.DS_Store DELETED
Binary file
Binary file
Binary file
Binary file