@awes-io/ui 2.138.0 → 2.140.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
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.140.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.139.0...@awes-io/ui@2.140.0) (2025-10-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * do nothing if select loading ([03a8a4b](https://github.com/awes-io/client/commit/03a8a4b931ff6f73d5398da9b80cbecadad63787))
12
+
13
+
14
+ ### Features
15
+
16
+ * create new design for notify component ([28523fc](https://github.com/awes-io/client/commit/28523fcf5950e384d659f2e69ad476803ae0c25e))
17
+ * remove unused code ([f1a2390](https://github.com/awes-io/client/commit/f1a2390c383f0a9ab77f214eff2712c25e410796))
18
+
19
+
20
+
21
+
22
+
23
+ # [2.139.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.138.0...@awes-io/ui@2.139.0) (2025-10-24)
24
+
25
+
26
+ ### Features
27
+
28
+ * change place error icons ([e0a692d](https://github.com/awes-io/client/commit/e0a692d81812488c7bbbdc66dc871bcbacf08673))
29
+ * link regex extended ([6a37e65](https://github.com/awes-io/client/commit/6a37e65e2c1a9f735d966c6db7836cfd53b24e17))
30
+
31
+
32
+
33
+
34
+
6
35
  # [2.138.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.137.0...@awes-io/ui@2.138.0) (2025-10-17)
7
36
 
8
37
 
@@ -36,8 +36,6 @@
36
36
  padding-left: 1.5rem;
37
37
  }
38
38
 
39
-
40
-
41
39
  .croppie-container {
42
40
  visibility: hidden;
43
41
 
@@ -1,35 +1,69 @@
1
1
  .aw-noty {
2
- --bg-opacity: 1;
3
2
  display: flex;
4
3
  align-items: flex-start;
5
- padding: theme('spacing.2') theme('spacing.4');
6
- border-radius: theme('borderRadius.lg');
7
- box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);
4
+ gap: 1rem;
8
5
 
9
- &.bg-overlay {
10
- @apply bg-surface;
11
- box-shadow: 0px 20px 40px rgba(56, 56, 104, 0.1);
6
+ padding: 0.75rem 1rem;
7
+ border-radius: 0.625rem;
8
+ background: var(--c-notify-bg);
9
+ box-shadow: 0 2px 5px 0 #14171D1A;
10
+
11
+ &:hover {
12
+ background: var(--c-on-notify-bg);
13
+
14
+ .aw-noty__button {
15
+ color: var(--c-on-notify-close-icon);
16
+
17
+ &-circle {
18
+ stroke: var(--c-on-notify-close-icon);
19
+ }
20
+ }
21
+ }
22
+
23
+ &--info {
24
+ .aw-noty__icon {
25
+ color: var(--c-on-blue);
26
+ }
12
27
  }
13
28
 
14
- &__icon {
15
- @apply mr-2;
29
+ &--warning {
30
+ .aw-noty__icon {
31
+ color: var(--c-on-yellow);
32
+ }
33
+ }
34
+
35
+ &--success {
36
+ .aw-noty__icon {
37
+ color: var(--c-success);
38
+ }
39
+ }
40
+
41
+ &--error {
42
+ .aw-noty__icon {
43
+ color: var(--c-error);
44
+ }
16
45
  }
17
46
 
18
47
  &__content {
19
48
  flex-grow: 1;
49
+ align-self: center;
50
+
51
+ &.has-text .aw-noty__title {
52
+ @apply font-bold;
53
+ }
20
54
  }
21
55
 
22
56
  &__title {
23
- font-size: theme('fontSize.sm', 0.875rem);
24
- line-height: theme('leading.5', 1.25rem);
57
+ font-size: 1rem;
58
+ line-height: 1;
59
+ color: var(--c-surface);
25
60
  }
26
61
 
27
62
  &__text {
28
- font-size: theme('fontSize.xs');
29
- }
30
-
31
- &__has-text &__title {
32
- @apply font-bold;
63
+ font-size: 1rem;
64
+ line-height: 1;
65
+ color: var(--c-surface);
66
+ margin-top: 0.125rem;
33
67
  }
34
68
 
35
69
  &__icon,
@@ -38,9 +72,36 @@
38
72
  }
39
73
 
40
74
  &__button {
41
- display: block;
42
- line-height: 1;
43
- padding: theme('spacing.1');
75
+ color: var(--c-notify-close-icon);
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ align-self: center;
80
+
81
+ &-circular {
82
+ transform: rotateY(-180deg);
83
+ }
84
+
85
+ &-circle {
86
+ fill: none;
87
+ stroke: var(--c-notify-close-icon);
88
+ stroke-width: 2;
89
+ stroke-linecap: round;
90
+ animation: countdown var(--noty-animation-duration) linear forwards;
91
+ }
92
+
93
+ &-icon {
94
+ position: absolute;
95
+ }
96
+ }
97
+
98
+ @keyframes countdown {
99
+ from {
100
+ stroke-dashoffset: 0px;
101
+ }
102
+ to {
103
+ stroke-dashoffset: 100px;
104
+ }
44
105
  }
45
106
  }
46
107
 
@@ -60,8 +121,22 @@
60
121
  bottom: env(safe-area-inset-bottom, 0px);
61
122
 
62
123
  &_top {
63
- top: env(safe-area-inset-top, 0px);
64
- bottom: auto;
124
+ top: auto;
125
+ bottom: env(safe-area-inset-bottom, 0px);
126
+ margin-bottom: 4.5rem !important;
127
+ margin-top: 0;
128
+
129
+ .aw-noty-container__item {
130
+ padding-top: 1rem;
131
+
132
+ &:first-of-type {
133
+ padding-top: 0;
134
+ }
135
+
136
+ &:last-of-type {
137
+ padding-bottom: 0;
138
+ }
139
+ }
65
140
  }
66
141
 
67
142
  &_left {
@@ -76,7 +151,13 @@
76
151
  &_center {
77
152
  @apply items-center;
78
153
  right: 50%;
79
- transform: translateX(50%)
154
+ transform: translateX(50%);
155
+ width: 100%;
156
+ max-width: 100%;
157
+
158
+ .aw-noty-container__item {
159
+ width: 100%;
160
+ }
80
161
  }
81
162
 
82
163
  &__item {
@@ -91,14 +172,31 @@
91
172
  }
92
173
  }
93
174
 
94
- @screen md {
175
+ @screen lg {
176
+ .aw-page-single-noty {
177
+ .aw-noty-container {
178
+ &_top {
179
+ margin-top: 3.5rem;
180
+ }
181
+ }
182
+ }
183
+
95
184
  .aw-noty-container {
96
185
  width: auto;
97
186
  max-width: theme('maxWidth.xs', 20rem);
98
187
 
99
- /* &__item {
100
- width: fit-content;
101
- } */
188
+ &_top {
189
+ top: env(safe-area-inset-top, 0px);
190
+ bottom: auto;
191
+ margin-top: 0.5rem;
192
+ margin-bottom: 0 !important;
193
+
194
+ .aw-noty-container__item {
195
+ &:last-of-type {
196
+ padding-bottom: 0.5rem;
197
+ }
198
+ }
199
+ }
102
200
  }
103
201
  }
104
202
 
@@ -23,5 +23,23 @@ export default{
23
23
  height: 10,
24
24
  viewBox: '0 0 10 10',
25
25
  content: '<path fill="currentColor" fill-opacity=".5" d="M8 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"/>'
26
+ },
27
+ 'error-circle': {
28
+ width: 24,
29
+ height: 24,
30
+ viewBox: '0 0 24 24',
31
+ content: '<path fill="currentColor" d="M12 0c6.628 0 12 5.374 12 12s-5.372 12-12 12S0 18.626 0 12 5.372 0 12 0m.002 15.605a1.2 1.2 0 1 0-.075 2.397 1.2 1.2 0 0 0 .075-2.397M12 6a1.2 1.2 0 0 0-1.192 1.06l-.008.14.002 6.001.009.14a1.2 1.2 0 0 0 2.383 0l.008-.14L13.2 7.2l-.008-.14A1.2 1.2 0 0 0 12 6"/><path fill="#fff" d="M12.002 15.605a1.2 1.2 0 1 0-.075 2.397 1.2 1.2 0 0 0 .075-2.397M12 6a1.2 1.2 0 0 0-1.192 1.06l-.008.14.002 6.001.009.14a1.2 1.2 0 0 0 2.383 0l.008-.14L13.2 7.2l-.008-.14A1.2 1.2 0 0 0 12 6"/>'
32
+ },
33
+ 'info-circle': {
34
+ width: 24,
35
+ height: 24,
36
+ viewBox: '0 0 24 24',
37
+ content: '<path fill="currentColor" d="M12 24c6.628 0 12-5.374 12-12S18.628 0 12 0 0 5.374 0 12s5.372 12 12 12m.002-15.605a1.199 1.199 0 1 1-.075-2.397 1.199 1.199 0 0 1 .075 2.397M12 18a1.2 1.2 0 0 1-1.192-1.06l-.008-.14.002-6.001.009-.14a1.2 1.2 0 0 1 2.383 0l.008.14L13.2 16.8l-.008.14A1.2 1.2 0 0 1 12 18"/><path fill="#fff" d="M12 18a1.2 1.2 0 0 1-1.192-1.06l-.008-.14.002-6.001.009-.14a1.2 1.2 0 0 1 2.383 0l.008.14L13.2 16.8l-.008.14A1.2 1.2 0 0 1 12 18M12.002 8.395a1.199 1.199 0 1 1-.075-2.397 1.199 1.199 0 0 1 .075 2.397"/>'
38
+ },
39
+ 'check-circle': {
40
+ width: 24,
41
+ height: 24,
42
+ viewBox: '0 0 24 24',
43
+ content: '<circle cx="12" cy="12" r="12" fill="currentColor"/><path fill="#fff" fill-rule="evenodd" d="M16.611 8.208a1 1 0 0 1 .18 1.403l-4.63 6a1 1 0 0 1-1.408.177l-3.368-2.63a1 1 0 0 1 1.23-1.576l2.576 2.011L15.21 8.39a1 1 0 0 1 1.402-.18" clip-rule="evenodd"/>'
26
44
  }
27
45
  }
@@ -69,6 +69,9 @@ export default {
69
69
  'page-bg': '#F3F5F7',
70
70
  overlay: 'rgba(20, 23, 29, 0.6)',
71
71
 
72
+ 'notify-bg': '#292A2E',
73
+ 'notify-close-icon': '#ABACAD',
74
+
72
75
  'mono-0': '#000',
73
76
  'mono-50': '#0a0c0f',
74
77
  'mono-100': '#14171d',
@@ -97,6 +100,9 @@ export default {
97
100
  'page-bg': '#14171d',
98
101
  overlay: '#fff',
99
102
 
103
+ 'notify-bg': '#434447',
104
+ 'notify-close-icon': '#C0C1C2',
105
+
100
106
  'mono-0': '#fff',
101
107
  'mono-50': '#fff',
102
108
  'mono-100': '#fff',
@@ -126,6 +132,9 @@ export default {
126
132
  'page-bg': '#010101',
127
133
  overlay: 'rgba(0, 0, 0, 0.6)',
128
134
 
135
+ 'notify-bg': '#FFFFFF',
136
+ 'notify-close-icon': '#838587',
137
+
129
138
  'mono-0': '#FFFFFF',
130
139
  'mono-50': '#DBDDDE',
131
140
  'mono-100': '#feffff',
@@ -153,6 +162,9 @@ export default {
153
162
  'page-bg': '#e7eaed',
154
163
  overlay: '#fff',
155
164
 
165
+ 'notify-bg': '#F3F5F7',
166
+ 'notify-close-icon': '#595D62',
167
+
156
168
  'mono-0': '#2E2F33',
157
169
  'mono-50': '#2E2F33',
158
170
  'mono-100': '#2E2F33',
@@ -841,6 +841,11 @@ export default {
841
841
  },
842
842
 
843
843
  _selectOnEnter() {
844
+ // stop if loading
845
+ if (this._isAjax && this.isLoading) {
846
+ return
847
+ }
848
+
844
849
  // close if nothing typed
845
850
  if (!this.searchPhrase) {
846
851
  this.isOpened = false
@@ -809,6 +809,11 @@ export default {
809
809
  },
810
810
 
811
811
  _selectOnEnter() {
812
+ // stop if loading
813
+ if (this._isAjax && this.isLoading) {
814
+ return
815
+ }
816
+
812
817
  // close if nothing typed
813
818
  if (this._showNotFound) {
814
819
  this.$emit('not-found', this.searchPhrase)
@@ -178,6 +178,14 @@ export default {
178
178
  }
179
179
  },
180
180
 
181
+ head() {
182
+ return {
183
+ bodyAttrs: {
184
+ class: 'aw-page-single-noty'
185
+ }
186
+ }
187
+ },
188
+
181
189
  computed: {
182
190
  isDesktop() {
183
191
  return this.$screen[this.desktopFrom] || false
@@ -4,7 +4,7 @@
4
4
 
5
5
  <div class="aw-layout-error__card">
6
6
  <svg
7
- v-if="statusCode === 404"
7
+ v-if="statusCode === 403"
8
8
  xmlns="http://www.w3.org/2000/svg"
9
9
  width="200"
10
10
  height="200"
@@ -69,7 +69,7 @@
69
69
  </svg>
70
70
 
71
71
  <svg
72
- v-else-if="statusCode === 403"
72
+ v-else-if="statusCode === 404"
73
73
  xmlns="http://www.w3.org/2000/svg"
74
74
  width="200"
75
75
  height="200"
@@ -1,30 +1,33 @@
1
1
  <template functional>
2
2
  <div
3
3
  :data-testid="props.testId"
4
- :class="{
5
- 'bg-overlay': props.icon,
6
- [`bg-${props.type}`]: !props.icon,
7
- 'aw-noty__has-text': props.text
8
- }"
9
4
  class="aw-noty"
5
+ :class="`aw-noty--${props.type}`"
6
+ :style="{ '--noty-animation-duration': `${props.duration}ms` }"
10
7
  >
11
8
  <!-- icon -->
12
9
  <Component
13
- :is="$options.components.AwIcon"
10
+ :is="
11
+ typeof props.icon === 'string'
12
+ ? $options.components.AwIcon
13
+ : $options.components.AwIconSystemColor
14
+ "
14
15
  v-if="props.icon"
15
16
  :name="
16
17
  typeof props.icon === 'string'
17
18
  ? props.icon
18
19
  : $options.getDefaultIconName(props.type)
19
20
  "
20
- size="20"
21
+ size="24"
21
22
  class="aw-noty__icon"
22
23
  :class="`text-${props.type}`"
23
24
  />
24
25
 
25
26
  <!-- content -->
26
27
  <div class="aw-noty__content" :class="{ 'has-text': props.text }">
27
- <div class="aw-noty__title">{{ props.title }}</div>
28
+ <div class="aw-noty__title">
29
+ {{ props.title }}
30
+ </div>
28
31
  <div
29
32
  v-if="props.text"
30
33
  v-html="$options.sanitize(props.text)"
@@ -38,10 +41,25 @@
38
41
  @click="props.remove"
39
42
  class="aw-noty__button"
40
43
  >
44
+ <svg
45
+ width="22"
46
+ height="22"
47
+ viewBox="0 0 36 36"
48
+ class="aw-noty__button-circular"
49
+ >
50
+ <path
51
+ class="aw-noty__button-circle"
52
+ :stroke-dasharray="100"
53
+ :stroke-dashoffset="100"
54
+ d="M18 2.0845a 15.9155 15.9155 0 0 1 0 31.831a 15.9155 15.9155 0 0 1 0 -31.831"
55
+ />
56
+ </svg>
57
+
41
58
  <Component
42
59
  :is="$options.components.AwIconSystemMono"
43
60
  name="close"
44
- size="14"
61
+ size="8"
62
+ class="aw-noty__button-icon"
45
63
  />
46
64
  </button>
47
65
  </div>
@@ -51,13 +69,15 @@
51
69
  import { sanitize } from '@AwUtils/string'
52
70
  import AwIcon from '@AwAtoms/AwIcon/AwIcon.vue'
53
71
  import AwIconSystemMono from '@AwAtoms/AwIcon/AwIconSystemMono.vue'
72
+ import AwIconSystemColor from '@AwAtoms/AwIcon/AwIconSystemColor.vue'
54
73
 
55
74
  export default {
56
75
  name: 'AwNoty',
57
76
 
58
77
  components: {
59
78
  AwIcon,
60
- AwIconSystemMono
79
+ AwIconSystemMono,
80
+ AwIconSystemColor
61
81
  },
62
82
 
63
83
  props: {
@@ -96,7 +116,12 @@ export default {
96
116
 
97
117
  closable: {
98
118
  type: Boolean,
99
- default: false
119
+ default: true
120
+ },
121
+
122
+ duration: {
123
+ type: Number,
124
+ default: null
100
125
  }
101
126
  },
102
127
 
@@ -105,13 +130,13 @@ export default {
105
130
  getDefaultIconName(type) {
106
131
  switch (type) {
107
132
  case 'error':
108
- return 'awesio/close-circle'
133
+ return 'error-circle'
109
134
  case 'warning':
110
- return 'awesio/warning'
135
+ return 'info-circle'
111
136
  case 'info':
112
- return 'awesio/info-circle'
137
+ return 'info-circle'
113
138
  default:
114
- return 'awesio/check-circle'
139
+ return 'check-circle'
115
140
  }
116
141
  }
117
142
  }
@@ -63,8 +63,10 @@ export default {
63
63
  const id = _notifyId++
64
64
  item.id = id
65
65
  item.testId = item.testId || 'notifi-' + id
66
+ item.duration = parseInt(item.timeout)
66
67
 
67
68
  const removeAfter = parseInt(item.timeout)
69
+
68
70
  if (removeAfter && !isNaN(removeAfter)) {
69
71
  item.timeout = setTimeout(this.remove, removeAfter, id)
70
72
  }
@@ -2,7 +2,8 @@ import { pathOr, isEmpty } from 'rambdax'
2
2
  import { COLORS } from '../assets/js/constants'
3
3
 
4
4
  export const LINK_REGEX = /^(https?:)?\/\//
5
- export const SPECIAL_URL_REGEX = /tel:|mailto:/
5
+ export const HTTP_REGEX = /^https?:/i
6
+ export const SPECIAL_URL_REGEX = /^([a-zA-Z][a-zA-Z0-9+.-]*):(?:\/\/)?/
6
7
 
7
8
  export const AwAvatar = {
8
9
  colors: COLORS
package/mixins/link.js CHANGED
@@ -1,4 +1,4 @@
1
- import { LINK_REGEX, SPECIAL_URL_REGEX } from '@AwConfig'
1
+ import { LINK_REGEX, HTTP_REGEX, SPECIAL_URL_REGEX } from '@AwConfig'
2
2
 
3
3
  export default {
4
4
  inheritAttrs: false,
@@ -69,7 +69,7 @@ export default {
69
69
  _linkSpecial() {
70
70
  const h = this.href
71
71
 
72
- return typeof h === 'string' && h && SPECIAL_URL_REGEX.test(h)
72
+ return typeof h === 'string' && h && SPECIAL_URL_REGEX.test(h) && !HTTP_REGEX.test(h)
73
73
  },
74
74
 
75
75
  _linkDownload() {
@@ -54,4 +54,4 @@ export default ({ app }, inject) => {
54
54
  // BaseCollection.prototype,
55
55
  // redirect
56
56
  // )
57
- // }
57
+ // }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awes-io/ui",
3
- "version": "2.138.0",
3
+ "version": "2.140.0",
4
4
  "description": "User Interface (UI) components",
5
5
  "keywords": [
6
6
  "ui",
@@ -114,5 +114,5 @@
114
114
  "rollup-plugin-visualizer": "^2.6.0",
115
115
  "rollup-plugin-vue": "^5.0.1"
116
116
  },
117
- "gitHead": "8a0bbf54aca0f6fccf4120172b531b536a243983"
117
+ "gitHead": "e2805427b095c761e932f912d218ee212b08e52e"
118
118
  }