@testgorilla/tgo-ui 11.21.1 → 11.22.1
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/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs +68 -6
- package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +75 -5
- package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +2 -2
- package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -1
- package/mcp/catalog.json +1 -1
- package/mcp/server.mjs +74 -18
- package/package.json +5 -3
- package/types/testgorilla-tgo-ui-components-autocomplete-v2.d.ts +42 -4
- package/types/testgorilla-tgo-ui-components-overflow-menu.d.ts +39 -10
- package/types/testgorilla-tgo-ui-components-tag.d.ts +1 -1
package/mcp/server.mjs
CHANGED
|
@@ -3336,6 +3336,37 @@ var require_utils = __commonJS({
|
|
|
3336
3336
|
}
|
|
3337
3337
|
return output.join("");
|
|
3338
3338
|
}
|
|
3339
|
+
function removeDotSegmentsRelative(path3) {
|
|
3340
|
+
if (path3 === "" || path3[0] === "/") {
|
|
3341
|
+
return removeDotSegments(path3);
|
|
3342
|
+
}
|
|
3343
|
+
const segments = path3.split("/");
|
|
3344
|
+
const last = segments.length - 1;
|
|
3345
|
+
const output = [];
|
|
3346
|
+
let trailingDirectory = false;
|
|
3347
|
+
for (let i = 0; i <= last; i++) {
|
|
3348
|
+
const segment = segments[i];
|
|
3349
|
+
if (segment === "." || segment === "..") {
|
|
3350
|
+
if (segment === "..") {
|
|
3351
|
+
if (output.length !== 0 && output[output.length - 1] !== "..") {
|
|
3352
|
+
output.pop();
|
|
3353
|
+
} else {
|
|
3354
|
+
output.push("..");
|
|
3355
|
+
}
|
|
3356
|
+
}
|
|
3357
|
+
trailingDirectory = i === last;
|
|
3358
|
+
} else {
|
|
3359
|
+
output.push(segment);
|
|
3360
|
+
}
|
|
3361
|
+
}
|
|
3362
|
+
if (trailingDirectory && output[output.length - 1] !== "..") {
|
|
3363
|
+
output.push("");
|
|
3364
|
+
}
|
|
3365
|
+
if (output.length === 0 || output[0] === "" || output[0].includes(":")) {
|
|
3366
|
+
output.unshift(".");
|
|
3367
|
+
}
|
|
3368
|
+
return output.join("/");
|
|
3369
|
+
}
|
|
3339
3370
|
var HOST_DELIMS = { "@": "%40", "/": "%2F", "?": "%3F", "#": "%23", ":": "%3A" };
|
|
3340
3371
|
var HOST_DELIM_RE = /[@/?#:]/g;
|
|
3341
3372
|
var HOST_DELIM_NO_COLON_RE = /[@/?#]/g;
|
|
@@ -3596,6 +3627,7 @@ var require_utils = __commonJS({
|
|
|
3596
3627
|
encodeFragment,
|
|
3597
3628
|
escapePreservingEscapes,
|
|
3598
3629
|
removeDotSegments,
|
|
3630
|
+
removeDotSegmentsRelative,
|
|
3599
3631
|
isIPv4,
|
|
3600
3632
|
isUUID,
|
|
3601
3633
|
normalizeIPv6,
|
|
@@ -3819,16 +3851,18 @@ var require_schemes = __commonJS({
|
|
|
3819
3851
|
var require_fast_uri = __commonJS({
|
|
3820
3852
|
"node_modules/fast-uri/index.js"(exports, module) {
|
|
3821
3853
|
"use strict";
|
|
3822
|
-
var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, serializePathEncoding, normalizeQueryFragmentEncoding, encodeQuery, encodeFragment, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
|
|
3854
|
+
var { normalizeIPv6, removeDotSegments, removeDotSegmentsRelative, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, serializePathEncoding, normalizeQueryFragmentEncoding, encodeQuery, encodeFragment, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
|
|
3823
3855
|
var { SCHEMES, getSchemeHandler } = require_schemes();
|
|
3824
3856
|
var VALID_SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*$/u;
|
|
3825
3857
|
var MALFORMED_SCHEME_ERROR = "URI scheme is malformed.";
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3858
|
+
var MALFORMED_HOST_ERROR = "URI host is malformed.";
|
|
3859
|
+
var FORBIDDEN_DOMAIN_HOST_CHARACTER = /[\0-\x20"#/:<>?@[\\\]^`{|}\x7F]/u;
|
|
3860
|
+
function validateScheme(scheme) {
|
|
3861
|
+
const stringScheme = String(scheme);
|
|
3862
|
+
if (!VALID_SCHEME.test(stringScheme)) {
|
|
3829
3863
|
throw new TypeError(MALFORMED_SCHEME_ERROR);
|
|
3830
3864
|
}
|
|
3831
|
-
return
|
|
3865
|
+
return stringScheme;
|
|
3832
3866
|
}
|
|
3833
3867
|
function normalize2(uri, options) {
|
|
3834
3868
|
if (typeof uri === "string") {
|
|
@@ -3865,6 +3899,9 @@ var require_fast_uri = __commonJS({
|
|
|
3865
3899
|
const resolvedSchemeHandler = getSchemeHandler(options && options.scheme || resolved.scheme);
|
|
3866
3900
|
const resolvedHost = resolved.host;
|
|
3867
3901
|
const resolvedHostIsIP = resolvedHost !== void 0 && resolvedHost !== "" && (isIPv4(resolvedHost) || normalizeIPv6(resolvedHost).isIPV6);
|
|
3902
|
+
if (hasForbiddenDomainHost(resolved, options || {}, resolvedSchemeHandler, resolvedHostIsIP)) {
|
|
3903
|
+
throw new Error(MALFORMED_HOST_ERROR);
|
|
3904
|
+
}
|
|
3868
3905
|
canonicalizeHost(resolved, options || {}, resolvedSchemeHandler, resolvedHostIsIP);
|
|
3869
3906
|
const encodedASCIIHost = resolvedHost && resolvedHost.indexOf("%") !== -1 && !new RegExp("\\P{ASCII}", "u").test(resolvedHost);
|
|
3870
3907
|
if (resolved.error && !encodedASCIIHost) {
|
|
@@ -3906,14 +3943,15 @@ var require_fast_uri = __commonJS({
|
|
|
3906
3943
|
if (relative.path[0] === "/") {
|
|
3907
3944
|
target.path = removeDotSegments(relative.path);
|
|
3908
3945
|
} else {
|
|
3909
|
-
|
|
3946
|
+
const baseHasAuthority = base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0;
|
|
3947
|
+
if (baseHasAuthority && !base.path) {
|
|
3910
3948
|
target.path = "/" + relative.path;
|
|
3911
3949
|
} else if (!base.path) {
|
|
3912
3950
|
target.path = relative.path;
|
|
3913
3951
|
} else {
|
|
3914
3952
|
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path;
|
|
3915
3953
|
}
|
|
3916
|
-
target.path = removeDotSegments(target.path);
|
|
3954
|
+
target.path = base.scheme === void 0 && !baseHasAuthority && target.path[0] !== "/" ? removeDotSegmentsRelative(target.path) : removeDotSegments(target.path);
|
|
3917
3955
|
}
|
|
3918
3956
|
target.query = relative.query;
|
|
3919
3957
|
}
|
|
@@ -3951,12 +3989,13 @@ var require_fast_uri = __commonJS({
|
|
|
3951
3989
|
const options = Object.assign({}, opts);
|
|
3952
3990
|
const uriTokens = [];
|
|
3953
3991
|
if (component.scheme) {
|
|
3954
|
-
component.scheme =
|
|
3992
|
+
component.scheme = validateScheme(component.scheme);
|
|
3955
3993
|
}
|
|
3956
3994
|
const schemeHandler = getSchemeHandler(options.scheme || component.scheme);
|
|
3957
3995
|
if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options);
|
|
3958
3996
|
const hasAuthority = component.userinfo !== void 0 || component.host !== void 0 || component.port !== void 0;
|
|
3959
|
-
const
|
|
3997
|
+
const schemelessReference = (component.scheme === void 0 || options.reference === "suffix") && !hasAuthority;
|
|
3998
|
+
const pathNoScheme = !options.skipEscape && schemelessReference;
|
|
3960
3999
|
if (component.path !== void 0) {
|
|
3961
4000
|
if (!options.skipEscape) {
|
|
3962
4001
|
component.path = serializePathEncoding(component.path, pathNoScheme);
|
|
@@ -3965,7 +4004,7 @@ var require_fast_uri = __commonJS({
|
|
|
3965
4004
|
}
|
|
3966
4005
|
}
|
|
3967
4006
|
if (options.reference !== "suffix" && component.scheme) {
|
|
3968
|
-
component.scheme =
|
|
4007
|
+
component.scheme = validateScheme(component.scheme);
|
|
3969
4008
|
uriTokens.push(component.scheme, ":");
|
|
3970
4009
|
}
|
|
3971
4010
|
const authority = recomposeAuthority(component);
|
|
@@ -3981,9 +4020,9 @@ var require_fast_uri = __commonJS({
|
|
|
3981
4020
|
if (component.path !== void 0) {
|
|
3982
4021
|
let s = component.path;
|
|
3983
4022
|
if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
|
|
3984
|
-
s = removeDotSegments(s);
|
|
4023
|
+
s = schemelessReference && s[0] !== "/" ? removeDotSegmentsRelative(s) : removeDotSegments(s);
|
|
3985
4024
|
}
|
|
3986
|
-
if (
|
|
4025
|
+
if (schemelessReference) {
|
|
3987
4026
|
s = serializePathEncoding(s, true);
|
|
3988
4027
|
}
|
|
3989
4028
|
if (authority === void 0 && s[0] === "/" && s[1] === "/") {
|
|
@@ -4030,16 +4069,34 @@ var require_fast_uri = __commonJS({
|
|
|
4030
4069
|
return hasMalformedPercentEncoding(matches[3]) || host !== void 0 && !isIPLiteral(host) && hasMalformedPercentEncoding(host) || hasMalformedPercentEncoding(matches[6]) || hasMalformedPercentEncoding(matches[7]) || hasMalformedPercentEncoding(matches[8]);
|
|
4031
4070
|
}
|
|
4032
4071
|
function canonicalizeHost(parsed, options, schemeHandler, isIP) {
|
|
4072
|
+
if (hasForbiddenDomainHost(parsed, options, schemeHandler, isIP)) {
|
|
4073
|
+
parsed.error = parsed.error || MALFORMED_HOST_ERROR;
|
|
4074
|
+
return true;
|
|
4075
|
+
}
|
|
4033
4076
|
if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport) && parsed.host && !isIPLiteral(parsed.host) && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
|
|
4077
|
+
let url;
|
|
4034
4078
|
try {
|
|
4035
|
-
|
|
4079
|
+
url = new URL("http://" + parsed.host);
|
|
4036
4080
|
} catch (e) {
|
|
4037
4081
|
parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
|
|
4038
4082
|
return true;
|
|
4039
4083
|
}
|
|
4084
|
+
if (!isHostOnlyURL(url)) {
|
|
4085
|
+
parsed.error = parsed.error || MALFORMED_HOST_ERROR;
|
|
4086
|
+
return true;
|
|
4087
|
+
}
|
|
4088
|
+
parsed.host = url.hostname;
|
|
4040
4089
|
}
|
|
4041
4090
|
return false;
|
|
4042
4091
|
}
|
|
4092
|
+
function hasForbiddenDomainHost(parsed, options, schemeHandler, isIP) {
|
|
4093
|
+
return Boolean(
|
|
4094
|
+
parsed.host && isIP === false && !isIPLiteral(parsed.host) && (options.domainHost || schemeHandler && schemeHandler.domainHost) && FORBIDDEN_DOMAIN_HOST_CHARACTER.test(parsed.host)
|
|
4095
|
+
);
|
|
4096
|
+
}
|
|
4097
|
+
function isHostOnlyURL(url) {
|
|
4098
|
+
return url.username === "" && url.password === "" && url.port === "" && url.pathname === "/" && url.search === "" && url.hash === "" && url.hostname !== "";
|
|
4099
|
+
}
|
|
4043
4100
|
function parseWithStatus(uri, opts) {
|
|
4044
4101
|
const options = Object.assign({}, opts);
|
|
4045
4102
|
const parsed = {
|
|
@@ -4094,9 +4151,8 @@ var require_fast_uri = __commonJS({
|
|
|
4094
4151
|
parsed.query = matches[7];
|
|
4095
4152
|
parsed.fragment = matches[8];
|
|
4096
4153
|
if (parsed.scheme !== void 0) {
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
parsed.scheme = decodedScheme.toLowerCase();
|
|
4154
|
+
if (VALID_SCHEME.test(parsed.scheme)) {
|
|
4155
|
+
parsed.scheme = parsed.scheme.toLowerCase();
|
|
4100
4156
|
} else {
|
|
4101
4157
|
parsed.error = parsed.error || MALFORMED_SCHEME_ERROR;
|
|
4102
4158
|
malformedScheme = true;
|
|
@@ -4124,7 +4180,7 @@ var require_fast_uri = __commonJS({
|
|
|
4124
4180
|
malformedIPLiteral = hasIPLiteralBracket && (!bracketedIPLiteral || ipv6result.error === true);
|
|
4125
4181
|
parsed.host = isIP ? ipv6result.host : ipv6result.host.toLowerCase();
|
|
4126
4182
|
if (malformedIPLiteral) {
|
|
4127
|
-
parsed.error = parsed.error ||
|
|
4183
|
+
parsed.error = parsed.error || MALFORMED_HOST_ERROR;
|
|
4128
4184
|
malformedAuthorityOrPort = true;
|
|
4129
4185
|
}
|
|
4130
4186
|
} else {
|
|
@@ -4152,7 +4208,7 @@ var require_fast_uri = __commonJS({
|
|
|
4152
4208
|
if (!isIP) {
|
|
4153
4209
|
host = normalizePercentEncoding(host.toLowerCase());
|
|
4154
4210
|
}
|
|
4155
|
-
parsed.host = reescapeHostDelimiters(host, isIP);
|
|
4211
|
+
parsed.host = isIP || options.scheme !== "null" ? reescapeHostDelimiters(host, isIP) : host;
|
|
4156
4212
|
}
|
|
4157
4213
|
if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) {
|
|
4158
4214
|
if (parsed.path) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testgorilla/tgo-ui",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.22.1",
|
|
4
4
|
"license": "proprietary-license",
|
|
5
5
|
"lint-staged": {
|
|
6
6
|
"{projects,components}/**/*.ts": [
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"postcss": "^8.5.18"
|
|
63
63
|
},
|
|
64
64
|
"@angular/build": {
|
|
65
|
-
"undici": "^7.
|
|
65
|
+
"undici": "^7.30.1",
|
|
66
66
|
"vite": "~7.3.7"
|
|
67
67
|
},
|
|
68
68
|
"ng-packagr": {
|
|
@@ -74,7 +74,9 @@
|
|
|
74
74
|
},
|
|
75
75
|
"less": "^4.8.1",
|
|
76
76
|
"webpack-dev-middleware": "^7.4.6",
|
|
77
|
-
"piscina": "^5.3.2"
|
|
77
|
+
"piscina": "^5.3.2",
|
|
78
|
+
"undici@7": "^7.30.1",
|
|
79
|
+
"undici@6": "^6.29.1"
|
|
78
80
|
},
|
|
79
81
|
"module": "fesm2022/testgorilla-tgo-ui.mjs",
|
|
80
82
|
"typings": "types/testgorilla-tgo-ui.d.ts",
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { AfterViewInit, OnDestroy, DoCheck, ElementRef } from '@angular/core';
|
|
2
|
+
import { AfterViewInit, OnDestroy, TemplateRef, DoCheck, ElementRef } from '@angular/core';
|
|
3
3
|
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
4
4
|
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
|
5
5
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
|
6
6
|
import { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';
|
|
7
7
|
export { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';
|
|
8
|
+
import { IconName } from '@testgorilla/tgo-ui/components/icon';
|
|
8
9
|
import { BehaviorSubject, ReplaySubject, Observable } from 'rxjs';
|
|
9
10
|
|
|
10
11
|
declare class AutocompleteOverflowDetectDirective implements AfterViewInit, OnDestroy {
|
|
@@ -27,6 +28,29 @@ declare class AutocompleteOverflowDetectDirective implements AfterViewInit, OnDe
|
|
|
27
28
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AutocompleteOverflowDetectDirective, "[uiAutocompleteOverflowDetect]", ["autocompleteOverflowDetect"], { "measureContainer": { "alias": "measureContainer"; "required": false; "isSignal": true; }; "itemSelector": { "alias": "itemSelector"; "required": false; "isSignal": true; }; "reserveWidth": { "alias": "reserveWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
28
29
|
}
|
|
29
30
|
|
|
31
|
+
interface AutocompleteTagSuffixContext<T = Record<string, unknown>> {
|
|
32
|
+
/** The selected item the tag represents. */
|
|
33
|
+
$implicit: T;
|
|
34
|
+
/** The tag's position in the selection. */
|
|
35
|
+
index: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Marks an `ng-template` whose content is rendered inside each selected tag, after its label.
|
|
39
|
+
* Only applies with `tagsPosition="below"`.
|
|
40
|
+
*
|
|
41
|
+
* ```html
|
|
42
|
+
* <ui-autocomplete-v2 tagsPosition="below" ...>
|
|
43
|
+
* <ng-template uiAutocompleteTagSuffix let-item>{{ item.radius }}</ng-template>
|
|
44
|
+
* </ui-autocomplete-v2>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
declare class AutocompleteTagSuffixDirective<T = Record<string, unknown>> {
|
|
48
|
+
readonly templateRef: TemplateRef<AutocompleteTagSuffixContext<T>>;
|
|
49
|
+
static ngTemplateContextGuard<T>(_dir: AutocompleteTagSuffixDirective<T>, ctx: unknown): ctx is AutocompleteTagSuffixContext<T>;
|
|
50
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteTagSuffixDirective<any>, never>;
|
|
51
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AutocompleteTagSuffixDirective<any>, "ng-template[uiAutocompleteTagSuffix]", never, {}, {}, never, never, true, never>;
|
|
52
|
+
}
|
|
53
|
+
|
|
30
54
|
declare class AutocompleteFilterService<T extends Record<string, unknown> = Record<string, unknown>> implements OnDestroy {
|
|
31
55
|
readonly textField: _angular_core.WritableSignal<string>;
|
|
32
56
|
readonly flatItems: _angular_core.WritableSignal<T[]>;
|
|
@@ -158,6 +182,11 @@ declare class AutocompleteV2Component<T extends Record<string, unknown> = Record
|
|
|
158
182
|
errors: _angular_core.InputSignal<string[]>;
|
|
159
183
|
addOptionPosition: _angular_core.InputSignal<AddOptionPosition>;
|
|
160
184
|
tagsPosition: _angular_core.InputSignal<TagsPosition>;
|
|
185
|
+
/**
|
|
186
|
+
* Icon shown before the label of each selected tag: one icon for every tag, or a function that picks
|
|
187
|
+
* it per item (return `''` for no icon). Only applies with `tagsPosition="below"`.
|
|
188
|
+
*/
|
|
189
|
+
tagIcon: _angular_core.InputSignal<IconName | ((item: T) => IconName)>;
|
|
161
190
|
selectionChange: _angular_core.OutputEmitterRef<T | T[]>;
|
|
162
191
|
searchTextChange: _angular_core.OutputEmitterRef<string>;
|
|
163
192
|
blur: _angular_core.OutputEmitterRef<void>;
|
|
@@ -172,6 +201,7 @@ declare class AutocompleteV2Component<T extends Record<string, unknown> = Record
|
|
|
172
201
|
set cdkViewport(viewport: CdkVirtualScrollViewport);
|
|
173
202
|
matAutocomplete: MatAutocomplete;
|
|
174
203
|
matInput: ElementRef<HTMLInputElement>;
|
|
204
|
+
protected readonly tagSuffix: _angular_core.Signal<AutocompleteTagSuffixDirective<T> | undefined>;
|
|
175
205
|
protected readonly valueManager: AutocompleteValueManager<T>;
|
|
176
206
|
protected readonly filterService: AutocompleteFilterService<T>;
|
|
177
207
|
private readonly scrollManager;
|
|
@@ -200,6 +230,8 @@ declare class AutocompleteV2Component<T extends Record<string, unknown> = Record
|
|
|
200
230
|
protected readonly tagsBelow: _angular_core.Signal<boolean>;
|
|
201
231
|
protected readonly suppressPlaceholder: _angular_core.Signal<boolean>;
|
|
202
232
|
protected showClearButton: _angular_core.Signal<boolean>;
|
|
233
|
+
/** Icon per below-tag, in selection order */
|
|
234
|
+
protected readonly tagIcons: _angular_core.Signal<IconName[]>;
|
|
203
235
|
protected safeErrors: _angular_core.Signal<string[]>;
|
|
204
236
|
private readonly controlInvalid;
|
|
205
237
|
protected hasError: _angular_core.Signal<boolean>;
|
|
@@ -219,6 +251,12 @@ declare class AutocompleteV2Component<T extends Record<string, unknown> = Record
|
|
|
219
251
|
protected get isGrouped(): boolean;
|
|
220
252
|
protected onOptionSelected(event: MatAutocompleteSelectedEvent): void;
|
|
221
253
|
protected onOptionRemoved(option: T): void;
|
|
254
|
+
/**
|
|
255
|
+
* Makes the whole below-tag a hit area for the control in its `uiAutocompleteTagSuffix` content
|
|
256
|
+
* (e.g. a menu trigger). The remove icon keeps its own behavior, and presses inside the suffix never
|
|
257
|
+
* reach here because the tag stops them.
|
|
258
|
+
*/
|
|
259
|
+
protected onTagActivate(event: Event): void;
|
|
222
260
|
protected onInputChange(event: Event): void;
|
|
223
261
|
protected onClear(): void;
|
|
224
262
|
protected onBlur(): void;
|
|
@@ -233,8 +271,8 @@ declare class AutocompleteV2Component<T extends Record<string, unknown> = Record
|
|
|
233
271
|
onKeydown($event: KeyboardEvent): void;
|
|
234
272
|
protected getVirtualScrollHeight(itemCount: number): number;
|
|
235
273
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteV2Component<any>, never>;
|
|
236
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteV2Component<any>, "ui-autocomplete-v2", never, { "itemsList": { "alias": "itemsList"; "required": false; "isSignal": true; }; "suggestionsList": { "alias": "suggestionsList"; "required": false; "isSignal": true; }; "groupsList": { "alias": "groupsList"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowAdd": { "alias": "allowAdd"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "imageField": { "alias": "imageField"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "minCharactersSearch": { "alias": "minCharactersSearch"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": true; "isSignal": true; }; "showBottomContent": { "alias": "showBottomContent"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "dropdownPanelClass": { "alias": "dropdownPanelClass"; "required": false; "isSignal": true; }; "panelPosition": { "alias": "panelPosition"; "required": false; "isSignal": true; }; "hideSelectedSection": { "alias": "hideSelectedSection"; "required": false; "isSignal": true; }; "userAdditionsGroupLabel": { "alias": "userAdditionsGroupLabel"; "required": false; "isSignal": true; }; "closeOnScroll": { "alias": "closeOnScroll"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "allowUserInput": { "alias": "allowUserInput"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "dynamicFilterLoading": { "alias": "dynamicFilterLoading"; "required": false; "isSignal": true; }; "dynamicFilteredList": { "alias": "dynamicFilteredList"; "required": false; "isSignal": true; }; "infiniteScroll": { "alias": "infiniteScroll"; "required": false; "isSignal": true; }; "hasMoreOptionsForInfiniteScroll": { "alias": "hasMoreOptionsForInfiniteScroll"; "required": false; "isSignal": true; }; "itemValue": { "alias": "itemValue"; "required": false; "isSignal": true; }; "formErrorConfig": { "alias": "formErrorConfig"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "addOptionPosition": { "alias": "addOptionPosition"; "required": false; "isSignal": true; }; "tagsPosition": { "alias": "tagsPosition"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "searchTextChange": "searchTextChange"; "blur": "blur"; "focus": "focus"; "scrollViewportBottomReached": "scrollViewportBottomReached"; "scrollViewportBottomReachedFiltered": "scrollViewportBottomReachedFiltered"; },
|
|
274
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteV2Component<any>, "ui-autocomplete-v2", never, { "itemsList": { "alias": "itemsList"; "required": false; "isSignal": true; }; "suggestionsList": { "alias": "suggestionsList"; "required": false; "isSignal": true; }; "groupsList": { "alias": "groupsList"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowAdd": { "alias": "allowAdd"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "imageField": { "alias": "imageField"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "minCharactersSearch": { "alias": "minCharactersSearch"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": true; "isSignal": true; }; "showBottomContent": { "alias": "showBottomContent"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "dropdownPanelClass": { "alias": "dropdownPanelClass"; "required": false; "isSignal": true; }; "panelPosition": { "alias": "panelPosition"; "required": false; "isSignal": true; }; "hideSelectedSection": { "alias": "hideSelectedSection"; "required": false; "isSignal": true; }; "userAdditionsGroupLabel": { "alias": "userAdditionsGroupLabel"; "required": false; "isSignal": true; }; "closeOnScroll": { "alias": "closeOnScroll"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "allowUserInput": { "alias": "allowUserInput"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "dynamicFilterLoading": { "alias": "dynamicFilterLoading"; "required": false; "isSignal": true; }; "dynamicFilteredList": { "alias": "dynamicFilteredList"; "required": false; "isSignal": true; }; "infiniteScroll": { "alias": "infiniteScroll"; "required": false; "isSignal": true; }; "hasMoreOptionsForInfiniteScroll": { "alias": "hasMoreOptionsForInfiniteScroll"; "required": false; "isSignal": true; }; "itemValue": { "alias": "itemValue"; "required": false; "isSignal": true; }; "formErrorConfig": { "alias": "formErrorConfig"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "addOptionPosition": { "alias": "addOptionPosition"; "required": false; "isSignal": true; }; "tagsPosition": { "alias": "tagsPosition"; "required": false; "isSignal": true; }; "tagIcon": { "alias": "tagIcon"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "searchTextChange": "searchTextChange"; "blur": "blur"; "focus": "focus"; "scrollViewportBottomReached": "scrollViewportBottomReached"; "scrollViewportBottomReachedFiltered": "scrollViewportBottomReachedFiltered"; }, ["tagSuffix"], ["[autocompleteTagsSuffix]"], true, never>;
|
|
237
275
|
}
|
|
238
276
|
|
|
239
|
-
export { Autocomplete, AutocompleteFilterService, AutocompleteOverflowDetectDirective, AutocompleteV2Component, AutocompleteV2Utils, AutocompleteValueManager, DropdownVariation };
|
|
240
|
-
export type { AddOptionPosition, AutocompleteGroup, AutocompleteSize, AutocompleteType, DropdownVariationType, TagsPosition };
|
|
277
|
+
export { Autocomplete, AutocompleteFilterService, AutocompleteOverflowDetectDirective, AutocompleteTagSuffixDirective, AutocompleteV2Component, AutocompleteV2Utils, AutocompleteValueManager, DropdownVariation };
|
|
278
|
+
export type { AddOptionPosition, AutocompleteGroup, AutocompleteSize, AutocompleteTagSuffixContext, AutocompleteType, DropdownVariationType, TagsPosition };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { TemplateRef, OnInit, OnChanges, AfterViewInit, EventEmitter, QueryList, ElementRef, NgZone, SimpleChanges } from '@angular/core';
|
|
3
3
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
4
|
import * as i4 from '@angular/material/menu';
|
|
@@ -130,7 +130,25 @@ declare class OverflowMenuComponent implements OnInit, OnChanges, AfterViewInit
|
|
|
130
130
|
* @type {OverflowMenuSelectionMode}
|
|
131
131
|
* @memberof OverflowMenuComponent
|
|
132
132
|
*/
|
|
133
|
-
readonly selectionMode:
|
|
133
|
+
readonly selectionMode: _angular_core.InputSignal<OverflowMenuSelectionMode>;
|
|
134
|
+
/**
|
|
135
|
+
* Element the dropdown is positioned against, instead of the trigger: an element, or a selector
|
|
136
|
+
* resolved as the trigger's closest matching ancestor (e.g. `'ui-tag'` to open from the start of
|
|
137
|
+
* the tag the trigger sits in). Read when the dropdown is first opened.
|
|
138
|
+
*
|
|
139
|
+
* @type {string | HTMLElement | null}
|
|
140
|
+
* @memberof OverflowMenuComponent
|
|
141
|
+
*/
|
|
142
|
+
readonly menuAnchor: _angular_core.InputSignal<string | HTMLElement | null>;
|
|
143
|
+
/**
|
|
144
|
+
* Makes the open dropdown as wide as its anchor (`menuAnchor`, or the trigger when none is set),
|
|
145
|
+
* instead of sizing it to its content. Measured each time it opens.
|
|
146
|
+
*
|
|
147
|
+
* @type {boolean}
|
|
148
|
+
* @default false
|
|
149
|
+
* @memberof OverflowMenuComponent
|
|
150
|
+
*/
|
|
151
|
+
readonly shouldMatchAnchorWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
134
152
|
isDynamicMenu: boolean;
|
|
135
153
|
withRemovableOption: boolean;
|
|
136
154
|
selectItem: EventEmitter<string>;
|
|
@@ -141,15 +159,26 @@ declare class OverflowMenuComponent implements OnInit, OnChanges, AfterViewInit
|
|
|
141
159
|
buttonElement: ElementRef<HTMLElement>;
|
|
142
160
|
menuItems: string[];
|
|
143
161
|
submenus: Array<OverflowMenuButtonModify[]>;
|
|
144
|
-
isMenuRendered:
|
|
145
|
-
isMenuOpened:
|
|
146
|
-
isFocused:
|
|
162
|
+
isMenuRendered: _angular_core.WritableSignal<boolean>;
|
|
163
|
+
isMenuOpened: _angular_core.WritableSignal<boolean>;
|
|
164
|
+
isFocused: _angular_core.WritableSignal<boolean>;
|
|
147
165
|
get menuItemHasHovered(): boolean;
|
|
148
166
|
private readonly destroyRef;
|
|
167
|
+
private readonly anchoredTriggers;
|
|
168
|
+
private readonly document;
|
|
149
169
|
constructor(defaultAppTheme: ApplicationTheme, focusMonitor: FocusMonitor, ngZone: NgZone);
|
|
150
170
|
ngOnInit(): void;
|
|
151
171
|
ngOnChanges(changes: SimpleChanges): void;
|
|
152
172
|
ngAfterViewInit(): void;
|
|
173
|
+
/**
|
|
174
|
+
* MatMenuTrigger has no public way to position against another element: it takes its origin from
|
|
175
|
+
* the protected `_getOverlayOrigin()` when it first creates the overlay. Overriding it on the root
|
|
176
|
+
* trigger lets `menuAnchor` move the origin, falling back to the trigger itself.
|
|
177
|
+
*/
|
|
178
|
+
private anchorTrigger;
|
|
179
|
+
private resolveMenuAnchor;
|
|
180
|
+
/** Sizes the open panel to the anchor (or the trigger), overriding Material's 112–280px panel limits. */
|
|
181
|
+
private matchPanelToAnchorWidth;
|
|
153
182
|
/** Opens the dropdown programmatically, as if the trigger had been used. */
|
|
154
183
|
openMenu(): void;
|
|
155
184
|
/** Closes the dropdown, whichever way it was opened. */
|
|
@@ -167,14 +196,14 @@ declare class OverflowMenuComponent implements OnInit, OnChanges, AfterViewInit
|
|
|
167
196
|
private reindex;
|
|
168
197
|
private resetSubmenus;
|
|
169
198
|
private createSubmenus;
|
|
170
|
-
static ɵfac:
|
|
171
|
-
static ɵcmp:
|
|
199
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverflowMenuComponent, [{ optional: true; }, null, null]>;
|
|
200
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OverflowMenuComponent, "ui-overflow-menu", never, { "buttons": { "alias": "buttons"; "required": false; }; "iconTrigger": { "alias": "iconTrigger"; "required": false; }; "menuLabel": { "alias": "menuLabel"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "ariaRequired": { "alias": "ariaRequired"; "required": false; }; "describedby": { "alias": "describedby"; "required": false; }; "contentTemplateRef": { "alias": "contentTemplateRef"; "required": false; }; "buttonVariant": { "alias": "buttonVariant"; "required": false; }; "buttonSize": { "alias": "buttonSize"; "required": false; }; "menuConfig": { "alias": "menuConfig"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "menuAnchor": { "alias": "menuAnchor"; "required": false; "isSignal": true; }; "shouldMatchAnchorWidth": { "alias": "shouldMatchAnchorWidth"; "required": false; "isSignal": true; }; "isDynamicMenu": { "alias": "isDynamicMenu"; "required": false; }; "withRemovableOption": { "alias": "withRemovableOption"; "required": false; }; }, { "selectItem": "selectItem"; "menuOpened": "menuOpened"; "menuClosed": "menuClosed"; }, never, ["[menu-content]"], true, never>;
|
|
172
201
|
}
|
|
173
202
|
|
|
174
203
|
declare class OverflowMenuComponentModule {
|
|
175
|
-
static ɵfac:
|
|
176
|
-
static ɵmod:
|
|
177
|
-
static ɵinj:
|
|
204
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverflowMenuComponentModule, never>;
|
|
205
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<OverflowMenuComponentModule, never, [typeof i1.CommonModule, typeof i2.ButtonComponentModule, typeof i3.IconComponentModule, typeof i4.MatMenuModule, typeof i5.MatButtonModule, typeof i6.MatTooltipModule, typeof i7.EllipseTextDirective, typeof i7.UiTranslatePipe, typeof OverflowMenuComponent], [typeof OverflowMenuComponent]>;
|
|
206
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<OverflowMenuComponentModule>;
|
|
178
207
|
}
|
|
179
208
|
|
|
180
209
|
export { OverflowMenuComponent, OverflowMenuComponentModule };
|
|
@@ -180,7 +180,7 @@ declare class TagComponent {
|
|
|
180
180
|
readonly filled: _angular_core.Signal<boolean>;
|
|
181
181
|
onKeydown($event: KeyboardEvent): void;
|
|
182
182
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
|
|
183
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ui-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "allowClose": { "alias": "allowClose"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": false; "isSignal": true; }; "showIconWhenSelected": { "alias": "showIconWhenSelected"; "required": false; "isSignal": true; }; "pinnedBackground": { "alias": "pinnedBackground"; "required": false; "isSignal": true; }; "constrainWidth": { "alias": "constrainWidth"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "ariaRequired": { "alias": "ariaRequired"; "required": false; "isSignal": true; }; "showBadge": { "alias": "showBadge"; "required": false; "isSignal": true; }; "notificationsAmount": { "alias": "notificationsAmount"; "required": false; "isSignal": true; }; }, { "isSelected": "isSelectedChange"; "close": "close"; "press": "press"; }, never,
|
|
183
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ui-tag", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "allowClose": { "alias": "allowClose"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": false; "isSignal": true; }; "showIconWhenSelected": { "alias": "showIconWhenSelected"; "required": false; "isSignal": true; }; "pinnedBackground": { "alias": "pinnedBackground"; "required": false; "isSignal": true; }; "constrainWidth": { "alias": "constrainWidth"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "testId": { "alias": "testId"; "required": false; "isSignal": true; }; "ariaRequired": { "alias": "ariaRequired"; "required": false; "isSignal": true; }; "showBadge": { "alias": "showBadge"; "required": false; "isSignal": true; }; "notificationsAmount": { "alias": "notificationsAmount"; "required": false; "isSignal": true; }; }, { "isSelected": "isSelectedChange"; "close": "close"; "press": "press"; }, never, ["[uiTagSuffix]"], true, never>;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
declare class TagComponentModule {
|