@empathyco/x-components 3.0.0-alpha.190 → 3.0.0-alpha.192

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 (22) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/design-system/default-theme.css +102 -102
  3. package/design-system/full-theme.css +7 -6
  4. package/docs/API-reference/api/x-components.searchboxxevents.md +2 -0
  5. package/docs/API-reference/api/x-components.searchboxxevents.userhoveredinsearchbox.md +13 -0
  6. package/docs/API-reference/api/x-components.searchboxxevents.userhoveredoutsearchbox.md +13 -0
  7. package/js/components/animations/animate-translate/animate-translate.style.scss.js +1 -1
  8. package/js/components/animations/create-directional-animation-factory.js.map +1 -1
  9. package/js/x-modules/search-box/components/search-input.vue.js +3 -1
  10. package/js/x-modules/search-box/components/search-input.vue.js.map +1 -1
  11. package/js/x-modules/search-box/components/search-input.vue_rollup-plugin-vue_script.vue.js +16 -0
  12. package/js/x-modules/search-box/components/search-input.vue_rollup-plugin-vue_script.vue.js.map +1 -1
  13. package/js/x-modules/search-box/components/search-input.vue_rollup-plugin-vue_styles.0.vue.js +1 -1
  14. package/package.json +13 -10
  15. package/report/x-components.api.json +52 -0
  16. package/report/x-components.api.md +6 -0
  17. package/types/components/animations/create-directional-animation-factory.d.ts +1 -1
  18. package/types/components/animations/create-directional-animation-factory.d.ts.map +1 -1
  19. package/types/x-modules/search-box/components/search-input.vue.d.ts +12 -0
  20. package/types/x-modules/search-box/components/search-input.vue.d.ts.map +1 -1
  21. package/types/x-modules/search-box/events.types.d.ts +10 -0
  22. package/types/x-modules/search-box/events.types.d.ts.map +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file. See
4
4
  [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.0.0-alpha.192](https://github.com/empathyco/x/compare/@empathyco/x-components@3.0.0-alpha.191...@empathyco/x-components@3.0.0-alpha.192) (2022-10-14)
7
+
8
+ ### Continuous Integration
9
+
10
+ - update `runners` version (#740)
11
+ ([38f246c](https://github.com/empathyco/x/commit/38f246c306dac40c4afbcdea08336052981ca9b8))
12
+
13
+ # Change Log
14
+
15
+ All notable changes to this project will be documented in this file. See
16
+ [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
17
+
18
+ ## [3.0.0-alpha.191](https://github.com/empathyco/x/compare/@empathyco/x-components@3.0.0-alpha.190...@empathyco/x-components@3.0.0-alpha.191) (2022-10-13)
19
+
20
+ ### Features
21
+
22
+ - Add directional origins for translate animations (#773)
23
+ ([9f4a0b0](https://github.com/empathyco/x/commit/9f4a0b03c675291672081388e42fcec725ab594d))
24
+ - Add search input hover events (#772)
25
+ ([393cc87](https://github.com/empathyco/x/commit/393cc877457f618396a5b71a7a826e6e8d139c3a)),
26
+ closes [EX-7177](https://searchbroker.atlassian.net/browse/EX-7177)
27
+
28
+ # Change Log
29
+
30
+ All notable changes to this project will be documented in this file. See
31
+ [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
32
+
6
33
  ## [3.0.0-alpha.190](https://github.com/empathyco/x/compare/@empathyco/x-components@3.0.0-alpha.189...@empathyco/x-components@3.0.0-alpha.190) (2022-10-12)
7
34
 
8
35
  ### Features
@@ -47,16 +47,6 @@
47
47
  .x-badge-container {
48
48
  position: relative;
49
49
  }
50
- :root {
51
- --x-color-background-badge-default: var(--x-color-base-neutral-10);
52
- --x-color-text-badge-default: var(--x-color-base-neutral-100);
53
- --x-color-border-badge-default: var(--x-color-base-neutral-10);
54
- --x-size-border-radius-badge-default: var(--x-size-border-radius-base-pill);
55
- --x-size-border-width-badge-default: 0;
56
- --x-size-width-badge-default: 1.5em;
57
- --x-number-font-weight-badge-default: var(--x-number-font-weight-base-regular);
58
- --x-size-font-badge-default: var(--x-size-font-base-xs);
59
- }
60
50
  :root {
61
51
  --x-color-background-button-default: var(--x-color-base-lead);
62
52
  --x-color-border-button-default: var(--x-color-background-button-default);
@@ -143,27 +133,14 @@
143
133
  }
144
134
  }
145
135
  :root {
146
- --x-color-background-button-default: var(--x-color-base-lead);
147
- --x-color-border-button-default: var(--x-color-background-button-default);
148
- --x-color-text-button-default: var(--x-color-base-neutral-100);
149
- --x-size-border-radius-button-default: var(--x-size-border-radius-base-none);
150
- --x-size-border-radius-top-left-button-default: var(--x-size-border-radius-button-default);
151
- --x-size-border-radius-top-right-button-default: var(--x-size-border-radius-button-default);
152
- --x-size-border-radius-bottom-right-button-default: var(--x-size-border-radius-button-default);
153
- --x-size-border-radius-bottom-left-button-default: var(--x-size-border-radius-button-default);
154
- --x-size-border-width-button-default: var(--x-size-border-width-base);
155
- --x-size-border-width-top-button-default: var(--x-size-border-width-button-default);
156
- --x-size-border-width-right-button-default: var(--x-size-border-width-button-default);
157
- --x-size-border-width-bottom-button-default: var(--x-size-border-width-button-default);
158
- --x-size-border-width-left-button-default: var(--x-size-border-width-button-default);
159
- --x-size-height-button-default: var(--x-size-base-08);
160
- --x-size-padding-right-button-default: var(--x-size-base-05);
161
- --x-size-padding-left-button-default: var(--x-size-base-05);
162
- --x-size-gap-button-default: var(--x-size-base-03);
163
- --x-font-family-button-default: var(--x-font-family-text);
164
- --x-size-font-button-default: var(--x-size-font-text);
165
- --x-number-font-weight-button-default: var(--x-number-font-weight-base-bold);
166
- --x-size-line-height-button-default: var(--x-size-line-height-text);
136
+ --x-color-background-badge-default: var(--x-color-base-neutral-10);
137
+ --x-color-text-badge-default: var(--x-color-base-neutral-100);
138
+ --x-color-border-badge-default: var(--x-color-base-neutral-10);
139
+ --x-size-border-radius-badge-default: var(--x-size-border-radius-base-pill);
140
+ --x-size-border-width-badge-default: 0;
141
+ --x-size-width-badge-default: 1.5em;
142
+ --x-number-font-weight-badge-default: var(--x-number-font-weight-base-regular);
143
+ --x-size-font-badge-default: var(--x-size-font-base-xs);
167
144
  }
168
145
  :root {
169
146
  --x-size-border-radius-dropdown-default: var(--x-size-border-radius-base-none);
@@ -607,6 +584,29 @@
607
584
  .x-facet > *:first-child .x-icon:last-child:not(:first-child), .x-facet__header .x-icon:last-child:not(:first-child) {
608
585
  margin-left: auto;
609
586
  }
587
+ :root {
588
+ --x-color-background-button-default: var(--x-color-base-lead);
589
+ --x-color-border-button-default: var(--x-color-background-button-default);
590
+ --x-color-text-button-default: var(--x-color-base-neutral-100);
591
+ --x-size-border-radius-button-default: var(--x-size-border-radius-base-none);
592
+ --x-size-border-radius-top-left-button-default: var(--x-size-border-radius-button-default);
593
+ --x-size-border-radius-top-right-button-default: var(--x-size-border-radius-button-default);
594
+ --x-size-border-radius-bottom-right-button-default: var(--x-size-border-radius-button-default);
595
+ --x-size-border-radius-bottom-left-button-default: var(--x-size-border-radius-button-default);
596
+ --x-size-border-width-button-default: var(--x-size-border-width-base);
597
+ --x-size-border-width-top-button-default: var(--x-size-border-width-button-default);
598
+ --x-size-border-width-right-button-default: var(--x-size-border-width-button-default);
599
+ --x-size-border-width-bottom-button-default: var(--x-size-border-width-button-default);
600
+ --x-size-border-width-left-button-default: var(--x-size-border-width-button-default);
601
+ --x-size-height-button-default: var(--x-size-base-08);
602
+ --x-size-padding-right-button-default: var(--x-size-base-05);
603
+ --x-size-padding-left-button-default: var(--x-size-base-05);
604
+ --x-size-gap-button-default: var(--x-size-base-03);
605
+ --x-font-family-button-default: var(--x-font-family-text);
606
+ --x-size-font-button-default: var(--x-size-font-text);
607
+ --x-number-font-weight-button-default: var(--x-number-font-weight-base-bold);
608
+ --x-size-line-height-button-default: var(--x-size-line-height-text);
609
+ }
610
610
  :root {
611
611
  --x-color-background-facet-default: transparent;
612
612
  --x-color-border-facet-default: var(--x-color-background-facet-default);
@@ -1421,27 +1421,6 @@
1421
1421
  .x-message > p {
1422
1422
  margin: 0;
1423
1423
  }
1424
- :root {
1425
- --x-string-justify-message-default: center;
1426
- --x-size-gap-message-default: var(--x-size-base-03);
1427
- --x-size-padding-message-default: var(--x-size-base-06);
1428
- --x-color-background-message-default: var(--x-color-base-neutral-95);
1429
- --x-color-border-message-default: var(--x-color-background-message-default);
1430
- --x-color-text-message-default: var(--x-color-text-default);
1431
- --x-size-border-radius-message-default: var(--x-size-border-radius-base-m);
1432
- --x-size-border-radius-top-left-message-default: var(--x-size-border-radius-message-default);
1433
- --x-size-border-radius-top-right-message-default: var(--x-size-border-radius-message-default);
1434
- --x-size-border-radius-bottom-right-message-default: var(--x-size-border-radius-message-default);
1435
- --x-size-border-radius-bottom-left-message-default: var(--x-size-border-radius-message-default);
1436
- --x-size-border-width-message-default: var(--x-size-border-width-base);
1437
- --x-size-border-width-top-message-default: var(--x-size-border-width-message-default);
1438
- --x-size-border-width-right-message-default: var(--x-size-border-width-message-default);
1439
- --x-size-border-width-bottom-message-default: var(--x-size-border-width-message-default);
1440
- --x-size-border-width-left-message-default: var(--x-size-border-width-message-default);
1441
- --x-font-family-message-default: var(--x-font-family-title3);
1442
- --x-size-font-message-default: var(--x-size-font-title3);
1443
- --x-number-font-weight-message-default: var(--x-number-font-weight-title3);
1444
- }
1445
1424
  :root {
1446
1425
  --x-color-background-option-list-button-default: transparent;
1447
1426
  --x-color-border-option-list-button-default: transparent;
@@ -1714,6 +1693,27 @@
1714
1693
  --x-number-font-weight-option-list-button-default: var(--x-number-font-weight-base-regular);
1715
1694
  --x-number-font-weight-option-list-button-default-selected: var(--x-number-font-weight-base-bold);
1716
1695
  }
1696
+ :root {
1697
+ --x-string-justify-message-default: center;
1698
+ --x-size-gap-message-default: var(--x-size-base-03);
1699
+ --x-size-padding-message-default: var(--x-size-base-06);
1700
+ --x-color-background-message-default: var(--x-color-base-neutral-95);
1701
+ --x-color-border-message-default: var(--x-color-background-message-default);
1702
+ --x-color-text-message-default: var(--x-color-text-default);
1703
+ --x-size-border-radius-message-default: var(--x-size-border-radius-base-m);
1704
+ --x-size-border-radius-top-left-message-default: var(--x-size-border-radius-message-default);
1705
+ --x-size-border-radius-top-right-message-default: var(--x-size-border-radius-message-default);
1706
+ --x-size-border-radius-bottom-right-message-default: var(--x-size-border-radius-message-default);
1707
+ --x-size-border-radius-bottom-left-message-default: var(--x-size-border-radius-message-default);
1708
+ --x-size-border-width-message-default: var(--x-size-border-width-base);
1709
+ --x-size-border-width-top-message-default: var(--x-size-border-width-message-default);
1710
+ --x-size-border-width-right-message-default: var(--x-size-border-width-message-default);
1711
+ --x-size-border-width-bottom-message-default: var(--x-size-border-width-message-default);
1712
+ --x-size-border-width-left-message-default: var(--x-size-border-width-message-default);
1713
+ --x-font-family-message-default: var(--x-font-family-title3);
1714
+ --x-size-font-message-default: var(--x-size-font-title3);
1715
+ --x-number-font-weight-message-default: var(--x-number-font-weight-title3);
1716
+ }
1717
1717
  :root {
1718
1718
  --x-size-border-radius-picture-default: 0;
1719
1719
  --x-size-border-radius-top-picture-default: var(--x-size-border-radius-picture-default);
@@ -2046,56 +2046,6 @@
2046
2046
  --x-color-background-scroll-bar-hover: transparent;
2047
2047
  --x-color-thumb-scroll-bar-hover: var(--x-color-base-neutral-70);
2048
2048
  }
2049
- .x-sliding-panel {
2050
- z-index: 0;
2051
- background-color: var(--x-color-background-sliding-panel);
2052
- }
2053
- .x-sliding-panel__button.x-button {
2054
- --x-size-padding-button: var(--x-size-padding-sliding-panel-button);
2055
- pointer-events: none;
2056
- }
2057
- .x-sliding-panel.x-sliding-panel--buttons-overflow .x-sliding-panel__button {
2058
- pointer-events: all;
2059
- }
2060
- .x-sliding-panel.x-sliding-panel--buttons-overflow .x-sliding-panel__button-left {
2061
- transform: translateX(calc(-100% - var(--x-size-horizontal-margin-sliding-panel-button-overflow)));
2062
- }
2063
- .x-sliding-panel.x-sliding-panel--buttons-overflow .x-sliding-panel__button-right {
2064
- transform: translateX(calc(100% + var(--x-size-horizontal-margin-sliding-panel-button-overflow)));
2065
- }
2066
- .x-sliding-panel.x-sliding-panel--show-buttons-on-hover .x-sliding-panel__button {
2067
- opacity: 0;
2068
- }
2069
- .x-sliding-panel.x-sliding-panel--show-buttons-on-hover:not(.x-sliding-panel--at-start):hover .x-sliding-panel__button-left {
2070
- opacity: 1;
2071
- pointer-events: all;
2072
- }
2073
- .x-sliding-panel.x-sliding-panel--show-buttons-on-hover:not(.x-sliding-panel--at-end):hover .x-sliding-panel__button-right {
2074
- opacity: 1;
2075
- pointer-events: all;
2076
- }
2077
- .x-sliding-panel:not(.x-sliding-panel--no-gradient) .x-sliding-panel__scroll {
2078
- -webkit-mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient), rgba(0, 0, 0, 0.8) calc(100% - 0.67 * var(--x-size-width-sliding-panel-gradient)), transparent calc(100% - 0.43 * var(--x-size-width-sliding-panel-gradient)));
2079
- mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient), rgba(0, 0, 0, 0.8) calc(100% - 0.67 * var(--x-size-width-sliding-panel-gradient)), transparent calc(100% - 0.43 * var(--x-size-width-sliding-panel-gradient)));
2080
- }
2081
- .x-sliding-panel:not(.x-sliding-panel--no-gradient).x-sliding-panel--at-start .x-sliding-panel__scroll {
2082
- -webkit-mask: linear-gradient(to left, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2083
- mask: linear-gradient(to left, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2084
- }
2085
- .x-sliding-panel:not(.x-sliding-panel--no-gradient).x-sliding-panel--at-end .x-sliding-panel__scroll {
2086
- -webkit-mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2087
- mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2088
- }
2089
- .x-sliding-panel:not(.x-sliding-panel--no-gradient).x-sliding-panel--at-start.x-sliding-panel--at-end .x-sliding-panel__scroll {
2090
- -webkit-mask: none;
2091
- mask: none;
2092
- }
2093
- .x-sliding-panel__scroll > * {
2094
- flex: 0 0 auto;
2095
- }
2096
- .x-sliding-panel__scroll > .x-list {
2097
- --x-string-flow-list: row nowrap;
2098
- }
2099
2049
  :root {
2100
2050
  --x-color-background-sliding-panel: var(--x-color-base-neutral-100);
2101
2051
  --x-size-width-sliding-panel-gradient: var(--x-size-base-09);
@@ -2227,6 +2177,56 @@
2227
2177
  --x-size-line-height-suggestion-group-default: var(--x-size-line-height-suggestion-default);
2228
2178
  --x-number-font-weight-suggestion-group-default: var(--x-number-font-weight-suggestion-default);
2229
2179
  }
2180
+ .x-sliding-panel {
2181
+ z-index: 0;
2182
+ background-color: var(--x-color-background-sliding-panel);
2183
+ }
2184
+ .x-sliding-panel__button.x-button {
2185
+ --x-size-padding-button: var(--x-size-padding-sliding-panel-button);
2186
+ pointer-events: none;
2187
+ }
2188
+ .x-sliding-panel.x-sliding-panel--buttons-overflow .x-sliding-panel__button {
2189
+ pointer-events: all;
2190
+ }
2191
+ .x-sliding-panel.x-sliding-panel--buttons-overflow .x-sliding-panel__button-left {
2192
+ transform: translateX(calc(-100% - var(--x-size-horizontal-margin-sliding-panel-button-overflow)));
2193
+ }
2194
+ .x-sliding-panel.x-sliding-panel--buttons-overflow .x-sliding-panel__button-right {
2195
+ transform: translateX(calc(100% + var(--x-size-horizontal-margin-sliding-panel-button-overflow)));
2196
+ }
2197
+ .x-sliding-panel.x-sliding-panel--show-buttons-on-hover .x-sliding-panel__button {
2198
+ opacity: 0;
2199
+ }
2200
+ .x-sliding-panel.x-sliding-panel--show-buttons-on-hover:not(.x-sliding-panel--at-start):hover .x-sliding-panel__button-left {
2201
+ opacity: 1;
2202
+ pointer-events: all;
2203
+ }
2204
+ .x-sliding-panel.x-sliding-panel--show-buttons-on-hover:not(.x-sliding-panel--at-end):hover .x-sliding-panel__button-right {
2205
+ opacity: 1;
2206
+ pointer-events: all;
2207
+ }
2208
+ .x-sliding-panel:not(.x-sliding-panel--no-gradient) .x-sliding-panel__scroll {
2209
+ -webkit-mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient), rgba(0, 0, 0, 0.8) calc(100% - 0.67 * var(--x-size-width-sliding-panel-gradient)), transparent calc(100% - 0.43 * var(--x-size-width-sliding-panel-gradient)));
2210
+ mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient), rgba(0, 0, 0, 0.8) calc(100% - 0.67 * var(--x-size-width-sliding-panel-gradient)), transparent calc(100% - 0.43 * var(--x-size-width-sliding-panel-gradient)));
2211
+ }
2212
+ .x-sliding-panel:not(.x-sliding-panel--no-gradient).x-sliding-panel--at-start .x-sliding-panel__scroll {
2213
+ -webkit-mask: linear-gradient(to left, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2214
+ mask: linear-gradient(to left, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2215
+ }
2216
+ .x-sliding-panel:not(.x-sliding-panel--no-gradient).x-sliding-panel--at-end .x-sliding-panel__scroll {
2217
+ -webkit-mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2218
+ mask: linear-gradient(to right, transparent calc(0.43 * var(--x-size-width-sliding-panel-gradient)), rgba(0, 0, 0, 0.8) calc(0.67 * var(--x-size-width-sliding-panel-gradient)), black var(--x-size-width-sliding-panel-gradient));
2219
+ }
2220
+ .x-sliding-panel:not(.x-sliding-panel--no-gradient).x-sliding-panel--at-start.x-sliding-panel--at-end .x-sliding-panel__scroll {
2221
+ -webkit-mask: none;
2222
+ mask: none;
2223
+ }
2224
+ .x-sliding-panel__scroll > * {
2225
+ flex: 0 0 auto;
2226
+ }
2227
+ .x-sliding-panel__scroll > .x-list {
2228
+ --x-string-flow-list: row nowrap;
2229
+ }
2230
2230
  :root {
2231
2231
  --x-string-align-items-suggestion-default: center;
2232
2232
  --x-color-text-suggestion-default: var(--x-color-text-default);
@@ -2987,12 +2987,6 @@
2987
2987
  .x-picture--colored.x-picture .x-picture--placeholder {
2988
2988
  --x-mix-blend-mode-picture-default: var(--x-mix-blend-mode-picture-placeholder-colored);
2989
2989
  }
2990
- :root {
2991
- --x-color-background-picture-colored: var(--x-color-base-neutral-95);
2992
- --x-mix-blend-mode-picture-colored: multiply;
2993
- --x-mix-blend-mode-picture-fallback-colored: var(--x-mix-blend-mode-picture-colored);
2994
- --x-mix-blend-mode-picture-placeholder-colored: var(--x-mix-blend-mode-picture-colored);
2995
- }
2996
2990
  .x-picture--cover.x-picture {
2997
2991
  position: relative;
2998
2992
  }
@@ -7479,3 +7473,10 @@
7479
7473
  .x-normal-case {
7480
7474
  text-transform: none;
7481
7475
  }
7476
+
7477
+ :root {
7478
+ --x-color-background-picture-colored: var(--x-color-base-neutral-95);
7479
+ --x-mix-blend-mode-picture-colored: multiply;
7480
+ --x-mix-blend-mode-picture-fallback-colored: var(--x-mix-blend-mode-picture-colored);
7481
+ --x-mix-blend-mode-picture-placeholder-colored: var(--x-mix-blend-mode-picture-colored);
7482
+ }
@@ -21,6 +21,8 @@ export interface SearchBoxXEvents
21
21
  | [UserClearedQuery](./x-components.searchboxxevents.userclearedquery.md) | string | The user cleared the search-box query in any way, typing or pressing a button that clears it. The payload is usually an empty string. \* Payload: string. |
22
22
  | [UserClickedSearchBox](./x-components.searchboxxevents.userclickedsearchbox.md) | void | The user clicked on the search-box input. \* Payload: none. |
23
23
  | [UserFocusedSearchBox](./x-components.searchboxxevents.userfocusedsearchbox.md) | void | The user focused the search-box \* Payload: none. |
24
+ | [UserHoveredInSearchBox](./x-components.searchboxxevents.userhoveredinsearchbox.md) | void | The user hovered in the search-box. \* Payload: none. |
25
+ | [UserHoveredOutSearchBox](./x-components.searchboxxevents.userhoveredoutsearchbox.md) | void | The user hovered out the search-box. \* Payload: none. |
24
26
  | [UserIsTypingAQuery](./x-components.searchboxxevents.useristypingaquery.md) | string | The user is typing/pasting a query \* Payload: the partial query that the user is typing. |
25
27
  | [UserPressedClearSearchBoxButton](./x-components.searchboxxevents.userpressedclearsearchboxbutton.md) | void | The user triggered the button that clears the search-box \* Payload: none. |
26
28
  | [UserPressedEnterKey](./x-components.searchboxxevents.userpressedenterkey.md) | string | The user pressed the enter key with the focus on the search-box \* Payload: the new query of the search-box. |
@@ -0,0 +1,13 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [SearchBoxXEvents](./x-components.searchboxxevents.md) &gt; [UserHoveredInSearchBox](./x-components.searchboxxevents.userhoveredinsearchbox.md)
4
+
5
+ ## SearchBoxXEvents.UserHoveredInSearchBox property
6
+
7
+ The user hovered in the search-box. \* Payload: none.
8
+
9
+ <b>Signature:</b>
10
+
11
+ ```typescript
12
+ UserHoveredInSearchBox: void;
13
+ ```
@@ -0,0 +1,13 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [SearchBoxXEvents](./x-components.searchboxxevents.md) &gt; [UserHoveredOutSearchBox](./x-components.searchboxxevents.userhoveredoutsearchbox.md)
4
+
5
+ ## SearchBoxXEvents.UserHoveredOutSearchBox property
6
+
7
+ The user hovered out the search-box. \* Payload: none.
8
+
9
+ <b>Signature:</b>
10
+
11
+ ```typescript
12
+ UserHoveredOutSearchBox: void;
13
+ ```
@@ -1,6 +1,6 @@
1
1
  import { createInjector, createInjectorSSR } from 'vue-runtime-helpers';
2
2
 
3
- var css = ".x-animate-translate--enter-active, .x-animate-translate--leave-active {\n transition: transform var(--x-duration-animation, 0.3s) ease-out;\n}\n.x-animate-translate--enter.x-animate-translate--top, .x-animate-translate--leave-to.x-animate-translate--top {\n transform: translateY(-100%);\n}\n.x-animate-translate--enter.x-animate-translate--bottom, .x-animate-translate--leave-to.x-animate-translate--bottom {\n transform: translateY(100%);\n}\n.x-animate-translate--enter.x-animate-translate--left, .x-animate-translate--leave-to.x-animate-translate--left {\n transform: translateX(-100%);\n}\n.x-animate-translate--enter.x-animate-translate--right, .x-animate-translate--leave-to.x-animate-translate--right {\n transform: translateX(100%);\n}";
3
+ var css = ".x-animate-translate--enter-active, .x-animate-translate--leave-active {\n transition: transform var(--x-duration-animation, 0.3s) ease-out;\n}\n.x-animate-translate--enter.x-animate-translate--top, .x-animate-translate--leave-to.x-animate-translate--top {\n transform: translateY(-100%);\n}\n.x-animate-translate--enter.x-animate-translate--bottom, .x-animate-translate--leave-to.x-animate-translate--bottom {\n transform: translateY(100%);\n}\n.x-animate-translate--enter.x-animate-translate--left, .x-animate-translate--leave-to.x-animate-translate--left {\n transform: translateX(-100%);\n}\n.x-animate-translate--enter.x-animate-translate--right, .x-animate-translate--leave-to.x-animate-translate--right {\n transform: translateX(100%);\n}\n.x-animate-translate--enter.x-animate-translate--top-to-bottom {\n transform: translateY(-100%);\n}\n.x-animate-translate--enter.x-animate-translate--bottom-to-top {\n transform: translateY(100%);\n}\n.x-animate-translate--enter.x-animate-translate--left-to-right {\n transform: translateX(-100%);\n}\n.x-animate-translate--enter.x-animate-translate--right-to-left {\n transform: translateX(100%);\n}\n.x-animate-translate--leave-to.x-animate-translate--top-to-bottom {\n transform: translateY(100%);\n}\n.x-animate-translate--leave-to.x-animate-translate--bottom-to-top {\n transform: translateY(-100%);\n}\n.x-animate-translate--leave-to.x-animate-translate--left-to-right {\n transform: translateX(100%);\n}\n.x-animate-translate--leave-to.x-animate-translate--right-to-left {\n transform: translateX(-100%);\n}";
4
4
  const isBrowser = /*#__PURE__*/ (function () {
5
5
  return (
6
6
  Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) !==
@@ -1 +1 @@
1
- {"version":3,"file":"create-directional-animation-factory.js","sources":["../../../../src/components/animations/create-directional-animation-factory.ts"],"sourcesContent":["import Vue, { VueConstructor } from 'vue';\n\n/**\n * Abstract Factory to create animations Factory. The returned animation factory uses the\n * `animationName` parameter to create a Transition Component with that name.\n *\n * @param animationName - The name to use in the Transition Component of animation.\n * @returns The animation factory configured.\n *\n * @internal\n */\nexport function createDirectionalAnimationFactory(\n animationName: string\n): (animationOrigin?: AnimationOrigin) => VueConstructor {\n return (animationOrigin = 'top') => {\n return Vue.extend({\n name: `transition-${animationName}-${animationOrigin}`,\n inheritAttrs: false,\n render(h) {\n return h(\n 'transition',\n {\n props: {\n name: `x-${animationName}--${animationOrigin} x-${animationName}-`,\n ...this.$attrs\n },\n on: this.$listeners\n },\n this.$slots.default\n );\n }\n });\n };\n}\n\nexport type AnimationOrigin = 'top' | 'bottom' | 'left' | 'right';\n"],"names":[],"mappings":";;AAEA;;;;;;;;;SASgB,iCAAiC,CAC/C,aAAqB;IAErB,OAAO,CAAC,eAAe,GAAG,KAAK;QAC7B,OAAO,GAAG,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,cAAc,aAAa,IAAI,eAAe,EAAE;YACtD,YAAY,EAAE,KAAK;YACnB,MAAM,CAAC,CAAC;gBACN,OAAO,CAAC,CACN,YAAY,EACZ;oBACE,KAAK,EAAE;wBACL,IAAI,EAAE,KAAK,aAAa,KAAK,eAAe,MAAM,aAAa,GAAG;wBAClE,GAAG,IAAI,CAAC,MAAM;qBACf;oBACD,EAAE,EAAE,IAAI,CAAC,UAAU;iBACpB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACpB,CAAC;aACH;SACF,CAAC,CAAC;KACJ,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"create-directional-animation-factory.js","sources":["../../../../src/components/animations/create-directional-animation-factory.ts"],"sourcesContent":["import Vue, { VueConstructor } from 'vue';\n\n/**\n * Abstract Factory to create animations Factory. The returned animation factory uses the\n * `animationName` parameter to create a Transition Component with that name.\n *\n * @param animationName - The name to use in the Transition Component of animation.\n * @returns The animation factory configured.\n *\n * @internal\n */\nexport function createDirectionalAnimationFactory(\n animationName: string\n): (animationOrigin?: AnimationOrigin) => VueConstructor {\n return (animationOrigin = 'top') => {\n return Vue.extend({\n name: `transition-${animationName}-${animationOrigin}`,\n inheritAttrs: false,\n render(h) {\n return h(\n 'transition',\n {\n props: {\n name: `x-${animationName}--${animationOrigin} x-${animationName}-`,\n ...this.$attrs\n },\n on: this.$listeners\n },\n this.$slots.default\n );\n }\n });\n };\n}\n\nexport type AnimationOrigin =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-to-bottom'\n | 'bottom-to-top'\n | 'left-to-right'\n | 'right-to-left';\n"],"names":[],"mappings":";;AAEA;;;;;;;;;SASgB,iCAAiC,CAC/C,aAAqB;IAErB,OAAO,CAAC,eAAe,GAAG,KAAK;QAC7B,OAAO,GAAG,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,cAAc,aAAa,IAAI,eAAe,EAAE;YACtD,YAAY,EAAE,KAAK;YACnB,MAAM,CAAC,CAAC;gBACN,OAAO,CAAC,CACN,YAAY,EACZ;oBACE,KAAK,EAAE;wBACL,IAAI,EAAE,KAAK,aAAa,KAAK,eAAe,MAAM,aAAa,GAAG;wBAClE,GAAG,IAAI,CAAC,MAAM;qBACf;oBACD,EAAE,EAAE,IAAI,CAAC,UAAU;iBACpB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACpB,CAAC;aACH;SACF,CAAC,CAAC;KACJ,CAAC;AACJ;;;;"}
@@ -26,6 +26,8 @@ var __vue_render__ = function () {
26
26
  },
27
27
  domProps: { value: _vm.query },
28
28
  on: {
29
+ mouseenter: _vm.emitUserHoveredInSearchBox,
30
+ mouseleave: _vm.emitUserHoveredOutSearchBox,
29
31
  blur: _vm.emitUserBlurredSearchBox,
30
32
  click: _vm.emitUserClickedSearchBox,
31
33
  focus: _vm.emitUserFocusedSearchBox,
@@ -71,7 +73,7 @@ __vue_render__._withStripped = true;
71
73
  /* style */
72
74
  const __vue_inject_styles__ = undefined;
73
75
  /* scoped */
74
- const __vue_scope_id__ = "data-v-513330ca";
76
+ const __vue_scope_id__ = "data-v-2c03251b";
75
77
  /* module identifier */
76
78
  const __vue_module_identifier__ = undefined;
77
79
  /* functional template */
@@ -1 +1 @@
1
- {"version":3,"file":"search-input.vue.js","sources":["../../../../../src/x-modules/search-box/components/search-input.vue"],"sourcesContent":["<template>\n <input\n ref=\"input\"\n @blur=\"emitUserBlurredSearchBox\"\n @click=\"emitUserClickedSearchBox\"\n @focus=\"emitUserFocusedSearchBox\"\n @input=\"emitUserIsTypingAQueryEvents\"\n @keydown.enter=\"emitUserPressedEnterKey\"\n @keydown.up.down.prevent=\"emitUserPressedArrowKey\"\n @beforeinput=\"preventSpecialKey\"\n v-on=\"$listeners\"\n :maxlength=\"maxLength\"\n :value=\"query\"\n autocomplete=\"off\"\n class=\"x-input x-search-input\"\n enterkeyhint=\"search\"\n inputmode=\"search\"\n type=\"search\"\n data-test=\"search-input\"\n :aria-label=\"searchInputMessage\"\n />\n</template>\n\n<script lang=\"ts\">\n import { Suggestion } from '@empathyco/x-types';\n import Vue from 'vue';\n import { Component, Prop } from 'vue-property-decorator';\n import { XOn } from '../../../components/decorators/bus.decorators';\n import { State } from '../../../components/decorators/store.decorators';\n import { xComponentMixin } from '../../../components/x-component.mixin';\n import { ArrowKey, PropsWithType } from '../../../utils';\n import { debounce } from '../../../utils/debounce';\n import { DebouncedFunction } from '../../../utils/types';\n import { XEventsTypes } from '../../../wiring/events.types';\n import { WireMetadata } from '../../../wiring/wiring.types';\n import { searchBoxXModule } from '../x-module';\n\n /**\n * This component renders an input field that allows the user to type a query. It also reacts to\n * query changes through event listening.\n *\n * @public\n */\n @Component({\n mixins: [xComponentMixin(searchBoxXModule)]\n })\n export default class SearchInput extends Vue {\n public $refs!: { input: HTMLInputElement };\n\n protected searchInputMessage = 'type your query here';\n\n /**\n * Maximum characters allowed in the input search.\n */\n @Prop({ default: 64 })\n protected maxLength!: number;\n\n /**\n * Allows input autofocus when the search field is rendered.\n */\n @Prop({ default: true })\n protected autofocus!: boolean;\n\n /**\n * Enables the auto-accept query after debounce.\n */\n @Prop({ default: true })\n protected instant!: boolean;\n\n /**\n * Debounce time for the instant.\n */\n @Prop({ default: 500 })\n protected instantDebounceInMs!: number;\n\n /**\n * Keyboard keys to accept the autocomplete suggestion.\n */\n @Prop({ default: () => ['ArrowRight'] })\n protected autocompleteKeyboardKeys!: string[]; // https://keycode.info/\n\n /**\n * Event that retrieves the autocomplete suggestion.\n */\n @Prop({ default: 'QuerySuggestionsChanged' })\n protected autocompleteSuggestionsEvent!: PropsWithType<XEventsTypes, Suggestion[]>;\n\n @State('searchBox', 'query')\n public query!: string;\n\n /**\n * When event {@link XEventsTypes.UserReachedEmpathizeTop} or\n * {@link SearchBoxXEvents.UserPressedClearSearchBoxButton}\n * are emitted the search input is focused.\n *\n * @internal\n */\n @XOn(['UserReachedEmpathizeTop', 'UserPressedClearSearchBoxButton'])\n focusInput(): void {\n this.$refs.input?.focus();\n }\n\n protected debouncedUserAcceptedAQuery!: DebouncedFunction<[string]>;\n\n /**\n * When event {@link XEventsTypes.UserAcceptedAQuery} or\n * {@link SearchBoxXEvents.UserClearedQuery} are emitted the pending debounced emit\n * {@link XEvent} `UserAcceptedAQuery` is canceled.\n *\n * @internal\n */\n @XOn(['UserAcceptedAQuery', 'UserClearedQuery'])\n cancelDebouncedUserAcceptedAQuery(): void {\n this.debouncedUserAcceptedAQuery?.cancel();\n }\n\n mounted(): void {\n if (this.autofocus) {\n this.focusInput();\n }\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event with a debounce configured in\n * `instantDebounceInMs` prop.\n *\n * @internal\n * @param query - The query that will be emitted.\n */\n emitDebouncedUserAcceptedAQuery(query: string): void {\n if (this.instant) {\n if (!this.debouncedUserAcceptedAQuery) {\n this.debouncedUserAcceptedAQuery = debounce(\n this.emitUserAcceptedAQuery.bind(this),\n this.instantDebounceInMs\n );\n }\n this.debouncedUserAcceptedAQuery(query);\n }\n }\n\n /**\n * Generates the {@link WireMetadata | event metadata} object omitting the moduleName.\n *\n * @returns The {@link WireMetadata} object omitting the moduleName.\n * @internal\n */\n protected createEventMetadata(): Omit<WireMetadata, 'moduleName'> {\n return {\n target: this.$refs.input,\n feature: 'search_box'\n };\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserBlurredSearchBox} when search box loses focus.\n *\n * @internal\n */\n protected emitUserBlurredSearchBox(): void {\n this.$x.emit('UserBlurredSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserClickedSearchBox} when user clicks the search input.\n *\n * @internal\n */\n protected emitUserClickedSearchBox(): void {\n this.$x.emit('UserClickedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserFocusedSearchBox} when search box gains focus.\n *\n * @internal\n */\n protected emitUserFocusedSearchBox(): void {\n this.$x.emit('UserFocusedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserIsTypingAQuery} when the user typed/pasted something\n * into the search-box. Also emits event {@link SearchBoxXEvents.UserClearedQuery} when the user\n * removes all characters in the search-box.\n *\n * @internal\n */\n protected emitUserIsTypingAQueryEvents(): void {\n const query = this.$refs.input.value;\n this.$x.emit('UserIsTypingAQuery', query, { target: this.$refs.input });\n if (query.trim()) {\n this.emitDebouncedUserAcceptedAQuery(query);\n } else {\n this.cancelDebouncedUserAcceptedAQuery();\n }\n }\n\n /**\n * Emits event {@link XEventsTypes.UserPressedArrowKey} when the user pressed an arrow key.\n *\n * @param event - The keyboard event with the arrow key pressed.\n * @internal\n */\n protected emitUserPressedArrowKey(event: KeyboardEvent): void {\n this.$x.emit('UserPressedArrowKey', event.key as ArrowKey, this.createEventMetadata());\n }\n\n /**\n * Emits multiple events when the user pressed the enter key.\n *\n * @remarks\n * Emitted events are:\n * {@link SearchBoxXEvents.UserPressedEnterKey}\n * {@link XEventsTypes.UserAcceptedAQuery}\n *\n * @internal\n */\n protected emitUserPressedEnterKey(): void {\n const query = this.$refs.input.value.trim();\n if (query.length > 0) {\n this.$x.emit('UserPressedEnterKey', query, this.createEventMetadata());\n this.emitUserAcceptedAQuery(query);\n }\n this.$refs.input?.blur();\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event.\n *\n * @remarks It is necessary in a separated method to use it as the parameter of debounce in\n * emitDebouncedUserAcceptedAQuery method.\n * @internal\n * @param query - The query that will be emitted.\n */\n protected emitUserAcceptedAQuery(query: string): void {\n this.$x.emit('UserAcceptedAQuery', query, this.createEventMetadata());\n }\n\n /**\n * Prevents the user from either typing or pasting special characters in the input field.\n *\n * @internal\n * @param event - The event that will be checked for special characters.\n */\n protected preventSpecialKey(event: InputEvent): void {\n if (/[<>]/.test(event.data ?? '')) {\n event.preventDefault();\n }\n }\n }\n</script>\n\n<style lang=\"scss\" scoped>\n .x-search-input::-webkit-search-decoration,\n .x-search-input::-webkit-search-cancel-button,\n .x-search-input::-webkit-search-results-button,\n .x-search-input::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedSearchBox`](./../../api/x-components.searchboxxevents.md)\n- [`UserBlurredSearchBox`](./../../api/x-components.searchboxxevents.md)\n- [`UserFocusedSearchBox`](./../../api/x-components.searchboxxevents.md)\n- [`UserIsTypingAQuery`](./../../api/x-components.searchboxxevents.md)\n- [`UserPressedEnterKey`](./../../api/x-components.searchboxxevents.md)\n- [`UserPressedArrowKey`](./../../api/x-components.xeventstypes.md)\n- [`UserAcceptedAQuery`](./../../api/x-components.xeventstypes.md)\n\n## See it in action\n\n<!-- prettier-ignore-start -->\n:::warning Backend service required\nTo use this component, the Search service must be implemented.\n:::\n<!-- prettier-ignore-end -->\n\nHere you have a basic example of how the search input is rendered.\n\n_Type any term in the input field to try it out!_\n\n```vue live\n<template>\n <SearchInput />\n</template>\n\n<script>\n import { SearchInput } from '@empathyco/x-components/search-box';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput\n }\n };\n</script>\n```\n\n### Play with props\n\nIn this example, the search input has been limited to accept a maximum of 5 characters, including\nspaces, it won't take the focus when it is rendered, and it will emit the `UserAcceptedAQuery` event\nafter 1000 milliseconds without typing.\n\n_Type a term with more than 5 characters to try it out!_\n\n```vue live\n<template>\n <SearchInput :maxLength=\"5\" :autofocus=\"false\" :instant=\"true\" :instantDebounceInMs=\"1000\" />\n</template>\n\n<script>\n import { SearchInput } from '@empathyco/x-components/search-box';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput\n }\n };\n</script>\n```\n\n### Play with events\n\nIn this example, a message has been added below the search input to illustrate the action performed.\nFor example, if you select the search input box, the message “focus” appears. When you start to\nenter a search term, the message “typing” appears. If you press Enter after typing a search term,\nthe message “enter” appears.\n\n<!-- prettier-ignore-start -->\n:::warning X Events are only emitted from the root X Component.\nAt the moment, X Events are only emitted from the root X Component. This means that if you wrap\nthe `SearchInput` with another component of another module like the `MainScroll`, you should add\nthe listeners to the `MainScroll` instead of the `SearchInput`. If you need to subscribe to these\nevents, it is recommended to use the [`GlobalXBus`](../common/x-components.global-x-bus.md)\ncomponent instead.\n:::\n<!-- prettier-ignore-end -->\n\n_Type any term in the input field to try it out!_\n\n```vue live\n<template>\n <div>\n <SearchInput\n @UserPressedEnterKey=\"value = 'enter'\"\n @UserFocusedSearchBox=\"hasFocus = true\"\n @UserBlurredSearchBox=\"hasFocus = false\"\n @UserIsTypingAQuery=\"value = 'typing'\"\n />\n <strong>{{ value }}</strong>\n <span>{{ hasFocus ? 'focused' : 'unfocused' }}</span>\n </div>\n</template>\n\n<script>\n import { SearchInput } from '@empathyco/x-components/search-box';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput\n },\n data() {\n return {\n value: '',\n hasFocus: false\n };\n }\n };\n</script>\n```\n\n## Extending the component\n\nComponents can be combined and communicate with each other. Commonly, the `SearchInput` component\ncommunicates with the [`SearchButton`](x-components.search-button.md) and the\n[`ClearSearchInput`](x-components.clear-search-input.md) to offer a full query entry experience.\nFurthermore, you can use it together with the [`QuerySuggestions`](query-suggestions.md) component\nto autocomplete the typed search term.\n\n_Type “trousers” or another fashion term in the input field and then click the clear icon to try it\nout!_\n\n```vue live\n<template>\n <div>\n <div style=\"display: flex; flex-flow: row nowrap;\">\n <SearchInput />\n <ClearSearchInput>\n <img src=\"/assets/icons/cross.svg\" />\n </ClearSearchInput>\n <SearchButton>Search</SearchButton>\n </div>\n <QuerySuggestions />\n </div>\n</template>\n\n<script>\n import { SearchInput, ClearSearchInput, SearchButton } from '@empathyco/x-components/search-box';\n import { QuerySuggestions } from '@empathyco/x-components/query-suggestions';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput,\n ClearSearchInput,\n SearchButton,\n QuerySuggestions\n }\n };\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"search-input.vue.js","sources":["../../../../../src/x-modules/search-box/components/search-input.vue"],"sourcesContent":["<template>\n <input\n ref=\"input\"\n @mouseenter=\"emitUserHoveredInSearchBox\"\n @mouseleave=\"emitUserHoveredOutSearchBox\"\n @blur=\"emitUserBlurredSearchBox\"\n @click=\"emitUserClickedSearchBox\"\n @focus=\"emitUserFocusedSearchBox\"\n @input=\"emitUserIsTypingAQueryEvents\"\n @keydown.enter=\"emitUserPressedEnterKey\"\n @keydown.up.down.prevent=\"emitUserPressedArrowKey\"\n @beforeinput=\"preventSpecialKey\"\n v-on=\"$listeners\"\n :maxlength=\"maxLength\"\n :value=\"query\"\n autocomplete=\"off\"\n class=\"x-input x-search-input\"\n enterkeyhint=\"search\"\n inputmode=\"search\"\n type=\"search\"\n data-test=\"search-input\"\n :aria-label=\"searchInputMessage\"\n />\n</template>\n\n<script lang=\"ts\">\n import { Suggestion } from '@empathyco/x-types';\n import Vue from 'vue';\n import { Component, Prop } from 'vue-property-decorator';\n import { XOn } from '../../../components/decorators/bus.decorators';\n import { State } from '../../../components/decorators/store.decorators';\n import { xComponentMixin } from '../../../components/x-component.mixin';\n import { ArrowKey, PropsWithType } from '../../../utils';\n import { debounce } from '../../../utils/debounce';\n import { DebouncedFunction } from '../../../utils/types';\n import { XEventsTypes } from '../../../wiring/events.types';\n import { WireMetadata } from '../../../wiring/wiring.types';\n import { searchBoxXModule } from '../x-module';\n\n /**\n * This component renders an input field that allows the user to type a query. It also reacts to\n * query changes through event listening.\n *\n * @public\n */\n @Component({\n mixins: [xComponentMixin(searchBoxXModule)]\n })\n export default class SearchInput extends Vue {\n public $refs!: { input: HTMLInputElement };\n\n protected searchInputMessage = 'type your query here';\n\n /**\n * Maximum characters allowed in the input search.\n */\n @Prop({ default: 64 })\n protected maxLength!: number;\n\n /**\n * Allows input autofocus when the search field is rendered.\n */\n @Prop({ default: true })\n protected autofocus!: boolean;\n\n /**\n * Enables the auto-accept query after debounce.\n */\n @Prop({ default: true })\n protected instant!: boolean;\n\n /**\n * Debounce time for the instant.\n */\n @Prop({ default: 500 })\n protected instantDebounceInMs!: number;\n\n /**\n * Keyboard keys to accept the autocomplete suggestion.\n */\n @Prop({ default: () => ['ArrowRight'] })\n protected autocompleteKeyboardKeys!: string[]; // https://keycode.info/\n\n /**\n * Event that retrieves the autocomplete suggestion.\n */\n @Prop({ default: 'QuerySuggestionsChanged' })\n protected autocompleteSuggestionsEvent!: PropsWithType<XEventsTypes, Suggestion[]>;\n\n @State('searchBox', 'query')\n public query!: string;\n\n /**\n * When event {@link XEventsTypes.UserReachedEmpathizeTop} or\n * {@link SearchBoxXEvents.UserPressedClearSearchBoxButton}\n * are emitted the search input is focused.\n *\n * @internal\n */\n @XOn(['UserReachedEmpathizeTop', 'UserPressedClearSearchBoxButton'])\n focusInput(): void {\n this.$refs.input?.focus();\n }\n\n protected debouncedUserAcceptedAQuery!: DebouncedFunction<[string]>;\n\n /**\n * When event {@link XEventsTypes.UserAcceptedAQuery} or\n * {@link SearchBoxXEvents.UserClearedQuery} are emitted the pending debounced emit\n * {@link XEvent} `UserAcceptedAQuery` is canceled.\n *\n * @internal\n */\n @XOn(['UserAcceptedAQuery', 'UserClearedQuery'])\n cancelDebouncedUserAcceptedAQuery(): void {\n this.debouncedUserAcceptedAQuery?.cancel();\n }\n\n mounted(): void {\n if (this.autofocus) {\n this.focusInput();\n }\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event with a debounce configured in\n * `instantDebounceInMs` prop.\n *\n * @internal\n * @param query - The query that will be emitted.\n */\n emitDebouncedUserAcceptedAQuery(query: string): void {\n if (this.instant) {\n if (!this.debouncedUserAcceptedAQuery) {\n this.debouncedUserAcceptedAQuery = debounce(\n this.emitUserAcceptedAQuery.bind(this),\n this.instantDebounceInMs\n );\n }\n this.debouncedUserAcceptedAQuery(query);\n }\n }\n\n /**\n * Generates the {@link WireMetadata | event metadata} object omitting the moduleName.\n *\n * @returns The {@link WireMetadata} object omitting the moduleName.\n * @internal\n */\n protected createEventMetadata(): Omit<WireMetadata, 'moduleName'> {\n return {\n target: this.$refs.input,\n feature: 'search_box'\n };\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserHoveredInSearchBox} when search box is hovered in.\n *\n * @internal\n */\n protected emitUserHoveredInSearchBox(): void {\n this.$x.emit('UserHoveredInSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserHoveredOutSearchBox} when search box is hovered out.\n *\n * @internal\n */\n protected emitUserHoveredOutSearchBox(): void {\n this.$x.emit('UserHoveredOutSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserBlurredSearchBox} when search box loses focus.\n *\n * @internal\n */\n protected emitUserBlurredSearchBox(): void {\n this.$x.emit('UserBlurredSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserClickedSearchBox} when user clicks the search input.\n *\n * @internal\n */\n protected emitUserClickedSearchBox(): void {\n this.$x.emit('UserClickedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserFocusedSearchBox} when search box gains focus.\n *\n * @internal\n */\n protected emitUserFocusedSearchBox(): void {\n this.$x.emit('UserFocusedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserIsTypingAQuery} when the user typed/pasted something\n * into the search-box. Also emits event {@link SearchBoxXEvents.UserClearedQuery} when the user\n * removes all characters in the search-box.\n *\n * @internal\n */\n protected emitUserIsTypingAQueryEvents(): void {\n const query = this.$refs.input.value;\n this.$x.emit('UserIsTypingAQuery', query, { target: this.$refs.input });\n if (query.trim()) {\n this.emitDebouncedUserAcceptedAQuery(query);\n } else {\n this.cancelDebouncedUserAcceptedAQuery();\n }\n }\n\n /**\n * Emits event {@link XEventsTypes.UserPressedArrowKey} when the user pressed an arrow key.\n *\n * @param event - The keyboard event with the arrow key pressed.\n * @internal\n */\n protected emitUserPressedArrowKey(event: KeyboardEvent): void {\n this.$x.emit('UserPressedArrowKey', event.key as ArrowKey, this.createEventMetadata());\n }\n\n /**\n * Emits multiple events when the user pressed the enter key.\n *\n * @remarks\n * Emitted events are:\n * {@link SearchBoxXEvents.UserPressedEnterKey}\n * {@link XEventsTypes.UserAcceptedAQuery}\n *\n * @internal\n */\n protected emitUserPressedEnterKey(): void {\n const query = this.$refs.input.value.trim();\n if (query.length > 0) {\n this.$x.emit('UserPressedEnterKey', query, this.createEventMetadata());\n this.emitUserAcceptedAQuery(query);\n }\n this.$refs.input?.blur();\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event.\n *\n * @remarks It is necessary in a separated method to use it as the parameter of debounce in\n * emitDebouncedUserAcceptedAQuery method.\n * @internal\n * @param query - The query that will be emitted.\n */\n protected emitUserAcceptedAQuery(query: string): void {\n this.$x.emit('UserAcceptedAQuery', query, this.createEventMetadata());\n }\n\n /**\n * Prevents the user from either typing or pasting special characters in the input field.\n *\n * @internal\n * @param event - The event that will be checked for special characters.\n */\n protected preventSpecialKey(event: InputEvent): void {\n if (/[<>]/.test(event.data ?? '')) {\n event.preventDefault();\n }\n }\n }\n</script>\n\n<style lang=\"scss\" scoped>\n .x-search-input::-webkit-search-decoration,\n .x-search-input::-webkit-search-cancel-button,\n .x-search-input::-webkit-search-results-button,\n .x-search-input::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following events:\n\n- [`UserClickedSearchBox`](./../../api/x-components.searchboxxevents.md)\n- [`UserBlurredSearchBox`](./../../api/x-components.searchboxxevents.md)\n- [`UserFocusedSearchBox`](./../../api/x-components.searchboxxevents.md)\n- [`UserIsTypingAQuery`](./../../api/x-components.searchboxxevents.md)\n- [`UserPressedEnterKey`](./../../api/x-components.searchboxxevents.md)\n- [`UserPressedArrowKey`](./../../api/x-components.xeventstypes.md)\n- [`UserAcceptedAQuery`](./../../api/x-components.xeventstypes.md)\n\n## See it in action\n\n<!-- prettier-ignore-start -->\n:::warning Backend service required\nTo use this component, the Search service must be implemented.\n:::\n<!-- prettier-ignore-end -->\n\nHere you have a basic example of how the search input is rendered.\n\n_Type any term in the input field to try it out!_\n\n```vue live\n<template>\n <SearchInput />\n</template>\n\n<script>\n import { SearchInput } from '@empathyco/x-components/search-box';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput\n }\n };\n</script>\n```\n\n### Play with props\n\nIn this example, the search input has been limited to accept a maximum of 5 characters, including\nspaces, it won't take the focus when it is rendered, and it will emit the `UserAcceptedAQuery` event\nafter 1000 milliseconds without typing.\n\n_Type a term with more than 5 characters to try it out!_\n\n```vue live\n<template>\n <SearchInput :maxLength=\"5\" :autofocus=\"false\" :instant=\"true\" :instantDebounceInMs=\"1000\" />\n</template>\n\n<script>\n import { SearchInput } from '@empathyco/x-components/search-box';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput\n }\n };\n</script>\n```\n\n### Play with events\n\nIn this example, a message has been added below the search input to illustrate the action performed.\nFor example, if you select the search input box, the message “focus” appears. When you start to\nenter a search term, the message “typing” appears. If you press Enter after typing a search term,\nthe message “enter” appears.\n\n<!-- prettier-ignore-start -->\n:::warning X Events are only emitted from the root X Component.\nAt the moment, X Events are only emitted from the root X Component. This means that if you wrap\nthe `SearchInput` with another component of another module like the `MainScroll`, you should add\nthe listeners to the `MainScroll` instead of the `SearchInput`. If you need to subscribe to these\nevents, it is recommended to use the [`GlobalXBus`](../common/x-components.global-x-bus.md)\ncomponent instead.\n:::\n<!-- prettier-ignore-end -->\n\n_Type any term in the input field to try it out!_\n\n```vue live\n<template>\n <div>\n <SearchInput\n @UserPressedEnterKey=\"value = 'enter'\"\n @UserFocusedSearchBox=\"hasFocus = true\"\n @UserBlurredSearchBox=\"hasFocus = false\"\n @UserIsTypingAQuery=\"value = 'typing'\"\n />\n <strong>{{ value }}</strong>\n <span>{{ hasFocus ? 'focused' : 'unfocused' }}</span>\n </div>\n</template>\n\n<script>\n import { SearchInput } from '@empathyco/x-components/search-box';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput\n },\n data() {\n return {\n value: '',\n hasFocus: false\n };\n }\n };\n</script>\n```\n\n## Extending the component\n\nComponents can be combined and communicate with each other. Commonly, the `SearchInput` component\ncommunicates with the [`SearchButton`](x-components.search-button.md) and the\n[`ClearSearchInput`](x-components.clear-search-input.md) to offer a full query entry experience.\nFurthermore, you can use it together with the [`QuerySuggestions`](query-suggestions.md) component\nto autocomplete the typed search term.\n\n_Type “trousers” or another fashion term in the input field and then click the clear icon to try it\nout!_\n\n```vue live\n<template>\n <div>\n <div style=\"display: flex; flex-flow: row nowrap;\">\n <SearchInput />\n <ClearSearchInput>\n <img src=\"/assets/icons/cross.svg\" />\n </ClearSearchInput>\n <SearchButton>Search</SearchButton>\n </div>\n <QuerySuggestions />\n </div>\n</template>\n\n<script>\n import { SearchInput, ClearSearchInput, SearchButton } from '@empathyco/x-components/search-box';\n import { QuerySuggestions } from '@empathyco/x-components/query-suggestions';\n\n export default {\n name: 'SearchInputDemo',\n components: {\n SearchInput,\n ClearSearchInput,\n SearchButton,\n QuerySuggestions\n }\n };\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -70,6 +70,22 @@ let SearchInput = class SearchInput extends Vue {
70
70
  feature: 'search_box'
71
71
  };
72
72
  }
73
+ /**
74
+ * Emits event {@link SearchBoxXEvents.UserHoveredInSearchBox} when search box is hovered in.
75
+ *
76
+ * @internal
77
+ */
78
+ emitUserHoveredInSearchBox() {
79
+ this.$x.emit('UserHoveredInSearchBox', undefined, { target: this.$refs.input });
80
+ }
81
+ /**
82
+ * Emits event {@link SearchBoxXEvents.UserHoveredOutSearchBox} when search box is hovered out.
83
+ *
84
+ * @internal
85
+ */
86
+ emitUserHoveredOutSearchBox() {
87
+ this.$x.emit('UserHoveredOutSearchBox', undefined, { target: this.$refs.input });
88
+ }
73
89
  /**
74
90
  * Emits event {@link SearchBoxXEvents.UserBlurredSearchBox} when search box loses focus.
75
91
  *
@@ -1 +1 @@
1
- {"version":3,"file":"search-input.vue_rollup-plugin-vue_script.vue.js","sources":["../../../../../src/x-modules/search-box/components/search-input.vue?rollup-plugin-vue=script.ts"],"sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Suggestion } from '@empathyco/x-types';\nimport Vue from 'vue';\nimport { Component, Prop } from 'vue-property-decorator';\nimport { XOn } from '../../../components/decorators/bus.decorators';\nimport { State } from '../../../components/decorators/store.decorators';\nimport { xComponentMixin } from '../../../components/x-component.mixin';\nimport { ArrowKey, PropsWithType } from '../../../utils';\nimport { debounce } from '../../../utils/debounce';\nimport { DebouncedFunction } from '../../../utils/types';\nimport { XEventsTypes } from '../../../wiring/events.types';\nimport { WireMetadata } from '../../../wiring/wiring.types';\nimport { searchBoxXModule } from '../x-module';\n\n/**\n * This component renders an input field that allows the user to type a query. It also reacts to\n * query changes through event listening.\n *\n * @public\n */\n@Component({\n mixins: [xComponentMixin(searchBoxXModule)]\n})\nexport default class SearchInput extends Vue {\n public $refs!: { input: HTMLInputElement };\n\n protected searchInputMessage = 'type your query here';\n\n /**\n * Maximum characters allowed in the input search.\n */\n @Prop({ default: 64 })\n protected maxLength!: number;\n\n /**\n * Allows input autofocus when the search field is rendered.\n */\n @Prop({ default: true })\n protected autofocus!: boolean;\n\n /**\n * Enables the auto-accept query after debounce.\n */\n @Prop({ default: true })\n protected instant!: boolean;\n\n /**\n * Debounce time for the instant.\n */\n @Prop({ default: 500 })\n protected instantDebounceInMs!: number;\n\n /**\n * Keyboard keys to accept the autocomplete suggestion.\n */\n @Prop({ default: () => ['ArrowRight'] })\n protected autocompleteKeyboardKeys!: string[]; // https://keycode.info/\n\n /**\n * Event that retrieves the autocomplete suggestion.\n */\n @Prop({ default: 'QuerySuggestionsChanged' })\n protected autocompleteSuggestionsEvent!: PropsWithType<XEventsTypes, Suggestion[]>;\n\n @State('searchBox', 'query')\n public query!: string;\n\n /**\n * When event {@link XEventsTypes.UserReachedEmpathizeTop} or\n * {@link SearchBoxXEvents.UserPressedClearSearchBoxButton}\n * are emitted the search input is focused.\n *\n * @internal\n */\n @XOn(['UserReachedEmpathizeTop', 'UserPressedClearSearchBoxButton'])\n focusInput(): void {\n this.$refs.input?.focus();\n }\n\n protected debouncedUserAcceptedAQuery!: DebouncedFunction<[string]>;\n\n /**\n * When event {@link XEventsTypes.UserAcceptedAQuery} or\n * {@link SearchBoxXEvents.UserClearedQuery} are emitted the pending debounced emit\n * {@link XEvent} `UserAcceptedAQuery` is canceled.\n *\n * @internal\n */\n @XOn(['UserAcceptedAQuery', 'UserClearedQuery'])\n cancelDebouncedUserAcceptedAQuery(): void {\n this.debouncedUserAcceptedAQuery?.cancel();\n }\n\n mounted(): void {\n if (this.autofocus) {\n this.focusInput();\n }\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event with a debounce configured in\n * `instantDebounceInMs` prop.\n *\n * @internal\n * @param query - The query that will be emitted.\n */\n emitDebouncedUserAcceptedAQuery(query: string): void {\n if (this.instant) {\n if (!this.debouncedUserAcceptedAQuery) {\n this.debouncedUserAcceptedAQuery = debounce(\n this.emitUserAcceptedAQuery.bind(this),\n this.instantDebounceInMs\n );\n }\n this.debouncedUserAcceptedAQuery(query);\n }\n }\n\n /**\n * Generates the {@link WireMetadata | event metadata} object omitting the moduleName.\n *\n * @returns The {@link WireMetadata} object omitting the moduleName.\n * @internal\n */\n protected createEventMetadata(): Omit<WireMetadata, 'moduleName'> {\n return {\n target: this.$refs.input,\n feature: 'search_box'\n };\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserBlurredSearchBox} when search box loses focus.\n *\n * @internal\n */\n protected emitUserBlurredSearchBox(): void {\n this.$x.emit('UserBlurredSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserClickedSearchBox} when user clicks the search input.\n *\n * @internal\n */\n protected emitUserClickedSearchBox(): void {\n this.$x.emit('UserClickedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserFocusedSearchBox} when search box gains focus.\n *\n * @internal\n */\n protected emitUserFocusedSearchBox(): void {\n this.$x.emit('UserFocusedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserIsTypingAQuery} when the user typed/pasted something\n * into the search-box. Also emits event {@link SearchBoxXEvents.UserClearedQuery} when the user\n * removes all characters in the search-box.\n *\n * @internal\n */\n protected emitUserIsTypingAQueryEvents(): void {\n const query = this.$refs.input.value;\n this.$x.emit('UserIsTypingAQuery', query, { target: this.$refs.input });\n if (query.trim()) {\n this.emitDebouncedUserAcceptedAQuery(query);\n } else {\n this.cancelDebouncedUserAcceptedAQuery();\n }\n }\n\n /**\n * Emits event {@link XEventsTypes.UserPressedArrowKey} when the user pressed an arrow key.\n *\n * @param event - The keyboard event with the arrow key pressed.\n * @internal\n */\n protected emitUserPressedArrowKey(event: KeyboardEvent): void {\n this.$x.emit('UserPressedArrowKey', event.key as ArrowKey, this.createEventMetadata());\n }\n\n /**\n * Emits multiple events when the user pressed the enter key.\n *\n * @remarks\n * Emitted events are:\n * {@link SearchBoxXEvents.UserPressedEnterKey}\n * {@link XEventsTypes.UserAcceptedAQuery}\n *\n * @internal\n */\n protected emitUserPressedEnterKey(): void {\n const query = this.$refs.input.value.trim();\n if (query.length > 0) {\n this.$x.emit('UserPressedEnterKey', query, this.createEventMetadata());\n this.emitUserAcceptedAQuery(query);\n }\n this.$refs.input?.blur();\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event.\n *\n * @remarks It is necessary in a separated method to use it as the parameter of debounce in\n * emitDebouncedUserAcceptedAQuery method.\n * @internal\n * @param query - The query that will be emitted.\n */\n protected emitUserAcceptedAQuery(query: string): void {\n this.$x.emit('UserAcceptedAQuery', query, this.createEventMetadata());\n }\n\n /**\n * Prevents the user from either typing or pasting special characters in the input field.\n *\n * @internal\n * @param event - The event that will be checked for special characters.\n */\n protected preventSpecialKey(event: InputEvent): void {\n if (/[<>]/.test(event.data ?? '')) {\n event.preventDefault();\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-input.vue_rollup-plugin-vue_script.vue.js","sources":["../../../../../src/x-modules/search-box/components/search-input.vue?rollup-plugin-vue=script.ts"],"sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Suggestion } from '@empathyco/x-types';\nimport Vue from 'vue';\nimport { Component, Prop } from 'vue-property-decorator';\nimport { XOn } from '../../../components/decorators/bus.decorators';\nimport { State } from '../../../components/decorators/store.decorators';\nimport { xComponentMixin } from '../../../components/x-component.mixin';\nimport { ArrowKey, PropsWithType } from '../../../utils';\nimport { debounce } from '../../../utils/debounce';\nimport { DebouncedFunction } from '../../../utils/types';\nimport { XEventsTypes } from '../../../wiring/events.types';\nimport { WireMetadata } from '../../../wiring/wiring.types';\nimport { searchBoxXModule } from '../x-module';\n\n/**\n * This component renders an input field that allows the user to type a query. It also reacts to\n * query changes through event listening.\n *\n * @public\n */\n@Component({\n mixins: [xComponentMixin(searchBoxXModule)]\n})\nexport default class SearchInput extends Vue {\n public $refs!: { input: HTMLInputElement };\n\n protected searchInputMessage = 'type your query here';\n\n /**\n * Maximum characters allowed in the input search.\n */\n @Prop({ default: 64 })\n protected maxLength!: number;\n\n /**\n * Allows input autofocus when the search field is rendered.\n */\n @Prop({ default: true })\n protected autofocus!: boolean;\n\n /**\n * Enables the auto-accept query after debounce.\n */\n @Prop({ default: true })\n protected instant!: boolean;\n\n /**\n * Debounce time for the instant.\n */\n @Prop({ default: 500 })\n protected instantDebounceInMs!: number;\n\n /**\n * Keyboard keys to accept the autocomplete suggestion.\n */\n @Prop({ default: () => ['ArrowRight'] })\n protected autocompleteKeyboardKeys!: string[]; // https://keycode.info/\n\n /**\n * Event that retrieves the autocomplete suggestion.\n */\n @Prop({ default: 'QuerySuggestionsChanged' })\n protected autocompleteSuggestionsEvent!: PropsWithType<XEventsTypes, Suggestion[]>;\n\n @State('searchBox', 'query')\n public query!: string;\n\n /**\n * When event {@link XEventsTypes.UserReachedEmpathizeTop} or\n * {@link SearchBoxXEvents.UserPressedClearSearchBoxButton}\n * are emitted the search input is focused.\n *\n * @internal\n */\n @XOn(['UserReachedEmpathizeTop', 'UserPressedClearSearchBoxButton'])\n focusInput(): void {\n this.$refs.input?.focus();\n }\n\n protected debouncedUserAcceptedAQuery!: DebouncedFunction<[string]>;\n\n /**\n * When event {@link XEventsTypes.UserAcceptedAQuery} or\n * {@link SearchBoxXEvents.UserClearedQuery} are emitted the pending debounced emit\n * {@link XEvent} `UserAcceptedAQuery` is canceled.\n *\n * @internal\n */\n @XOn(['UserAcceptedAQuery', 'UserClearedQuery'])\n cancelDebouncedUserAcceptedAQuery(): void {\n this.debouncedUserAcceptedAQuery?.cancel();\n }\n\n mounted(): void {\n if (this.autofocus) {\n this.focusInput();\n }\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event with a debounce configured in\n * `instantDebounceInMs` prop.\n *\n * @internal\n * @param query - The query that will be emitted.\n */\n emitDebouncedUserAcceptedAQuery(query: string): void {\n if (this.instant) {\n if (!this.debouncedUserAcceptedAQuery) {\n this.debouncedUserAcceptedAQuery = debounce(\n this.emitUserAcceptedAQuery.bind(this),\n this.instantDebounceInMs\n );\n }\n this.debouncedUserAcceptedAQuery(query);\n }\n }\n\n /**\n * Generates the {@link WireMetadata | event metadata} object omitting the moduleName.\n *\n * @returns The {@link WireMetadata} object omitting the moduleName.\n * @internal\n */\n protected createEventMetadata(): Omit<WireMetadata, 'moduleName'> {\n return {\n target: this.$refs.input,\n feature: 'search_box'\n };\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserHoveredInSearchBox} when search box is hovered in.\n *\n * @internal\n */\n protected emitUserHoveredInSearchBox(): void {\n this.$x.emit('UserHoveredInSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserHoveredOutSearchBox} when search box is hovered out.\n *\n * @internal\n */\n protected emitUserHoveredOutSearchBox(): void {\n this.$x.emit('UserHoveredOutSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserBlurredSearchBox} when search box loses focus.\n *\n * @internal\n */\n protected emitUserBlurredSearchBox(): void {\n this.$x.emit('UserBlurredSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserClickedSearchBox} when user clicks the search input.\n *\n * @internal\n */\n protected emitUserClickedSearchBox(): void {\n this.$x.emit('UserClickedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserFocusedSearchBox} when search box gains focus.\n *\n * @internal\n */\n protected emitUserFocusedSearchBox(): void {\n this.$x.emit('UserFocusedSearchBox', undefined, { target: this.$refs.input });\n }\n\n /**\n * Emits event {@link SearchBoxXEvents.UserIsTypingAQuery} when the user typed/pasted something\n * into the search-box. Also emits event {@link SearchBoxXEvents.UserClearedQuery} when the user\n * removes all characters in the search-box.\n *\n * @internal\n */\n protected emitUserIsTypingAQueryEvents(): void {\n const query = this.$refs.input.value;\n this.$x.emit('UserIsTypingAQuery', query, { target: this.$refs.input });\n if (query.trim()) {\n this.emitDebouncedUserAcceptedAQuery(query);\n } else {\n this.cancelDebouncedUserAcceptedAQuery();\n }\n }\n\n /**\n * Emits event {@link XEventsTypes.UserPressedArrowKey} when the user pressed an arrow key.\n *\n * @param event - The keyboard event with the arrow key pressed.\n * @internal\n */\n protected emitUserPressedArrowKey(event: KeyboardEvent): void {\n this.$x.emit('UserPressedArrowKey', event.key as ArrowKey, this.createEventMetadata());\n }\n\n /**\n * Emits multiple events when the user pressed the enter key.\n *\n * @remarks\n * Emitted events are:\n * {@link SearchBoxXEvents.UserPressedEnterKey}\n * {@link XEventsTypes.UserAcceptedAQuery}\n *\n * @internal\n */\n protected emitUserPressedEnterKey(): void {\n const query = this.$refs.input.value.trim();\n if (query.length > 0) {\n this.$x.emit('UserPressedEnterKey', query, this.createEventMetadata());\n this.emitUserAcceptedAQuery(query);\n }\n this.$refs.input?.blur();\n }\n\n /**\n * Emits {@link XEventsTypes.UserAcceptedAQuery} event.\n *\n * @remarks It is necessary in a separated method to use it as the parameter of debounce in\n * emitDebouncedUserAcceptedAQuery method.\n * @internal\n * @param query - The query that will be emitted.\n */\n protected emitUserAcceptedAQuery(query: string): void {\n this.$x.emit('UserAcceptedAQuery', query, this.createEventMetadata());\n }\n\n /**\n * Prevents the user from either typing or pasting special characters in the input field.\n *\n * @internal\n * @param event - The event that will be checked for special characters.\n */\n protected preventSpecialKey(event: InputEvent): void {\n if (/[<>]/.test(event.data ?? '')) {\n event.preventDefault();\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { createInjector, createInjectorSSR } from 'vue-runtime-helpers';
2
2
 
3
- var css = ".x-search-input[data-v-513330ca]::-webkit-search-decoration,\n.x-search-input[data-v-513330ca]::-webkit-search-cancel-button,\n.x-search-input[data-v-513330ca]::-webkit-search-results-button,\n.x-search-input[data-v-513330ca]::-webkit-search-results-decoration {\n -webkit-appearance: none;\n}";
3
+ var css = ".x-search-input[data-v-2c03251b]::-webkit-search-decoration,\n.x-search-input[data-v-2c03251b]::-webkit-search-cancel-button,\n.x-search-input[data-v-2c03251b]::-webkit-search-results-button,\n.x-search-input[data-v-2c03251b]::-webkit-search-results-decoration {\n -webkit-appearance: none;\n}";
4
4
  const isBrowser = /*#__PURE__*/ (function () {
5
5
  return (
6
6
  Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) !==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empathyco/x-components",
3
- "version": "3.0.0-alpha.190",
3
+ "version": "3.0.0-alpha.192",
4
4
  "description": "Empathy X Components",
5
5
  "author": "Empathy Systems Corporation S.L.",
6
6
  "license": "Apache-2.0",
@@ -39,6 +39,9 @@
39
39
  "url": "https://github.com/empathyco/x.git",
40
40
  "directory": "packages/x-components"
41
41
  },
42
+ "engines": {
43
+ "node": "16"
44
+ },
42
45
  "scripts": {
43
46
  "serve": "vue-cli-service serve",
44
47
  "build": "ts-node --project ./build/tsconfig.json ./build/build.ts",
@@ -60,12 +63,12 @@
60
63
  "cypress:open:component": "cypress open-ct"
61
64
  },
62
65
  "dependencies": {
63
- "@empathyco/x-adapter": "^8.0.0-alpha.10",
64
- "@empathyco/x-deep-merge": "^1.3.0-alpha.23",
65
- "@empathyco/x-logger": "^1.2.0-alpha.3",
66
- "@empathyco/x-storage-service": "^2.0.0-alpha.3",
67
- "@empathyco/x-types": "^10.0.0-alpha.37",
68
- "@empathyco/x-utils": "^1.0.0-alpha.9",
66
+ "@empathyco/x-adapter": "^8.0.0-alpha.11",
67
+ "@empathyco/x-deep-merge": "^1.3.0-alpha.24",
68
+ "@empathyco/x-logger": "^1.2.0-alpha.4",
69
+ "@empathyco/x-storage-service": "^2.0.0-alpha.4",
70
+ "@empathyco/x-types": "^10.0.0-alpha.38",
71
+ "@empathyco/x-utils": "^1.0.0-alpha.10",
69
72
  "@types/resize-observer-browser": "~0.1.5",
70
73
  "@vue/devtools-api": "~6.2.1",
71
74
  "rxjs": "~7.4.0",
@@ -82,8 +85,8 @@
82
85
  "devDependencies": {
83
86
  "@cypress/vue": "~2.2.4",
84
87
  "@cypress/webpack-dev-server": "~1.8.4",
85
- "@empathyco/x-adapter-platform": "^1.0.0-alpha.36",
86
- "@empathyco/x-tailwindcss": "^0.2.0-alpha.19",
88
+ "@empathyco/x-adapter-platform": "^1.0.0-alpha.37",
89
+ "@empathyco/x-tailwindcss": "^0.2.0-alpha.20",
87
90
  "@microsoft/api-documenter": "~7.15.3",
88
91
  "@microsoft/api-extractor": "~7.19.4",
89
92
  "@rollup/plugin-commonjs": "~21.0.1",
@@ -133,5 +136,5 @@
133
136
  "access": "public",
134
137
  "directory": "dist"
135
138
  },
136
- "gitHead": "7cae134cd8ce6d88f7e002a515d7a414edca80f2"
139
+ "gitHead": "17d5671eee5423faac83cdb48fdd38723a7dbbc6"
137
140
  }
@@ -40320,6 +40320,58 @@
40320
40320
  "endIndex": 2
40321
40321
  }
40322
40322
  },
40323
+ {
40324
+ "kind": "PropertySignature",
40325
+ "canonicalReference": "@empathyco/x-components!SearchBoxXEvents#UserHoveredInSearchBox:member",
40326
+ "docComment": "/**\n * The user hovered in the search-box. * Payload: none.\n */\n",
40327
+ "excerptTokens": [
40328
+ {
40329
+ "kind": "Content",
40330
+ "text": "UserHoveredInSearchBox: "
40331
+ },
40332
+ {
40333
+ "kind": "Content",
40334
+ "text": "void"
40335
+ },
40336
+ {
40337
+ "kind": "Content",
40338
+ "text": ";"
40339
+ }
40340
+ ],
40341
+ "isOptional": false,
40342
+ "releaseTag": "Public",
40343
+ "name": "UserHoveredInSearchBox",
40344
+ "propertyTypeTokenRange": {
40345
+ "startIndex": 1,
40346
+ "endIndex": 2
40347
+ }
40348
+ },
40349
+ {
40350
+ "kind": "PropertySignature",
40351
+ "canonicalReference": "@empathyco/x-components!SearchBoxXEvents#UserHoveredOutSearchBox:member",
40352
+ "docComment": "/**\n * The user hovered out the search-box. * Payload: none.\n */\n",
40353
+ "excerptTokens": [
40354
+ {
40355
+ "kind": "Content",
40356
+ "text": "UserHoveredOutSearchBox: "
40357
+ },
40358
+ {
40359
+ "kind": "Content",
40360
+ "text": "void"
40361
+ },
40362
+ {
40363
+ "kind": "Content",
40364
+ "text": ";"
40365
+ }
40366
+ ],
40367
+ "isOptional": false,
40368
+ "releaseTag": "Public",
40369
+ "name": "UserHoveredOutSearchBox",
40370
+ "propertyTypeTokenRange": {
40371
+ "startIndex": 1,
40372
+ "endIndex": 2
40373
+ }
40374
+ },
40323
40375
  {
40324
40376
  "kind": "PropertySignature",
40325
40377
  "canonicalReference": "@empathyco/x-components!SearchBoxXEvents#UserIsTypingAQuery:member",
@@ -3860,6 +3860,8 @@ export interface SearchBoxXEvents {
3860
3860
  UserClearedQuery: string;
3861
3861
  UserClickedSearchBox: void;
3862
3862
  UserFocusedSearchBox: void;
3863
+ UserHoveredInSearchBox: void;
3864
+ UserHoveredOutSearchBox: void;
3863
3865
  UserIsTypingAQuery: string;
3864
3866
  UserPressedClearSearchBoxButton: void;
3865
3867
  UserPressedEnterKey: string;
@@ -3953,6 +3955,10 @@ export class SearchInput extends Vue_2 {
3953
3955
  // @internal
3954
3956
  protected emitUserFocusedSearchBox(): void;
3955
3957
  // @internal
3958
+ protected emitUserHoveredInSearchBox(): void;
3959
+ // @internal
3960
+ protected emitUserHoveredOutSearchBox(): void;
3961
+ // @internal
3956
3962
  protected emitUserIsTypingAQueryEvents(): void;
3957
3963
  // @internal
3958
3964
  protected emitUserPressedArrowKey(event: KeyboardEvent): void;
@@ -9,5 +9,5 @@ import { VueConstructor } from 'vue';
9
9
  * @internal
10
10
  */
11
11
  export declare function createDirectionalAnimationFactory(animationName: string): (animationOrigin?: AnimationOrigin) => VueConstructor;
12
- export declare type AnimationOrigin = 'top' | 'bottom' | 'left' | 'right';
12
+ export declare type AnimationOrigin = 'top' | 'bottom' | 'left' | 'right' | 'top-to-bottom' | 'bottom-to-top' | 'left-to-right' | 'right-to-left';
13
13
  //# sourceMappingURL=create-directional-animation-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-directional-animation-factory.d.ts","sourceRoot":"","sources":["../../../../src/components/animations/create-directional-animation-factory.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAE1C;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,GACpB,CAAC,eAAe,CAAC,EAAE,eAAe,KAAK,cAAc,CAoBvD;AAED,oBAAY,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"create-directional-animation-factory.d.ts","sourceRoot":"","sources":["../../../../src/components/animations/create-directional-animation-factory.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAE1C;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,GACpB,CAAC,eAAe,CAAC,EAAE,eAAe,KAAK,cAAc,CAoBvD;AAED,oBAAY,eAAe,GACvB,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,eAAe,GACf,eAAe,GACf,eAAe,GACf,eAAe,CAAC"}
@@ -73,6 +73,18 @@ export default class SearchInput extends Vue {
73
73
  * @internal
74
74
  */
75
75
  protected createEventMetadata(): Omit<WireMetadata, 'moduleName'>;
76
+ /**
77
+ * Emits event {@link SearchBoxXEvents.UserHoveredInSearchBox} when search box is hovered in.
78
+ *
79
+ * @internal
80
+ */
81
+ protected emitUserHoveredInSearchBox(): void;
82
+ /**
83
+ * Emits event {@link SearchBoxXEvents.UserHoveredOutSearchBox} when search box is hovered out.
84
+ *
85
+ * @internal
86
+ */
87
+ protected emitUserHoveredOutSearchBox(): void;
76
88
  /**
77
89
  * Emits event {@link SearchBoxXEvents.UserBlurredSearchBox} when search box loses focus.
78
90
  *
@@ -1 +1 @@
1
- {"version":3,"file":"search-input.vue?rollup-plugin-vue=script.d.ts","sourceRoot":"","sources":["../../../../../src/x-modules/search-box/components/search-input.vue?rollup-plugin-vue=script.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,OAAO,EAAY,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D;;;;;GAKG;AAIH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,GAAG;IACnC,KAAK,EAAG;QAAE,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAE3C,SAAS,CAAC,kBAAkB,SAA0B;IAEtD;;OAEG;IAEH,SAAS,CAAC,SAAS,EAAG,MAAM,CAAC;IAE7B;;OAEG;IAEH,SAAS,CAAC,SAAS,EAAG,OAAO,CAAC;IAE9B;;OAEG;IAEH,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAE5B;;OAEG;IAEH,SAAS,CAAC,mBAAmB,EAAG,MAAM,CAAC;IAEvC;;OAEG;IAEH,SAAS,CAAC,wBAAwB,EAAG,MAAM,EAAE,CAAC;IAE9C;;OAEG;IAEH,SAAS,CAAC,4BAA4B,EAAG,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAG5E,KAAK,EAAG,MAAM,CAAC;IAEtB;;;;;;OAMG;IAEH,UAAU,IAAI,IAAI;IAIlB,SAAS,CAAC,2BAA2B,EAAG,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpE;;;;;;OAMG;IAEH,iCAAiC,IAAI,IAAI;IAIzC,OAAO,IAAI,IAAI;IAMf;;;;;;OAMG;IACH,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAYpD;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAOjE;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C;;;;;;OAMG;IACH,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAU9C;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAI7D;;;;;;;;;OASG;IACH,SAAS,CAAC,uBAAuB,IAAI,IAAI;IASzC;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrD;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAKrD"}
1
+ {"version":3,"file":"search-input.vue?rollup-plugin-vue=script.d.ts","sourceRoot":"","sources":["../../../../../src/x-modules/search-box/components/search-input.vue?rollup-plugin-vue=script.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,OAAO,EAAY,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D;;;;;GAKG;AAIH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,GAAG;IACnC,KAAK,EAAG;QAAE,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAE3C,SAAS,CAAC,kBAAkB,SAA0B;IAEtD;;OAEG;IAEH,SAAS,CAAC,SAAS,EAAG,MAAM,CAAC;IAE7B;;OAEG;IAEH,SAAS,CAAC,SAAS,EAAG,OAAO,CAAC;IAE9B;;OAEG;IAEH,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAE5B;;OAEG;IAEH,SAAS,CAAC,mBAAmB,EAAG,MAAM,CAAC;IAEvC;;OAEG;IAEH,SAAS,CAAC,wBAAwB,EAAG,MAAM,EAAE,CAAC;IAE9C;;OAEG;IAEH,SAAS,CAAC,4BAA4B,EAAG,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAG5E,KAAK,EAAG,MAAM,CAAC;IAEtB;;;;;;OAMG;IAEH,UAAU,IAAI,IAAI;IAIlB,SAAS,CAAC,2BAA2B,EAAG,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpE;;;;;;OAMG;IAEH,iCAAiC,IAAI,IAAI;IAIzC,OAAO,IAAI,IAAI;IAMf;;;;;;OAMG;IACH,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAYpD;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAOjE;;;;OAIG;IACH,SAAS,CAAC,0BAA0B,IAAI,IAAI;IAI5C;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAI7C;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAI1C;;;;;;OAMG;IACH,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAU9C;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAI7D;;;;;;;;;OASG;IACH,SAAS,CAAC,uBAAuB,IAAI,IAAI;IASzC;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrD;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAKrD"}
@@ -10,6 +10,16 @@ export interface SearchBoxXEvents {
10
10
  * * Payload: The new search-box query.
11
11
  */
12
12
  SearchBoxQueryChanged: string;
13
+ /**
14
+ * The user hovered in the search-box.
15
+ * * Payload: none.
16
+ */
17
+ UserHoveredInSearchBox: void;
18
+ /**
19
+ * The user hovered out the search-box.
20
+ * * Payload: none.
21
+ */
22
+ UserHoveredOutSearchBox: void;
13
23
  /**
14
24
  * The user removed the focus from the search-box.
15
25
  * * Payload: none.
@@ -1 +1 @@
1
- {"version":3,"file":"events.types.d.ts","sourceRoot":"","sources":["../../../../src/x-modules/search-box/events.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,oBAAoB,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,+BAA+B,EAAE,IAAI,CAAC;IACtC;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"events.types.d.ts","sourceRoot":"","sources":["../../../../src/x-modules/search-box/events.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,sBAAsB,EAAE,IAAI,CAAC;IAC7B;;;OAGG;IACH,uBAAuB,EAAE,IAAI,CAAC;IAC9B;;;OAGG;IACH,oBAAoB,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,+BAA+B,EAAE,IAAI,CAAC;IACtC;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB"}