@ember-eui/core 13.0.3 → 13.0.4
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/declarations/components/eui-combo-box/create-option.d.ts +18 -1
- package/declarations/components/eui-combo-box/create-option.d.ts.map +1 -1
- package/declarations/components/eui-combo-box/options.d.ts.map +1 -1
- package/declarations/components/eui-combo-box.d.ts +2 -0
- package/declarations/components/eui-combo-box.d.ts.map +1 -1
- package/dist/components/eui-combo-box/create-option.js +39 -9
- package/dist/components/eui-combo-box/create-option.js.map +1 -1
- package/dist/components/eui-combo-box/options.js +4 -2
- package/dist/components/eui-combo-box/options.js.map +1 -1
- package/dist/components/eui-combo-box.js +6 -3
- package/dist/components/eui-combo-box.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,11 +8,28 @@ export interface EuiComboBoxCreateOptionSignature {
|
|
|
8
8
|
searchText: string;
|
|
9
9
|
};
|
|
10
10
|
onCreateOption: () => void;
|
|
11
|
+
alwaysShow?: boolean;
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
|
-
export default class
|
|
14
|
+
export default class EuiComboBoxCreateOptionComponent extends Component<EuiComboBoxCreateOptionSignature> {
|
|
14
15
|
euiI18n: EuiI18n;
|
|
15
16
|
_regex: RegExp;
|
|
17
|
+
get createLabel(): string;
|
|
16
18
|
get formattedString(): ReturnType<typeof htmlSafe>;
|
|
19
|
+
get extraStyling(): {
|
|
20
|
+
container: {
|
|
21
|
+
padding: string;
|
|
22
|
+
cursor: string;
|
|
23
|
+
};
|
|
24
|
+
content: {
|
|
25
|
+
padding: string;
|
|
26
|
+
};
|
|
27
|
+
} | {
|
|
28
|
+
container: {
|
|
29
|
+
cursor: string;
|
|
30
|
+
padding?: undefined;
|
|
31
|
+
};
|
|
32
|
+
content?: undefined;
|
|
33
|
+
};
|
|
17
34
|
}
|
|
18
35
|
//# sourceMappingURL=create-option.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-option.d.ts","sourceRoot":"","sources":["../../../src/components/eui-combo-box/create-option.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAI3C,OAAO,EAAE,QAAQ,EAAc,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-option.d.ts","sourceRoot":"","sources":["../../../src/components/eui-combo-box/create-option.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAI3C,OAAO,EAAE,QAAQ,EAAc,MAAM,iBAAiB,CAAC;AAOvD,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AAUnD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE;QACJ,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/B,cAAc,EAAE,MAAM,IAAI,CAAC;QAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAED,MAAM,CAAC,OAAO,OAAO,gCAAiC,SAAQ,SAAS,CAAC,gCAAgC,CAAC;IACtF,OAAO,EAAE,OAAO,CAAC;IAElC,MAAM,SAAsB;IAE5B,IAAI,WAAW,WAEd;IAED,IAAI,eAAe,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CA6BjD;IAED,IAAI,YAAY;;;;;;;;;;;;;;MAkBf;CAkDF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/components/eui-combo-box/options.ts"],"names":[],"mappings":"AAQA,OAAO,uBAAuB,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/components/eui-combo-box/options.ts"],"names":[],"mappings":"AAQA,OAAO,uBAAuB,MAAM,oDAAoD,CAAC;AAczF,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,2BAA4B,SAAQ,uBAAuB;IAC7D,SAAS,EAAE,gBAAgB,CAAC;IAC7C,aAAa,EAAE,GAAG,EAAE,CAAM;IAE1B,IAAI,cAAc,QAgBjB;IAED,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAW9B,IAAI,eAAe,WAIlB;IAED,IAAI,SAAS,QAGZ;IAED,IAAI,eAAe,yCAElB;CAqHF"}
|
|
@@ -17,6 +17,7 @@ export interface EuiComboBoxSignature {
|
|
|
17
17
|
asPlainText?: boolean;
|
|
18
18
|
};
|
|
19
19
|
onCreateOption?: (search: string) => boolean | undefined;
|
|
20
|
+
alwaysShowCreateOption?: boolean;
|
|
20
21
|
options: any[];
|
|
21
22
|
search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;
|
|
22
23
|
searchField?: string;
|
|
@@ -80,6 +81,7 @@ export default class EuiComboBoxComponent extends Component<EuiComboBoxSignature
|
|
|
80
81
|
get loadingMessage(): any;
|
|
81
82
|
get noMatchesMessage(): string;
|
|
82
83
|
get searchMessage(): string;
|
|
84
|
+
get alwaysShowCreateOption(): boolean | undefined;
|
|
83
85
|
get opts(): any;
|
|
84
86
|
get options(): any[];
|
|
85
87
|
get results(): any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-combo-box.d.ts","sourceRoot":"","sources":["../../src/components/eui-combo-box.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-combo-box.d.ts","sourceRoot":"","sources":["../../src/components/eui-combo-box.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAErC,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAsB3C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,UAAU,YAAY,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,CAAC;CACd;AAED,UAAU,MAAM;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE;QACP,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE;QACJ,eAAe,CAAC,EACZ,OAAO,GACP;YACE,WAAW,CAAC,EAAE,OAAO,CAAC;SACvB,CAAC;QACN,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;QACzD,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,sBAAsB,CAAC,EAAE,GAAG,CAAC;QAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;QAClC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;QACjC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;QAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,GAAG,CAAC;QACrB,qBAAqB,CAAC,EAAE,GAAG,CAAC;QAC5B,sBAAsB,CAAC,EAAE,GAAG,CAAC;QAC7B,oBAAoB,CAAC,EAAE,GAAG,CAAC;QAC3B,qBAAqB,CAAC,EAAE,GAAG,CAAC;QAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;QACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QACpC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,kBAAkB,CAAC,EAAE,GAAG,CAAC;QACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,yBAAyB,CAAC,EAAE,GAAG,CAAC;QAChC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED,UAAU,SAAS,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,EAAE,CAAC;CACd;AAMD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAG,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,KAAG,CAAC,EAMlE,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAC9D,OAAO,EAAE,OAAO,CAAC;IAEzB,MAAM,EAAE,GAAG,CAAQ;IACnB,OAAO,CAAC,gBAAgB,CAAC,CAAQ;IACjC,UAAU,SAAM;IAChB,OAAO,CAAC,aAAa,CAAC,CAAQ;IAEvC,OAAO,CAAC,mBAAmB,CAImC;IAE9D,IAAI,cAAc,QAQjB;IAED,IAAI,gBAAgB,WAQnB;IAED,IAAI,aAAa,WAKhB;IAED,IAAI,sBAAsB,wBAEzB;IAiBD,IACI,IAAI,QAUP;IAED,IACI,OAAO,IAAI,GAAG,EAAE,CAQnB;IAED,IACI,OAAO,IAAI,GAAG,EAAE,CA4BnB;IAGD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkCtE,WAAW,CAAC,MAAM,EAAE,MAAM;IAK1B,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IASxB,cAAc;IAwBd,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;CA4B3C"}
|
|
@@ -3,6 +3,7 @@ import { on } from '@ember/modifier';
|
|
|
3
3
|
import { get } from '@ember/object';
|
|
4
4
|
import { inject } from '@ember/service';
|
|
5
5
|
import { htmlSafe, isHTMLSafe } from '@ember/template';
|
|
6
|
+
import style from 'ember-style-modifier/modifiers/style';
|
|
6
7
|
import EuiBadge from '../eui-badge.js';
|
|
7
8
|
import EuiTextComponent from '../eui-text.js';
|
|
8
9
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
@@ -15,25 +16,54 @@ function unwrap(input) {
|
|
|
15
16
|
}
|
|
16
17
|
return input;
|
|
17
18
|
}
|
|
18
|
-
class
|
|
19
|
+
class EuiComboBoxCreateOptionComponent extends Component {
|
|
19
20
|
static {
|
|
20
21
|
g(this.prototype, "euiI18n", [inject]);
|
|
21
22
|
}
|
|
22
23
|
#euiI18n = (i(this, "euiI18n"), void 0);
|
|
23
24
|
_regex = /\{\s*(.*?)\s*\}/g;
|
|
25
|
+
get createLabel() {
|
|
26
|
+
return this.euiI18n.lookupToken('euiComboBox.createLabel', 'Create');
|
|
27
|
+
}
|
|
24
28
|
get formattedString() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
if (this.args.customOptionText && typeof this.args.customOptionText === 'string') {
|
|
30
|
+
let str = unwrap(this.args.customOptionText);
|
|
31
|
+
let context = {
|
|
32
|
+
searchText: this.args.select.searchText
|
|
33
|
+
};
|
|
34
|
+
return htmlSafe(str.replace(this._regex, (_s, p1, p2) => {
|
|
35
|
+
return get(context, p1 || p2);
|
|
36
|
+
}));
|
|
37
|
+
} else {
|
|
38
|
+
let str = unwrap(this.euiI18n.lookupToken('euiComboBox.customOptionText', 'Add <strong>{searchText}</strong> as custom option', {
|
|
39
|
+
searchText: this.args.select.searchText
|
|
40
|
+
}));
|
|
41
|
+
return htmlSafe(str);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
get extraStyling() {
|
|
45
|
+
if (this.args.alwaysShow) {
|
|
46
|
+
return {
|
|
47
|
+
container: {
|
|
48
|
+
padding: '4px 12px',
|
|
49
|
+
cursor: 'pointer'
|
|
50
|
+
},
|
|
51
|
+
content: {
|
|
52
|
+
padding: '0px'
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
container: {
|
|
58
|
+
cursor: 'pointer'
|
|
59
|
+
}
|
|
28
60
|
};
|
|
29
|
-
return htmlSafe(str.replace(this._regex, (_s, p1, p2) => {
|
|
30
|
-
return get(context, p1 || p2);
|
|
31
|
-
}));
|
|
32
61
|
}
|
|
33
62
|
static {
|
|
34
|
-
setComponentTemplate(precompileTemplate("\n <div
|
|
63
|
+
setComponentTemplate(precompileTemplate("\n <div class=\"euiComboBoxOptionsList__rowWrap\" {{style this.extraStyling.container}} {{!--template-lint-disable no-invalid-interactive--}} {{on \"click\" @onCreateOption}}>\n <EuiText class=\"euiComboBoxOptionsList__empty\" @size=\"xs\" {{style this.extraStyling.content}}>\n <div class=\"euiComboBoxOption__contentWrapper\">\n <p class=\"euiComboBoxOption__emptyStateText\">\n {{this.formattedString}}\n </p>\n\n <EuiBadge class=\"euiComboBoxOption__enterBadge\" @color=\"hollow\" @iconType={{unless @alwaysShow \"returnKey\"}}>\n {{#if @alwaysShow}}\n {{this.createLabel}}\n {{/if}}\n </EuiBadge>\n </div>\n </EuiText>\n </div>\n ", {
|
|
35
64
|
strictMode: true,
|
|
36
65
|
scope: () => ({
|
|
66
|
+
style,
|
|
37
67
|
on,
|
|
38
68
|
EuiText: EuiTextComponent,
|
|
39
69
|
EuiBadge
|
|
@@ -42,5 +72,5 @@ class EuiAccordionAccordionComponent extends Component {
|
|
|
42
72
|
}
|
|
43
73
|
}
|
|
44
74
|
|
|
45
|
-
export {
|
|
75
|
+
export { EuiComboBoxCreateOptionComponent as default };
|
|
46
76
|
//# sourceMappingURL=create-option.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-option.js","sources":["../../../src/components/eui-combo-box/create-option.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe, isHTMLSafe } from '@ember/template';\n\nimport EuiBadge from '../eui-badge.gts';\nimport EuiText from '../eui-text.gts';\n\nimport type EuiI18n from '../../services/eui-i18n';\n\nfunction unwrap(input: string) {\n if (isHTMLSafe(input)) {\n return input.toString();\n }\n\n return input;\n}\n\nexport interface EuiComboBoxCreateOptionSignature {\n Args: {\n customOptionText?: string;\n select: { searchText: string };\n onCreateOption: () => void;\n };\n}\n\nexport default class
|
|
1
|
+
{"version":3,"file":"create-option.js","sources":["../../../src/components/eui-combo-box/create-option.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { on } from '@ember/modifier';\nimport { get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe, isHTMLSafe } from '@ember/template';\n\nimport style from 'ember-style-modifier/modifiers/style';\n\nimport EuiBadge from '../eui-badge.gts';\nimport EuiText from '../eui-text.gts';\n\nimport type EuiI18n from '../../services/eui-i18n';\n\nfunction unwrap(input: string) {\n if (isHTMLSafe(input)) {\n return input.toString();\n }\n\n return input;\n}\n\nexport interface EuiComboBoxCreateOptionSignature {\n Args: {\n customOptionText?: string;\n select: { searchText: string };\n onCreateOption: () => void;\n alwaysShow?: boolean;\n };\n}\n\nexport default class EuiComboBoxCreateOptionComponent extends Component<EuiComboBoxCreateOptionSignature> {\n @service declare euiI18n: EuiI18n;\n\n _regex = /\\{\\s*(.*?)\\s*\\}/g;\n\n get createLabel() {\n return this.euiI18n.lookupToken('euiComboBox.createLabel', 'Create');\n }\n\n get formattedString(): ReturnType<typeof htmlSafe> {\n if (\n this.args.customOptionText &&\n typeof this.args.customOptionText === 'string'\n ) {\n let str = unwrap(this.args.customOptionText);\n\n let context = {\n searchText: this.args.select.searchText\n };\n\n return htmlSafe(\n str.replace(this._regex, (_s, p1, p2) => {\n return get(context, p1 || p2);\n })\n );\n } else {\n let str = unwrap(\n this.euiI18n.lookupToken(\n 'euiComboBox.customOptionText',\n 'Add <strong>{searchText}</strong> as custom option',\n {\n searchText: this.args.select.searchText\n }\n )\n );\n\n return htmlSafe(str);\n }\n }\n\n get extraStyling() {\n if (this.args.alwaysShow) {\n return {\n container: {\n padding: '4px 12px',\n cursor: 'pointer'\n },\n content: {\n padding: '0px'\n }\n };\n }\n\n return {\n container: {\n cursor: 'pointer'\n }\n };\n }\n\n <template>\n <div\n class=\"euiComboBoxOptionsList__rowWrap\"\n {{style this.extraStyling.container}}\n {{!template-lint-disable no-invalid-interactive}}\n {{on \"click\" @onCreateOption}}\n >\n <EuiText\n class=\"euiComboBoxOptionsList__empty\"\n @size=\"xs\"\n {{style this.extraStyling.content}}\n >\n <div class=\"euiComboBoxOption__contentWrapper\">\n <p class=\"euiComboBoxOption__emptyStateText\">\n {{this.formattedString}}\n </p>\n\n <EuiBadge\n class=\"euiComboBoxOption__enterBadge\"\n @color=\"hollow\"\n @iconType={{unless @alwaysShow \"returnKey\"}}\n >\n {{#if @alwaysShow}}\n {{this.createLabel}}\n {{/if}}\n </EuiBadge>\n </div>\n </EuiText>\n </div>\n </template>\n}\n"],"names":["unwrap","input","isHTMLSafe","toString","EuiComboBoxCreateOptionComponent","Component","g","prototype","service","i","void 0","_regex","createLabel","euiI18n","lookupToken","formattedString","args","customOptionText","str","context","searchText","select","htmlSafe","replace","_s","p1","p2","get","extraStyling","alwaysShow","container","padding","cursor","content","setComponentTemplate","precompileTemplate","strictMode","scope","style","on","EuiText","EuiBadge"],"mappings":";;;;;;;;;;;;AAaA,SAASA,MAAAA,CAAOC,KAAa,EAAA;AAC3B,EAAA,IAAIC,WAAWD,KAAQ,CAAA,EAAA;AACrB,IAAA,OAAOA,MAAME,QAAQ,EAAA;AACvB;AAEA,EAAA,OAAOF,KAAA;AACT;AAWe,MAAMG,yCAAyCC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACrEC,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAEDC,EAAAA,MAAA,GAAS,kBAAmB;EAE5B,IAAIC,WAAcA,GAAA;IAChB,OAAO,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,yBAA2B,EAAA,QAAA,CAAA;AAC7D;EAEA,IAAIC,eAAAA,GAA+C;AACjD,IAAA,IACE,IAAI,CAACC,IAAI,CAACC,gBAAgB,IAC1B,OAAO,IAAI,CAACD,IAAI,CAACC,gBAAgB,KAAK,QACtC,EAAA;MACA,IAAIC,MAAMlB,MAAO,CAAA,IAAI,CAACgB,IAAI,CAACC,gBAAgB,CAAA;AAE3C,MAAA,IAAIE,OAAU,GAAA;AACZC,QAAAA,UAAA,EAAY,IAAI,CAACJ,IAAI,CAACK,MAAM,CAACD;OAC/B;AAEA,MAAA,OAAOE,QAAA,CACLJ,GAAI,CAAAK,OAAO,CAAC,IAAI,CAACZ,MAAM,EAAE,CAACa,EAAA,EAAIC,EAAI,EAAAC,EAAA,KAAA;AAChC,QAAA,OAAOC,GAAA,CAAIR,SAASM,EAAM,IAAAC,EAAA,CAAA;AAC5B,OAAA,CAAA,CAAA;AAEJ,KAAO,MAAA;AACL,MAAA,IAAIR,GAAA,GAAMlB,OACR,IAAI,CAACa,OAAO,CAACC,WAAW,CACtB,8BAAA,EACA,8DACA,EAAA;AACEM,QAAAA,UAAA,EAAY,IAAI,CAACJ,IAAI,CAACK,MAAM,CAACD;AAC/B,OAAA,CAAA,CAAA;MAIJ,OAAOE,QAAS,CAAAJ,GAAA,CAAA;AAClB;AACF;EAEA,IAAIU,YAAeA,GAAA;AACjB,IAAA,IAAI,IAAI,CAACZ,IAAI,CAACa,UAAU,EAAE;MACxB,OAAO;AACLC,QAAAA,SAAW,EAAA;AACTC,UAAAA,OAAS,EAAA,UAAA;AACTC,UAAAA,MAAQ,EAAA;SACV;AACAC,QAAAA,OAAS,EAAA;AACPF,UAAAA,OAAS,EAAA;AACX;OACF;AACF;IAEA,OAAO;AACLD,MAAAA,SAAW,EAAA;AACTE,QAAAA,MAAQ,EAAA;AACV;KACF;AACF;AAEA,EAAA;IAAAE,oBAAA,CAAAC,kBAAA,CA6BA,8uBAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,KAAA;QAAAC,EAAA;iBAAAC,gBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -5,14 +5,15 @@ import { htmlSafe } from '@ember/template';
|
|
|
5
5
|
import { EnsureSafeComponentHelper } from '@embroider/util';
|
|
6
6
|
import VerticalCollection from '@html-next/vertical-collection/components/vertical-collection/component';
|
|
7
7
|
import EmberPowerSelectOptions from 'ember-power-select/components/power-select/options';
|
|
8
|
+
import emberPowerSelectIsEqual from 'ember-power-select/helpers/ember-power-select-is-equal';
|
|
8
9
|
import emberPowerSelectIsGroupHelper, { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';
|
|
9
10
|
import { not, and, eq } from 'ember-truth-helpers';
|
|
11
|
+
import classNames from '../../helpers/class-names.js';
|
|
10
12
|
import EuiBadge from '../eui-badge.js';
|
|
11
13
|
import EuiFlexGroup from '../eui-flex-group.js';
|
|
12
14
|
import EuiFlexItem from '../eui-flex-item.js';
|
|
13
15
|
import EuiLoadingSpinner from '../eui-loading-spinner.js';
|
|
14
16
|
import EuiTextComponent from '../eui-text.js';
|
|
15
|
-
import emberPowerSelectIsEqual from 'ember-power-select/helpers/ember-power-select-is-equal';
|
|
16
17
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
17
18
|
import { setComponentTemplate } from '@ember/component';
|
|
18
19
|
import { g, i } from 'decorator-transforms/runtime';
|
|
@@ -56,7 +57,7 @@ class EuiComboBoxOptionsComponent extends EmberPowerSelectOptions {
|
|
|
56
57
|
return htmlSafe(`height:${this.rowHeight}px;`);
|
|
57
58
|
}
|
|
58
59
|
static {
|
|
59
|
-
setComponentTemplate(precompileTemplate("\n {{!-- @glint-nocheck: not typesafe yet --}}\n {{#let (component (EnsureSafeComponentHelper @groupComponent)) as |Group|}}\n {{#if @select.loading}}\n <EuiText @size=\"xs\" class=\"euiComboBoxOptionsList__empty\">\n <EuiFlexGroup @gutterSize=\"s\" @justifyContent=\"center\" @responsive={{false}}>\n <EuiFlexItem @grow={{false}}>\n <EuiLoadingSpinner @size=\"m\" />\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n {{@loadingMessage}}\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiText>\n {{else}}\n {{!-- template-lint-disable --}}\n <VerticalCollection @items={{this.flattedOptions}} @tagName=\"div\" @estimateHeight={{this.rowHeight}} @staticHeight={{true}} @bufferSize={{3}} style=\"
|
|
60
|
+
setComponentTemplate(precompileTemplate("\n {{!-- @glint-nocheck: not typesafe yet --}}\n {{#let (component (EnsureSafeComponentHelper @groupComponent)) as |Group|}}\n {{#if @select.loading}}\n <EuiText @size=\"xs\" class=\"euiComboBoxOptionsList__empty\">\n <EuiFlexGroup @gutterSize=\"s\" @justifyContent=\"center\" @responsive={{false}}>\n <EuiFlexItem @grow={{false}}>\n <EuiLoadingSpinner @size=\"m\" />\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n {{@loadingMessage}}\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiText>\n {{else}}\n {{!-- template-lint-disable --}}\n <VerticalCollection @items={{this.flattedOptions}} @tagName=\"div\" @estimateHeight={{this.rowHeight}} @staticHeight={{true}} @bufferSize={{3}} style=\"overflow-y: auto;\" role=\"listbox\" aria-controls=\"ember-power-select-trigger-{{@select.uniqueId}}\" class={{classNames \"euiComboBoxOptionsList__rowWrap\" @class}} {{didInsert this.addHandlers}} {{willDestroy this.removeHandlers}} ...attributes as |opt index|>\n {{!-- template-lint-enable --}}\n {{#if (emberPowerSelectIsGroupHelper opt)}}\n <Group @group={{opt}} @select={{@select}} @extra={{@extra}} style={{this.rowHeightString}} data-option-index=\"{{index}}\" />\n {{else}}\n <button type=\"button\" style={{this.rowHeightString}} class=\"euiFilterSelectItem\n {{if (eq opt @select.highlighted) \" euiFilterSelectItem-isFocused\"}}\" aria-selected=\"{{emberPowerSelectIsEqual opt @select.selected}}\" aria-disabled={{if opt.disabled \"true\"}} aria-current=\"{{eq opt @select.highlighted}}\" data-option-index=\"{{index}}\" role=\"option\" tabindex={{if opt.disabled \"-1\" \"0\"}}>\n <span class=\"euiComboBoxOption__contentWrapper\">\n <span class=\"euiComboBoxOption__content\">\n {{yield opt index @select}}\n </span>\n {{#if (and (eq opt @select.highlighted) (not opt.disabled))}}\n {{!--template-lint-disable require-presentational-children--}}\n <EuiBadge class=\"euiComboBoxOption__enterBadge\" @color=\"hollow\" @iconType=\"returnKey\" aria-hidden=\"true\" />\n {{/if}}\n </span>\n </button>\n {{/if}}\n </VerticalCollection>\n {{/if}}\n {{/let}}\n ", {
|
|
60
61
|
strictMode: true,
|
|
61
62
|
scope: () => ({
|
|
62
63
|
EnsureSafeComponentHelper,
|
|
@@ -65,6 +66,7 @@ class EuiComboBoxOptionsComponent extends EmberPowerSelectOptions {
|
|
|
65
66
|
EuiFlexItem,
|
|
66
67
|
EuiLoadingSpinner,
|
|
67
68
|
VerticalCollection,
|
|
69
|
+
classNames,
|
|
68
70
|
didInsert,
|
|
69
71
|
willDestroy,
|
|
70
72
|
emberPowerSelectIsGroupHelper,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sources":["../../../src/components/eui-combo-box/options.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport willDestroy from '@ember/render-modifiers/modifiers/will-destroy';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\n//@ts-expect-error\nimport VerticalCollection from '@html-next/vertical-collection/components/vertical-collection/component';\nimport EmberPowerSelectOptions from 'ember-power-select/components/power-select/options';\nimport emberPowerSelectIsGroupHelper, {\n emberPowerSelectIsGroup\n} from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport EuiBadge from '../eui-badge.gts';\nimport EuiFlexGroup from '../eui-flex-group.gts';\nimport EuiFlexItem from '../eui-flex-item.gts';\nimport EuiLoadingSpinner from '../eui-loading-spinner.gts';\nimport EuiText from '../eui-text.gts';\n\nimport type EuiConfigService from '../../services/eui-config';\
|
|
1
|
+
{"version":3,"file":"options.js","sources":["../../../src/components/eui-combo-box/options.gts"],"sourcesContent":["import didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport willDestroy from '@ember/render-modifiers/modifiers/will-destroy';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { EnsureSafeComponentHelper } from '@embroider/util';\n\n//@ts-expect-error\nimport VerticalCollection from '@html-next/vertical-collection/components/vertical-collection/component';\nimport EmberPowerSelectOptions from 'ember-power-select/components/power-select/options';\nimport emberPowerSelectIsEqual from 'ember-power-select/helpers/ember-power-select-is-equal';\nimport emberPowerSelectIsGroupHelper, {\n emberPowerSelectIsGroup\n} from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, eq, not } from 'ember-truth-helpers';\n\nimport classNames from '../../helpers/class-names.ts';\nimport EuiBadge from '../eui-badge.gts';\nimport EuiFlexGroup from '../eui-flex-group.gts';\nimport EuiFlexItem from '../eui-flex-item.gts';\nimport EuiLoadingSpinner from '../eui-loading-spinner.gts';\nimport EuiText from '../eui-text.gts';\n\nimport type EuiConfigService from '../../services/eui-config';\n\nexport default class EuiComboBoxOptionsComponent extends EmberPowerSelectOptions {\n @service declare euiConfig: EuiConfigService;\n _optionsCache: any[] = [];\n\n get flattedOptions() {\n if (this._optionsCache !== this.args.options) {\n this._optionsCache = this.args.options;\n\n return this.args.options?.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n return this._optionsCache;\n }\n\n _optionFromIndex(index: string) {\n let parts = index.split('.');\n let option = this.flattedOptions.at?.(parseInt(parts[0]!, 10));\n\n for (let i = 1; i < parts.length; i++) {\n option = option.options[parseInt(parts[i]!, 10)];\n }\n\n return option;\n }\n\n get configRowHeight() {\n return (\n (this.euiConfig.getConfig('euiComboBoxOptionsHeight') as number) || 29\n );\n }\n\n get rowHeight() {\n //@ts-expect-error\n return this.args.rowHeight ?? this.configRowHeight;\n }\n\n get rowHeightString() {\n return htmlSafe(`height:${this.rowHeight}px;`);\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n {{#let (component (EnsureSafeComponentHelper @groupComponent)) as |Group|}}\n {{#if @select.loading}}\n <EuiText @size=\"xs\" class=\"euiComboBoxOptionsList__empty\">\n <EuiFlexGroup\n @gutterSize=\"s\"\n @justifyContent=\"center\"\n @responsive={{false}}\n >\n <EuiFlexItem @grow={{false}}>\n <EuiLoadingSpinner @size=\"m\" />\n </EuiFlexItem>\n <EuiFlexItem @grow={{false}}>\n {{@loadingMessage}}\n </EuiFlexItem>\n </EuiFlexGroup>\n </EuiText>\n {{else}}\n {{! template-lint-disable }}\n <VerticalCollection\n @items={{this.flattedOptions}}\n @tagName=\"div\"\n @estimateHeight={{this.rowHeight}}\n @staticHeight={{true}}\n @bufferSize={{3}}\n style=\"overflow-y: auto;\"\n role=\"listbox\"\n aria-controls=\"ember-power-select-trigger-{{@select.uniqueId}}\"\n class={{classNames \"euiComboBoxOptionsList__rowWrap\" @class}}\n {{didInsert this.addHandlers}}\n {{willDestroy this.removeHandlers}}\n ...attributes\n as |opt index|\n >\n {{! template-lint-enable }}\n {{#if (emberPowerSelectIsGroupHelper opt)}}\n <Group\n @group={{opt}}\n @select={{@select}}\n @extra={{@extra}}\n style={{this.rowHeightString}}\n data-option-index=\"{{index}}\"\n />\n {{else}}\n <button\n type=\"button\"\n style={{this.rowHeightString}}\n class=\"euiFilterSelectItem\n {{if\n (eq opt @select.highlighted)\n ' euiFilterSelectItem-isFocused'\n }}\"\n aria-selected=\"{{emberPowerSelectIsEqual opt @select.selected}}\"\n aria-disabled={{if opt.disabled \"true\"}}\n aria-current=\"{{eq opt @select.highlighted}}\"\n data-option-index=\"{{index}}\"\n role=\"option\"\n tabindex={{if opt.disabled \"-1\" \"0\"}}\n >\n <span class=\"euiComboBoxOption__contentWrapper\">\n <span class=\"euiComboBoxOption__content\">\n {{yield opt index @select}}\n </span>\n {{#if (and (eq opt @select.highlighted) (not opt.disabled))}}\n {{!template-lint-disable require-presentational-children}}\n <EuiBadge\n class=\"euiComboBoxOption__enterBadge\"\n @color=\"hollow\"\n @iconType=\"returnKey\"\n aria-hidden=\"true\"\n />\n {{/if}}\n </span>\n </button>\n {{/if}}\n </VerticalCollection>\n {{/if}}\n {{/let}}\n </template>\n}\n"],"names":["EuiComboBoxOptionsComponent","EmberPowerSelectOptions","g","prototype","service","i","void 0","_optionsCache","flattedOptions","args","options","reduce","acc","curr","emberPowerSelectIsGroup","push","_optionFromIndex","index","parts","split","option","at","parseInt","length","configRowHeight","euiConfig","getConfig","rowHeight","rowHeightString","htmlSafe","setComponentTemplate","precompileTemplate","strictMode","scope","EnsureSafeComponentHelper","EuiText","EuiFlexGroup","EuiFlexItem","EuiLoadingSpinner","VerticalCollection","classNames","didInsert","willDestroy","emberPowerSelectIsGroupHelper","eq","emberPowerSelectIsEqual","and","not","EuiBadge"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwBe,MAAMA,2BAAoC,SAAAC,uBAAA,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACtDC,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,MAAA;AACDC,EAAAA,aAAe,GAAQ,EAAE;EAEzB,IAAIC,cAAiBA,GAAA;IACnB,IAAI,IAAI,CAACD,aAAa,KAAK,IAAI,CAACE,IAAI,CAACC,OAAO,EAAE;AAC5C,MAAA,IAAI,CAACH,aAAa,GAAG,IAAI,CAACE,IAAI,CAACC,OAAO;AAEtC,MAAA,OAAO,IAAI,CAACD,IAAI,CAACC,OAAO,EAAEC,MAAA,CAAO,CAACC,GAAK,EAAAC,IAAA,KAAA;AACrC,QAAA,IAAIC,uBAAwB,CAAA,CAACD,IAAA,CAAK,CAAG,EAAA;UACnCD,GAAA,CAAIG,IAAI,CAACF,IAAS,EAAA,GAAAA,IAAA,CAAKH,OAAO,CAAA;AAChC,SAAO,MAAA;AACLE,UAAAA,GAAA,CAAIG,IAAI,CAACF,IAAA,CAAA;AACX;AAEA,QAAA,OAAOD,GAAA;OACT,EAAG,EAAE,CAAA;AACP;IAEA,OAAO,IAAI,CAACL,aAAa;AAC3B;EAEAS,gBAAiBA,CAAAC,KAAa,EAAE;AAC9B,IAAA,IAAIC,KAAA,GAAQD,KAAM,CAAAE,KAAK,CAAC,GAAA,CAAA;AACxB,IAAA,IAAIC,MAAA,GAAS,IAAI,CAACZ,cAAc,CAACa,EAAE,GAAGC,QAAS,CAAAJ,KAAK,CAAC,CAAA,CAAE,EAAG,EAAA,CAAA,CAAA;AAE1D,IAAA,KAAK,IAAIb,CAAI,GAAA,CAAA,EAAGA,IAAIa,KAAM,CAAAK,MAAM,EAAElB,CAAK,EAAA,EAAA;AACrCe,MAAAA,MAAS,GAAAA,MAAA,CAAOV,OAAO,CAACY,QAAA,CAASJ,KAAK,CAACb,CAAA,CAAE,EAAG,EAAI,CAAA,CAAA;AAClD;AAEA,IAAA,OAAOe,MAAA;AACT;EAEA,IAAII,eAAkBA,GAAA;IACpB,OACG,IAAI,CAACC,SAAS,CAACC,SAAS,CAAC,0BAAA,CAAA,IAA0C,EACtE;AACF;EAEA,IAAIC,SAAYA,GAAA;AACd;IACA,OAAO,IAAI,CAAClB,IAAI,CAACkB,SAAS,IAAI,IAAI,CAACH,eAAe;AACpD;EAEA,IAAII,eAAkBA,GAAA;AACpB,IAAA,OAAOC,QAAA,CAAS,CAAA,OAAA,EAAU,IAAI,CAACF,SAAS,KAAK,CAAA;AAC/C;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CA+EA,y3EAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,yBAAA;iBAAAC,gBAAA;QAAAC,YAAA;QAAAC,WAAA;QAAAC,iBAAA;QAAAC,kBAAA;QAAAC,UAAA;QAAAC,SAAA;QAAAC,WAAA;QAAAC,6BAAA;QAAAC,EAAA;QAAAC,uBAAA;QAAAC,GAAA;QAAAC,GAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -12,7 +12,7 @@ import { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-
|
|
|
12
12
|
import { not, and } from 'ember-truth-helpers';
|
|
13
13
|
import argOrDefault from '../helpers/arg-or-default.js';
|
|
14
14
|
import classNames from '../helpers/class-names.js';
|
|
15
|
-
import
|
|
15
|
+
import EuiComboBoxCreateOptionComponent from './eui-combo-box/create-option.js';
|
|
16
16
|
import EuiComboBoxGroup from './eui-combo-box/group.js';
|
|
17
17
|
import NoMatchesMessageComponent from './eui-combo-box/no-matches-message.js';
|
|
18
18
|
import EuiComboBoxOptionsComponent from './eui-combo-box/options.js';
|
|
@@ -71,8 +71,11 @@ class EuiComboBoxComponent extends Component {
|
|
|
71
71
|
get searchMessage() {
|
|
72
72
|
return this.args.searchMessage || this.euiI18n.lookupToken('euiComboBox.searchMessage', 'Type to search');
|
|
73
73
|
}
|
|
74
|
+
get alwaysShowCreateOption() {
|
|
75
|
+
return this.args.onCreateOption && this.args.alwaysShowCreateOption;
|
|
76
|
+
}
|
|
74
77
|
static {
|
|
75
|
-
setComponentTemplate(precompileTemplate("\n {{!-- @glint-nocheck: not typesafe yet --}}\n <PowerSelectMultiple ...attributes @onChange={{this.onChange}} @onFocus={{@onFocus}} @onBlur={{@onBlur}} @onOpen={{@onOpen}} @onClose={{@onClose}} @placeholderComponent={{@placeholderComponent}} @searchMessage={{this.searchMessage}} @searchMessageComponent={{if @searchMessageComponent @searchMessageComponent EuiComboBoxSearchMessage}} @noMatchesMessage={{this.noMatchesMessage}} @matchTriggerWidth={{@matchTriggerWidth}} @options={{this.options}} @selected={{@selectedOptions}} @closeOnSelect={{@closeOnSelect}} @defaultHighlighted={{@defaultHighlighted}} @searchField={{@searchField}} @searchEnabled={{argOrDefault @searchEnabled true}} @tabindex={{@tabindex}} @initiallyOpened={{and (not @isDisabled) @autoFocus}} @triggerComponent={{component EuiComboBoxTrigger fullWidth=@fullWidth compressed=@compressed isInvalid=@isInvalid singleSelection=@singleSelection onClose=@removeTag onCreateOption=(if @onCreateOption this.onCreateOption) isLoading=@isLoading autoFocus=(and (not @isDisabled) @autoFocus) icon=@triggerIcon}} @matcher={{@matcher}} @initiallyOpen={{@initiallyOpen}} @typeAheadOptionMatcher={{@typeAheadOptionMatcher}} @buildSelection={{this.buildSelection}} @search={{@search}} @onInput={{@onInput}} @onKeydown={{@onKeydown}} @scrollTo={{this.scrollTo}} @registerAPI={{queue this.registerAPI (optional @registerApi)}} @horizontalPosition={{@horizontalPosition}} @destination={{@destination}} @preventScroll={{@preventScroll}} @renderInPlace={{@renderInPlace}} @verticalPosition={{@verticalPosition}} @disabled={{@isDisabled}} @calculatePosition={{@calculatePosition}} @eventType={{@eventType}} @ariaLabel={{@ariaLabel}} @ariaLabelledBy={{@ariaLabelledBy}} @required={{@required}} @triggerRole={{@triggerRole}} @title={{@title}} @triggerId={{@triggerId}} @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}} @loadingMessage={{this.loadingMessage}} @selectedItemComponent={{@selectedItemComponent}} @beforeOptionsComponent={{@beforeOptionsComponent}} @afterOptionsComponent={{@afterOptionsComponent}} @placeholder={{@placeholder}} @searchPlaceholder={{@searchPlaceholder}} @optionsComponent={{component EuiComboBoxOptions rowHeight=@rowHeight class=@optionsClass}} @extra={{@extra}} @groupComponent={{component EuiComboBoxGroup}} @triggerClass={{classNames \"euiComboBox\" (if @compressed \"euiComboBox--compressed\") (if @fullWidth \"euiComboBox--fullWidth\") (if @isDisabled \"euiComboBox-isDisabled\") (if @isInvalid \"euiComboBox-isInvalid\") (if this.select.isOpen \"euiComboBox-isOpen\")}} @noMatchesMessageComponent={{if @onCreateOption (component EuiComboBoxCreateOption customOptionText=@customOptionText onCreateOption=this.onCreateOption select=this.select) (component EuiComboBoxNoMatchesMessage)}} @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen
|
|
78
|
+
setComponentTemplate(precompileTemplate("\n {{!-- @glint-nocheck: not typesafe yet --}}\n\n <PowerSelectMultiple ...attributes @onChange={{this.onChange}} @onFocus={{@onFocus}} @onBlur={{@onBlur}} @onOpen={{@onOpen}} @onClose={{@onClose}} @placeholderComponent={{@placeholderComponent}} @searchMessage={{this.searchMessage}} @searchMessageComponent={{if @searchMessageComponent @searchMessageComponent EuiComboBoxSearchMessage}} @noMatchesMessage={{this.noMatchesMessage}} @matchTriggerWidth={{@matchTriggerWidth}} @options={{this.options}} @selected={{@selectedOptions}} @closeOnSelect={{@closeOnSelect}} @defaultHighlighted={{@defaultHighlighted}} @searchField={{@searchField}} @searchEnabled={{argOrDefault @searchEnabled true}} @tabindex={{@tabindex}} @initiallyOpened={{and (not @isDisabled) @autoFocus}} @triggerComponent={{component EuiComboBoxTrigger fullWidth=@fullWidth compressed=@compressed isInvalid=@isInvalid singleSelection=@singleSelection onClose=@removeTag onCreateOption=(if @onCreateOption this.onCreateOption) isLoading=@isLoading autoFocus=(and (not @isDisabled) @autoFocus) icon=@triggerIcon}} @matcher={{@matcher}} @initiallyOpen={{@initiallyOpen}} @typeAheadOptionMatcher={{@typeAheadOptionMatcher}} @buildSelection={{this.buildSelection}} @search={{@search}} @onInput={{@onInput}} @onKeydown={{@onKeydown}} @scrollTo={{this.scrollTo}} @registerAPI={{queue this.registerAPI (optional @registerApi)}} @horizontalPosition={{@horizontalPosition}} @destination={{@destination}} @preventScroll={{@preventScroll}} @renderInPlace={{@renderInPlace}} @verticalPosition={{@verticalPosition}} @disabled={{@isDisabled}} @calculatePosition={{@calculatePosition}} @eventType={{@eventType}} @ariaLabel={{@ariaLabel}} @ariaLabelledBy={{@ariaLabelledBy}} @required={{@required}} @triggerRole={{@triggerRole}} @title={{@title}} @triggerId={{@triggerId}} @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}} @loadingMessage={{this.loadingMessage}} @selectedItemComponent={{@selectedItemComponent}} @beforeOptionsComponent={{@beforeOptionsComponent}} @afterOptionsComponent={{if @afterOptionsComponent @afterOptionsComponent (if (and @onCreateOption (not this.select.loading) this.select.searchText this.alwaysShowCreateOption) (component EuiComboBoxCreateOption customOptionText=@customOptionText onCreateOption=this.onCreateOption select=this.select alwaysShow=true))}} @placeholder={{@placeholder}} @searchPlaceholder={{@searchPlaceholder}} @optionsComponent={{component EuiComboBoxOptions rowHeight=@rowHeight class=@optionsClass}} @extra={{@extra}} @groupComponent={{component EuiComboBoxGroup}} @triggerClass={{classNames \"euiComboBox\" (if @compressed \"euiComboBox--compressed\") (if @fullWidth \"euiComboBox--fullWidth\") (if @isDisabled \"euiComboBox-isDisabled\") (if @isInvalid \"euiComboBox-isInvalid\") (if this.select.isOpen \"euiComboBox-isOpen\")}} @noMatchesMessageComponent={{if (and @onCreateOption (not this.alwaysShowCreateOption)) (component EuiComboBoxCreateOption customOptionText=@customOptionText onCreateOption=this.onCreateOption select=this.select alwaysShow=false) (component EuiComboBoxNoMatchesMessage)}} @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen {{@dropdownClass}}\" as |option i|>\n {{yield option i}}\n </PowerSelectMultiple>\n ", {
|
|
76
79
|
strictMode: true,
|
|
77
80
|
scope: () => ({
|
|
78
81
|
PowerSelectMultiple,
|
|
@@ -83,10 +86,10 @@ class EuiComboBoxComponent extends Component {
|
|
|
83
86
|
EuiComboBoxTrigger: EuiComboBoxTriggerComponent,
|
|
84
87
|
queue,
|
|
85
88
|
optional,
|
|
89
|
+
EuiComboBoxCreateOption: EuiComboBoxCreateOptionComponent,
|
|
86
90
|
EuiComboBoxOptions: EuiComboBoxOptionsComponent,
|
|
87
91
|
EuiComboBoxGroup,
|
|
88
92
|
classNames,
|
|
89
|
-
EuiComboBoxCreateOption: EuiAccordionAccordionComponent,
|
|
90
93
|
EuiComboBoxNoMatchesMessage: NoMatchesMessageComponent
|
|
91
94
|
})
|
|
92
95
|
}), this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-combo-box.js","sources":["../../src/components/eui-combo-box.gts"],"sourcesContent":["import 'ember-basic-dropdown/styles';\n\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEqual } from '@ember/utils';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';\nimport { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiComboBoxCreateOption from './eui-combo-box/create-option.gts';\nimport EuiComboBoxGroup from './eui-combo-box/group.gts';\nimport EuiComboBoxNoMatchesMessage from './eui-combo-box/no-matches-message.gts';\nimport EuiComboBoxOptions from './eui-combo-box/options.gts';\nimport EuiComboBoxSearchMessage from './eui-combo-box/search-message.gts';\nimport EuiComboBoxTrigger from './eui-combo-box/trigger.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\n\ninterface PromiseProxy<T> extends Promise<T> {\n content: any;\n}\n\ninterface Select {\n selected: any;\n actions: {\n search: (str: string) => void;\n };\n}\n\nexport interface EuiComboBoxSignature {\n Element: HTMLDivElement;\n Args: {\n singleSelection?:\n | boolean\n | {\n asPlainText?: boolean;\n };\n onCreateOption?: (search: string) => boolean | undefined;\n options: any[];\n search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;\n searchField?: string;\n isInvalid?: boolean;\n fullWidth?: boolean;\n searchMessage?: string;\n searchEnabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n readOnly?: boolean;\n searchMessageComponent?: any;\n compressed?: boolean;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n onClose?: (e: Event) => void;\n onOpen?: (e: Event) => void;\n renderInPlace?: boolean;\n customOptionText?: string;\n loadingMessage?: any;\n selectedItemComponent?: any;\n beforeOptionsComponent?: any;\n placeholderComponent?: any;\n afterOptionsComponent?: any;\n searchPlaceholder?: any;\n dropdownClass?: string;\n selectedOptions?: any[];\n onChange: (selected: any[]) => void;\n placeholder?: string;\n extra?: any;\n closeOnSelect?: boolean;\n autoFocus?: boolean;\n defaultHighlighted?: any;\n matchTriggerWidth?: boolean;\n tabindex?: number;\n initiallyOpen?: boolean;\n horizontalPosition?: string;\n verticalPosition?: string;\n destination?: string;\n preventScroll?: boolean;\n noMatchesMessage?: string;\n noMatchesMessageComponent?: any;\n optionsClass?: string;\n rowHeight?: number;\n };\n Blocks: {\n default: [any, number, Select];\n };\n}\n\ninterface Sliceable<T> {\n slice(): T[];\n}\n\nconst isSliceable = <T,>(coll: any): coll is Sliceable<T> => {\n return isArray(coll);\n};\n\nexport const toPlainArray = <T,>(collection: T[] | Sliceable<T>): T[] => {\n if (isSliceable<T>(collection)) {\n return collection.slice();\n } else {\n return collection;\n }\n};\n\nexport default class EuiComboBoxComponent extends Component<EuiComboBoxSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked select: any = null;\n @tracked private _resolvedOptions?: any[];\n @tracked searchText = '';\n @tracked private _searchResult?: any[];\n\n private _filterResultsCache: {\n results: any[];\n options: any[];\n searchText: string;\n } = { results: [], options: [], searchText: this.searchText };\n\n get loadingMessage() {\n return (\n this.args.loadingMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.loadingMessage',\n 'Loading options...'\n )\n );\n }\n\n get noMatchesMessage() {\n return (\n this.args.noMatchesMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.noMatchesMessage',\n 'No results found'\n )\n );\n }\n\n get searchMessage() {\n return (\n this.args.searchMessage ||\n this.euiI18n.lookupToken('euiComboBox.searchMessage', 'Type to search')\n );\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n <PowerSelectMultiple\n ...attributes\n @onChange={{this.onChange}}\n @onFocus={{@onFocus}}\n @onBlur={{@onBlur}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @placeholderComponent={{@placeholderComponent}}\n @searchMessage={{this.searchMessage}}\n @searchMessageComponent={{if\n @searchMessageComponent\n @searchMessageComponent\n EuiComboBoxSearchMessage\n }}\n @noMatchesMessage={{this.noMatchesMessage}}\n @matchTriggerWidth={{@matchTriggerWidth}}\n @options={{this.options}}\n @selected={{@selectedOptions}}\n @closeOnSelect={{@closeOnSelect}}\n @defaultHighlighted={{@defaultHighlighted}}\n @searchField={{@searchField}}\n @searchEnabled={{argOrDefault @searchEnabled true}}\n @tabindex={{@tabindex}}\n @initiallyOpened={{and (not @isDisabled) @autoFocus}}\n @triggerComponent={{component\n EuiComboBoxTrigger\n fullWidth=@fullWidth\n compressed=@compressed\n isInvalid=@isInvalid\n singleSelection=@singleSelection\n onClose=@removeTag\n onCreateOption=(if @onCreateOption this.onCreateOption)\n isLoading=@isLoading\n autoFocus=(and (not @isDisabled) @autoFocus)\n icon=@triggerIcon\n }}\n @matcher={{@matcher}}\n @initiallyOpen={{@initiallyOpen}}\n @typeAheadOptionMatcher={{@typeAheadOptionMatcher}}\n @buildSelection={{this.buildSelection}}\n @search={{@search}}\n @onInput={{@onInput}}\n @onKeydown={{@onKeydown}}\n @scrollTo={{this.scrollTo}}\n @registerAPI={{queue this.registerAPI (optional @registerApi)}}\n @horizontalPosition={{@horizontalPosition}}\n @destination={{@destination}}\n @preventScroll={{@preventScroll}}\n @renderInPlace={{@renderInPlace}}\n @verticalPosition={{@verticalPosition}}\n @disabled={{@isDisabled}}\n @calculatePosition={{@calculatePosition}}\n @eventType={{@eventType}}\n @ariaLabel={{@ariaLabel}}\n @ariaLabelledBy={{@ariaLabelledBy}}\n @required={{@required}}\n @triggerRole={{@triggerRole}}\n @title={{@title}}\n @triggerId={{@triggerId}}\n @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}}\n @loadingMessage={{this.loadingMessage}}\n @selectedItemComponent={{@selectedItemComponent}}\n @beforeOptionsComponent={{@beforeOptionsComponent}}\n @afterOptionsComponent={{@afterOptionsComponent}}\n @placeholder={{@placeholder}}\n @searchPlaceholder={{@searchPlaceholder}}\n @optionsComponent={{component\n EuiComboBoxOptions\n rowHeight=@rowHeight\n class=@optionsClass\n }}\n @extra={{@extra}}\n @groupComponent={{component EuiComboBoxGroup}}\n @triggerClass={{classNames\n \"euiComboBox\"\n (if @compressed \"euiComboBox--compressed\")\n (if @fullWidth \"euiComboBox--fullWidth\")\n (if @isDisabled \"euiComboBox-isDisabled\")\n (if @isInvalid \"euiComboBox-isInvalid\")\n (if this.select.isOpen \"euiComboBox-isOpen\")\n }}\n @noMatchesMessageComponent={{if\n @onCreateOption\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n )\n (component EuiComboBoxNoMatchesMessage)\n }}\n @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen euiComboBoxOptionsList__rowWrap {{@dropdownClass}}\"\n as |option i|\n >\n {{yield option i}}\n </PowerSelectMultiple>\n </template>\n\n //This is to allow scrolling between virtualized groups\n @cached\n get opts() {\n return this.results.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n @cached\n get options(): any[] {\n if (this._resolvedOptions) return toPlainArray(this._resolvedOptions);\n\n if (this.args.options) {\n return toPlainArray(this.args.options);\n } else {\n return [];\n }\n }\n\n @cached\n get results(): any[] {\n if (this.searchText.length > 0) {\n if (this.args.search) {\n return toPlainArray(this._searchResult || this.options);\n } else {\n if (\n this._filterResultsCache.options === this.options &&\n this._filterResultsCache.searchText === this.searchText\n ) {\n // This is an optimization to avoid filtering several times, which may be a bit expensive\n // if there are many options, if neither the options nor the searchtext have changed\n return this._filterResultsCache.results;\n }\n\n //@ts-ignore\n let results = this._filter(this.options, this.searchText);\n //eslint-disable-next-line\n this._filterResultsCache = {\n results,\n options: this.options,\n searchText: this.searchText\n };\n\n return results;\n }\n } else {\n return this.options;\n }\n }\n\n @action\n scrollTo(option: any, select: { results: []; uniqueId: string }): void {\n let optionsList = document.querySelector(\n `[aria-controls=\"ember-power-select-trigger-${select.uniqueId}\"]`\n ) as HTMLElement;\n\n if (!optionsList) {\n return;\n }\n\n let index = this.opts.indexOf(option);\n\n if (index === -1) {\n return;\n }\n\n let optionElement = optionsList.querySelector(\n `[data-option-index=\"${index}\"]`\n ) as HTMLElement;\n\n if (!optionElement) {\n return;\n }\n\n let optionTopScroll = optionElement.offsetTop;\n let optionBottomScroll = optionTopScroll + optionElement.offsetHeight;\n\n if (optionBottomScroll > optionsList.offsetHeight + optionsList.scrollTop) {\n optionsList.scrollTop = optionBottomScroll - optionsList.offsetHeight;\n } else if (optionTopScroll < optionsList.scrollTop) {\n optionsList.scrollTop = optionTopScroll;\n }\n }\n\n @action\n registerAPI(select: Select) {\n this.select = select;\n }\n\n @action\n onChange(selected: any[]) {\n if (this.args.singleSelection) {\n return selected.length > 0 ? [selected[selected.length - 1]] : [];\n }\n\n this.args.onChange(selected);\n }\n\n @action\n onCreateOption() {\n let option;\n\n if (\n this.args.onCreateOption &&\n typeof this.args.onCreateOption === 'function'\n ) {\n // The `onCreateOption` function can be used to sanitize the input or explicitly return `false` to reject the input\n option = this.args.onCreateOption(this.select.searchText);\n\n if (option === false) {\n return;\n }\n }\n\n let search = option || this.select.searchText;\n\n this.select.actions.search('');\n this.select.actions.close();\n\n return search;\n }\n\n @action\n buildSelection(option: any, select: Select) {\n let newSelection = (select.selected || []).slice(0);\n let idx = -1;\n\n for (let i = 0; i < newSelection.length; i++) {\n if (isEqual(newSelection[i], option)) {\n idx = i;\n\n break;\n }\n }\n\n if (idx > -1) {\n newSelection.splice(idx, 1);\n } else {\n newSelection.push(option);\n }\n\n if (this.args.singleSelection && newSelection.length === 0) {\n select.actions.search('');\n }\n\n if (select?.selected?.length < newSelection.length) {\n select.actions.search('');\n }\n\n return newSelection;\n }\n}\n"],"names":["isSliceable","coll","isArray","toPlainArray","collection","slice","EuiComboBoxComponent","Component","g","prototype","service","i","void 0","tracked","_filterResultsCache","results","options","searchText","loadingMessage","args","euiI18n","lookupToken","noMatchesMessage","searchMessage","setComponentTemplate","precompileTemplate","strictMode","scope","PowerSelectMultiple","EuiComboBoxSearchMessage","argOrDefault","and","not","EuiComboBoxTrigger","queue","optional","EuiComboBoxOptions","EuiComboBoxGroup","classNames","EuiComboBoxCreateOption","EuiComboBoxNoMatchesMessage","opts","reduce","acc","curr","emberPowerSelectIsGroup","push","n","cached","_resolvedOptions","length","search","_searchResult","_filter","scrollTo","option","select","optionsList","document","querySelector","uniqueId","index","indexOf","optionElement","optionTopScroll","offsetTop","optionBottomScroll","offsetHeight","scrollTop","action","registerAPI","onChange","selected","singleSelection","onCreateOption","actions","close","buildSelection","newSelection","idx","isEqual","splice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoGA,MAAMA,cAAmBC,IAAS,IAAqB;EACrD,OAAOC,OAAQ,CAAAD,IAAA,CAAA;AACjB,CAAA;AAEaE,MAAAA,YAAe,GAAKC,UAAiC,IAAA;AAChE,EAAA,IAAIJ,WAAA,CAAeI,UAAa,CAAA,EAAA;AAC9B,IAAA,OAAOA,WAAWC,KAAK,EAAA;AACzB,GAAO,MAAA;AACL,IAAA,OAAOD,UAAA;AACT;AACF;AAEe,MAAME,6BAA6BC,SAAU,CAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACzDC,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAEAI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsB,IAAK;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,OAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CAC3BI,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,iBAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CACAI,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAqB,EAAG;AAAA,KAAA,CAAA;AAAA;AAAA,EAAA,WAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAAC,MAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CACxBI,OAAA,CAAA,CAAA;AAAA;AAAA,EAAA,cAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,MAAA;AAEOE,EAAAA,mBAAA,GAIJ;AAAEC,IAAAA,OAAA,EAAS,EAAE;AAAEC,IAAAA,OAAA,EAAS,EAAE;IAAEC,UAAY,EAAA,IAAI,CAACA;GAAa;EAE9D,IAAIC,cAAiBA,GAAA;AACnB,IAAA,OACE,IAAI,CAACC,IAAI,CAACD,cAAc,IACxB,IAAI,CAACE,OAAO,CAACC,WAAW,CACtB,8BACA,oBAEJ,CAAA;AACF;EAEA,IAAIC,gBAAmBA,GAAA;AACrB,IAAA,OACE,IAAI,CAACH,IAAI,CAACG,gBAAgB,IAC1B,IAAI,CAACF,OAAO,CAACC,WAAW,CACtB,gCACA,kBAEJ,CAAA;AACF;EAEA,IAAIE,aAAgBA,GAAA;AAClB,IAAA,OACE,IAAI,CAACJ,IAAI,CAACI,aAAa,IACvB,IAAI,CAACH,OAAO,CAACC,WAAW,CAAC,6BAA6B,gBACxD,CAAA;AACF;AAEA,EAAA;IAAAG,oBAAA,CAAAC,kBAAA,CAkGA,0lGAAA,EAAA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,mBAAA;kCAAAC,sBAAA;QAAAC,YAAA;QAAAC,GAAA;QAAAC,GAAA;4BAAAC,2BAAA;QAAAC,KAAA;QAAAC,QAAA;4BAAAC,2BAAA;QAAAC,gBAAA;QAAAC,UAAA;iCAAAC,8BAAA;AAAAC,qCAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AAEV;EACA,IACIC,IAAOA,GAAA;IACT,OAAO,IAAI,CAAC1B,OAAO,CAAC2B,MAAM,CAAC,CAACC,GAAK,EAAAC,IAAA,KAAA;AAC/B,MAAA,IAAIC,uBAAwB,CAAA,CAACD,IAAA,CAAK,CAAG,EAAA;QACnCD,GAAA,CAAIG,IAAI,CAACF,IAAS,EAAA,GAAAA,IAAA,CAAK5B,OAAO,CAAA;AAChC,OAAO,MAAA;AACL2B,QAAAA,GAAA,CAAIG,IAAI,CAACF,IAAA,CAAA;AACX;AAEA,MAAA,OAAOD,GAAA;KACT,EAAG,EAAE,CAAA;AACP;AAAA,EAAA;IAAAI,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,MAAA,EAAA,CAXCuC,MAAA,CAAA,CAAA;AAAA;EAaD,IACIhC,OAAAA,GAAiB;IACnB,IAAI,IAAI,CAACiC,gBAAgB,EAAE,OAAO9C,YAAa,CAAA,IAAI,CAAC8C,gBAAgB,CAAA;AAEpE,IAAA,IAAI,IAAI,CAAC9B,IAAI,CAACH,OAAO,EAAE;AACrB,MAAA,OAAOb,YAAa,CAAA,IAAI,CAACgB,IAAI,CAACH,OAAO,CAAA;AACvC,KAAO,MAAA;AACL,MAAA,OAAO,EAAE;AACX;AACF;AAAA,EAAA;IAAA+B,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,SAAA,EAAA,CATCuC,MAAA,CAAA,CAAA;AAAA;EAWD,IACIjC,OAAAA,GAAiB;AACnB,IAAA,IAAI,IAAI,CAACE,UAAU,CAACiC,MAAM,GAAG,CAAG,EAAA;AAC9B,MAAA,IAAI,IAAI,CAAC/B,IAAI,CAACgC,MAAM,EAAE;QACpB,OAAOhD,aAAa,IAAI,CAACiD,aAAa,IAAI,IAAI,CAACpC,OAAO,CAAA;AACxD,OAAO,MAAA;AACL,QAAA,IACE,IAAI,CAACF,mBAAmB,CAACE,OAAO,KAAK,IAAI,CAACA,OAAO,IACjD,IAAI,CAACF,mBAAmB,CAACG,UAAU,KAAK,IAAI,CAACA,UAAU,EACvD;AACA;AACA;AACA,UAAA,OAAO,IAAI,CAACH,mBAAmB,CAACC,OAAO;AACzC;AAEA;AACA,QAAA,IAAIA,OAAA,GAAU,IAAI,CAACsC,OAAO,CAAC,IAAI,CAACrC,OAAO,EAAE,IAAI,CAACC,UAAU,CAAA;AACxD;QACA,IAAI,CAACH,mBAAmB,GAAG;UACzBC,OAAA;UACAC,OAAS,EAAA,IAAI,CAACA,OAAO;UACrBC,UAAY,EAAA,IAAI,CAACA;SACnB;AAEA,QAAA,OAAOF,OAAA;AACT;AACF,KAAO,MAAA;MACL,OAAO,IAAI,CAACC,OAAO;AACrB;AACF;AAAA,EAAA;IAAA+B,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,SAAA,EAAA,CA7BCuC,MAAA,CAAA,CAAA;AAAA;AAgCDM,EAAAA,QAASA,CAAAC,MAAW,EAAEC,MAAyC,EAAQ;IACrE,IAAIC,WAAc,GAAAC,QAAA,CAASC,aAAa,CACtC,CAAA,2CAAA,EAA8CH,MAAA,CAAOI,QAAQ,CAAA,EAAA,CAAI,CAC9D;IAEL,IAAI,CAACH,WAAa,EAAA;AAChB,MAAA;AACF;IAEA,IAAII,QAAQ,IAAI,CAACpB,IAAI,CAACqB,OAAO,CAACP,MAAA,CAAA;AAE9B,IAAA,IAAIM,KAAA,KAAU,EAAI,EAAA;AAChB,MAAA;AACF;IAEA,IAAIE,aAAA,GAAgBN,WAAY,CAAAE,aAAa,CAC3C,CAAA,oBAAA,EAAuBE,KAAA,CAAA,EAAA,CAAS,CAC7B;IAEL,IAAI,CAACE,aAAe,EAAA;AAClB,MAAA;AACF;AAEA,IAAA,IAAIC,eAAA,GAAkBD,cAAcE,SAAS;AAC7C,IAAA,IAAIC,kBAAA,GAAqBF,eAAkB,GAAAD,aAAA,CAAcI,YAAY;IAErE,IAAID,qBAAqBT,WAAY,CAAAU,YAAY,GAAGV,WAAA,CAAYW,SAAS,EAAE;AACzEX,MAAAA,WAAA,CAAYW,SAAS,GAAGF,kBAAqB,GAAAT,WAAA,CAAYU,YAAY;AACvE,KAAA,MAAO,IAAIH,eAAA,GAAkBP,WAAY,CAAAW,SAAS,EAAE;MAClDX,WAAA,CAAYW,SAAS,GAAGJ,eAAA;AAC1B;AACF;AAAA,EAAA;IAAAjB,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,UAAA,EAAA,CAhCC4D,MAAA,CAAA,CAAA;AAAA;EAmCDC,WAAYA,CAAAd,MAAc,EAAE;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAA;AAChB;AAAA,EAAA;IAAAT,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,aAAA,EAAA,CAHC4D,MAAA,CAAA,CAAA;AAAA;EAMDE,QAASA,CAAAC,QAAe,EAAE;AACxB,IAAA,IAAI,IAAI,CAACrD,IAAI,CAACsD,eAAe,EAAE;AAC7B,MAAA,OAAOD,QAAA,CAAStB,MAAM,GAAG,CAAI,GAAA,CAACsB,QAAQ,CAACA,QAAA,CAAStB,MAAM,GAAG,CAAE,CAAA,CAAC,GAAG,EAAE;AACnE;AAEA,IAAA,IAAI,CAAC/B,IAAI,CAACoD,QAAQ,CAACC,QAAA,CAAA;AACrB;AAAA,EAAA;IAAAzB,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,UAAA,EAAA,CAPC4D,MAAA,CAAA,CAAA;AAAA;AAUDK,EAAAA,cAAiBA,GAAA;AACf,IAAA,IAAInB,MAAA;AAEJ,IAAA,IACE,IAAI,CAACpC,IAAI,CAACuD,cAAc,IACxB,OAAO,IAAI,CAACvD,IAAI,CAACuD,cAAc,KAAK,UACpC,EAAA;AACA;AACAnB,MAAAA,MAAS,GAAA,IAAI,CAACpC,IAAI,CAACuD,cAAc,CAAC,IAAI,CAAClB,MAAM,CAACvC,UAAU,CAAA;MAExD,IAAIsC,WAAW,KAAO,EAAA;AACpB,QAAA;AACF;AACF;IAEA,IAAIJ,SAASI,MAAU,IAAA,IAAI,CAACC,MAAM,CAACvC,UAAU;IAE7C,IAAI,CAACuC,MAAM,CAACmB,OAAO,CAACxB,MAAM,CAAC,EAAA,CAAA;AAC3B,IAAA,IAAI,CAACK,MAAM,CAACmB,OAAO,CAACC,KAAK,EAAA;AAEzB,IAAA,OAAOzB,MAAA;AACT;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,gBAAA,EAAA,CAtBC4D,MAAA,CAAA,CAAA;AAAA;AAyBDQ,EAAAA,cAAAA,CAAetB,MAAW,EAAEC,MAAc,EAAE;AAC1C,IAAA,IAAIsB,YAAA,GAAe,CAACtB,MAAO,CAAAgB,QAAQ,IAAI,EAAE,EAAEnE,KAAK,CAAC,CAAA,CAAA;IACjD,IAAI0E,MAAM,EAAC;AAEX,IAAA,KAAK,IAAIpE,CAAI,GAAA,CAAA,EAAGA,IAAImE,YAAa,CAAA5B,MAAM,EAAEvC,CAAK,EAAA,EAAA;MAC5C,IAAIqE,OAAQ,CAAAF,YAAY,CAACnE,CAAA,CAAE,EAAE4C,MAAS,CAAA,EAAA;AACpCwB,QAAAA,GAAM,GAAApE,CAAA;AAEN,QAAA;AACF;AACF;AAEA,IAAA,IAAIoE,GAAA,GAAM,EAAI,EAAA;AACZD,MAAAA,YAAa,CAAAG,MAAM,CAACF,GAAK,EAAA,CAAA,CAAA;AAC3B,KAAO,MAAA;AACLD,MAAAA,YAAA,CAAahC,IAAI,CAACS,MAAA,CAAA;AACpB;IAEA,IAAI,IAAI,CAACpC,IAAI,CAACsD,eAAe,IAAIK,YAAA,CAAa5B,MAAM,KAAK,CAAG,EAAA;AAC1DM,MAAAA,MAAO,CAAAmB,OAAO,CAACxB,MAAM,CAAC,EAAA,CAAA;AACxB;IAEA,IAAIK,MAAQ,EAAAgB,QAAA,EAAUtB,MAAS,GAAA4B,YAAA,CAAa5B,MAAM,EAAE;AAClDM,MAAAA,MAAO,CAAAmB,OAAO,CAACxB,MAAM,CAAC,EAAA,CAAA;AACxB;AAEA,IAAA,OAAO2B,YAAA;AACT;AAAA,EAAA;IAAA/B,CAAA,CAAA,IAAA,CAAAtC,SAAA,EAAA,gBAAA,EAAA,CA5BC4D,MAAA,CAAA,CAAA;AAAA;AA6BH;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-combo-box.js","sources":["../../src/components/eui-combo-box.gts"],"sourcesContent":["import 'ember-basic-dropdown/styles';\n\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEqual } from '@ember/utils';\n\nimport optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';\nimport queue from '@nullvoxpopuli/ember-composable-helpers/helpers/queue';\nimport PowerSelectMultiple from 'ember-power-select/components/power-select-multiple';\nimport { emberPowerSelectIsGroup } from 'ember-power-select/helpers/ember-power-select-is-group';\nimport { and, not } from 'ember-truth-helpers';\n\nimport argOrDefault from '../helpers/arg-or-default.ts';\nimport classNames from '../helpers/class-names.ts';\nimport EuiComboBoxCreateOption from './eui-combo-box/create-option.gts';\nimport EuiComboBoxGroup from './eui-combo-box/group.gts';\nimport EuiComboBoxNoMatchesMessage from './eui-combo-box/no-matches-message.gts';\nimport EuiComboBoxOptions from './eui-combo-box/options.gts';\nimport EuiComboBoxSearchMessage from './eui-combo-box/search-message.gts';\nimport EuiComboBoxTrigger from './eui-combo-box/trigger.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\n\ninterface PromiseProxy<T> extends Promise<T> {\n content: any;\n}\n\ninterface Select {\n selected: any;\n actions: {\n search: (str: string) => void;\n };\n}\n\nexport interface EuiComboBoxSignature {\n Element: HTMLDivElement;\n Args: {\n singleSelection?:\n | boolean\n | {\n asPlainText?: boolean;\n };\n onCreateOption?: (search: string) => boolean | undefined;\n alwaysShowCreateOption?: boolean;\n options: any[];\n search?: (term: string, select: Select) => any[] | PromiseProxy<any[]>;\n searchField?: string;\n isInvalid?: boolean;\n fullWidth?: boolean;\n searchMessage?: string;\n searchEnabled?: boolean;\n isClearable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n readOnly?: boolean;\n searchMessageComponent?: any;\n compressed?: boolean;\n onFocus?: (e: FocusEvent) => void;\n onBlur?: (e: FocusEvent) => void;\n onClose?: (e: Event) => void;\n onOpen?: (e: Event) => void;\n renderInPlace?: boolean;\n customOptionText?: string;\n loadingMessage?: any;\n selectedItemComponent?: any;\n beforeOptionsComponent?: any;\n placeholderComponent?: any;\n afterOptionsComponent?: any;\n searchPlaceholder?: any;\n dropdownClass?: string;\n selectedOptions?: any[];\n onChange: (selected: any[]) => void;\n placeholder?: string;\n extra?: any;\n closeOnSelect?: boolean;\n autoFocus?: boolean;\n defaultHighlighted?: any;\n matchTriggerWidth?: boolean;\n tabindex?: number;\n initiallyOpen?: boolean;\n horizontalPosition?: string;\n verticalPosition?: string;\n destination?: string;\n preventScroll?: boolean;\n noMatchesMessage?: string;\n noMatchesMessageComponent?: any;\n optionsClass?: string;\n rowHeight?: number;\n };\n Blocks: {\n default: [any, number, Select];\n };\n}\n\ninterface Sliceable<T> {\n slice(): T[];\n}\n\nconst isSliceable = <T,>(coll: any): coll is Sliceable<T> => {\n return isArray(coll);\n};\n\nexport const toPlainArray = <T,>(collection: T[] | Sliceable<T>): T[] => {\n if (isSliceable<T>(collection)) {\n return collection.slice();\n } else {\n return collection;\n }\n};\n\nexport default class EuiComboBoxComponent extends Component<EuiComboBoxSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked select: any = null;\n @tracked private _resolvedOptions?: any[];\n @tracked searchText = '';\n @tracked private _searchResult?: any[];\n\n private _filterResultsCache: {\n results: any[];\n options: any[];\n searchText: string;\n } = { results: [], options: [], searchText: this.searchText };\n\n get loadingMessage() {\n return (\n this.args.loadingMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.loadingMessage',\n 'Loading options...'\n )\n );\n }\n\n get noMatchesMessage() {\n return (\n this.args.noMatchesMessage ||\n this.euiI18n.lookupToken(\n 'euiComboBox.noMatchesMessage',\n 'No results found'\n )\n );\n }\n\n get searchMessage() {\n return (\n this.args.searchMessage ||\n this.euiI18n.lookupToken('euiComboBox.searchMessage', 'Type to search')\n );\n }\n\n get alwaysShowCreateOption() {\n return this.args.onCreateOption && this.args.alwaysShowCreateOption;\n }\n\n <template>\n {{! @glint-nocheck: not typesafe yet }}\n\n <PowerSelectMultiple\n ...attributes\n @onChange={{this.onChange}}\n @onFocus={{@onFocus}}\n @onBlur={{@onBlur}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @placeholderComponent={{@placeholderComponent}}\n @searchMessage={{this.searchMessage}}\n @searchMessageComponent={{if\n @searchMessageComponent\n @searchMessageComponent\n EuiComboBoxSearchMessage\n }}\n @noMatchesMessage={{this.noMatchesMessage}}\n @matchTriggerWidth={{@matchTriggerWidth}}\n @options={{this.options}}\n @selected={{@selectedOptions}}\n @closeOnSelect={{@closeOnSelect}}\n @defaultHighlighted={{@defaultHighlighted}}\n @searchField={{@searchField}}\n @searchEnabled={{argOrDefault @searchEnabled true}}\n @tabindex={{@tabindex}}\n @initiallyOpened={{and (not @isDisabled) @autoFocus}}\n @triggerComponent={{component\n EuiComboBoxTrigger\n fullWidth=@fullWidth\n compressed=@compressed\n isInvalid=@isInvalid\n singleSelection=@singleSelection\n onClose=@removeTag\n onCreateOption=(if @onCreateOption this.onCreateOption)\n isLoading=@isLoading\n autoFocus=(and (not @isDisabled) @autoFocus)\n icon=@triggerIcon\n }}\n @matcher={{@matcher}}\n @initiallyOpen={{@initiallyOpen}}\n @typeAheadOptionMatcher={{@typeAheadOptionMatcher}}\n @buildSelection={{this.buildSelection}}\n @search={{@search}}\n @onInput={{@onInput}}\n @onKeydown={{@onKeydown}}\n @scrollTo={{this.scrollTo}}\n @registerAPI={{queue this.registerAPI (optional @registerApi)}}\n @horizontalPosition={{@horizontalPosition}}\n @destination={{@destination}}\n @preventScroll={{@preventScroll}}\n @renderInPlace={{@renderInPlace}}\n @verticalPosition={{@verticalPosition}}\n @disabled={{@isDisabled}}\n @calculatePosition={{@calculatePosition}}\n @eventType={{@eventType}}\n @ariaLabel={{@ariaLabel}}\n @ariaLabelledBy={{@ariaLabelledBy}}\n @required={{@required}}\n @triggerRole={{@triggerRole}}\n @title={{@title}}\n @triggerId={{@triggerId}}\n @allowClear={{and (argOrDefault @isClearable true) (not @isDisabled)}}\n @loadingMessage={{this.loadingMessage}}\n @selectedItemComponent={{@selectedItemComponent}}\n @beforeOptionsComponent={{@beforeOptionsComponent}}\n @afterOptionsComponent={{if\n @afterOptionsComponent\n @afterOptionsComponent\n (if\n (and\n @onCreateOption\n (not this.select.loading)\n this.select.searchText\n this.alwaysShowCreateOption\n )\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n alwaysShow=true\n )\n )\n }}\n @placeholder={{@placeholder}}\n @searchPlaceholder={{@searchPlaceholder}}\n @optionsComponent={{component\n EuiComboBoxOptions\n rowHeight=@rowHeight\n class=@optionsClass\n }}\n @extra={{@extra}}\n @groupComponent={{component EuiComboBoxGroup}}\n @triggerClass={{classNames\n \"euiComboBox\"\n (if @compressed \"euiComboBox--compressed\")\n (if @fullWidth \"euiComboBox--fullWidth\")\n (if @isDisabled \"euiComboBox-isDisabled\")\n (if @isInvalid \"euiComboBox-isInvalid\")\n (if this.select.isOpen \"euiComboBox-isOpen\")\n }}\n @noMatchesMessageComponent={{if\n (and @onCreateOption (not this.alwaysShowCreateOption))\n (component\n EuiComboBoxCreateOption\n customOptionText=@customOptionText\n onCreateOption=this.onCreateOption\n select=this.select\n alwaysShow=false\n )\n (component EuiComboBoxNoMatchesMessage)\n }}\n @dropdownClass=\"euiComboBoxOptionsList euiPanel euiPanel--borderRadiusMedium euiPanel--noShadow euiPanel--plain euiPopover__panel-isAttached euiPopover__panel euiPopover__panel-noArrow euiPopover__panel--bottom euiPopover__panel-isOpen {{@dropdownClass}}\"\n as |option i|\n >\n {{yield option i}}\n </PowerSelectMultiple>\n </template>\n\n //This is to allow scrolling between virtualized groups\n @cached\n get opts() {\n return this.results.reduce((acc, curr) => {\n if (emberPowerSelectIsGroup([curr])) {\n acc.push(curr, ...curr.options);\n } else {\n acc.push(curr);\n }\n\n return acc;\n }, []);\n }\n\n @cached\n get options(): any[] {\n if (this._resolvedOptions) return toPlainArray(this._resolvedOptions);\n\n if (this.args.options) {\n return toPlainArray(this.args.options);\n } else {\n return [];\n }\n }\n\n @cached\n get results(): any[] {\n if (this.searchText.length > 0) {\n if (this.args.search) {\n return toPlainArray(this._searchResult || this.options);\n } else {\n if (\n this._filterResultsCache.options === this.options &&\n this._filterResultsCache.searchText === this.searchText\n ) {\n // This is an optimization to avoid filtering several times, which may be a bit expensive\n // if there are many options, if neither the options nor the searchtext have changed\n return this._filterResultsCache.results;\n }\n\n //@ts-ignore\n let results = this._filter(this.options, this.searchText);\n //eslint-disable-next-line\n this._filterResultsCache = {\n results,\n options: this.options,\n searchText: this.searchText\n };\n\n return results;\n }\n } else {\n return this.options;\n }\n }\n\n @action\n scrollTo(option: any, select: { results: []; uniqueId: string }): void {\n let optionsList = document.querySelector(\n `[aria-controls=\"ember-power-select-trigger-${select.uniqueId}\"]`\n ) as HTMLElement;\n\n if (!optionsList) {\n return;\n }\n\n let index = this.opts.indexOf(option);\n\n if (index === -1) {\n return;\n }\n\n let optionElement = optionsList.querySelector(\n `[data-option-index=\"${index}\"]`\n ) as HTMLElement;\n\n if (!optionElement) {\n return;\n }\n\n let optionTopScroll = optionElement.offsetTop;\n let optionBottomScroll = optionTopScroll + optionElement.offsetHeight;\n\n if (optionBottomScroll > optionsList.offsetHeight + optionsList.scrollTop) {\n optionsList.scrollTop = optionBottomScroll - optionsList.offsetHeight;\n } else if (optionTopScroll < optionsList.scrollTop) {\n optionsList.scrollTop = optionTopScroll;\n }\n }\n\n @action\n registerAPI(select: Select) {\n this.select = select;\n }\n\n @action\n onChange(selected: any[]) {\n if (this.args.singleSelection) {\n return selected.length > 0 ? [selected[selected.length - 1]] : [];\n }\n\n this.args.onChange(selected);\n }\n\n @action\n onCreateOption() {\n let option;\n\n if (\n this.args.onCreateOption &&\n typeof this.args.onCreateOption === 'function'\n ) {\n // The `onCreateOption` function can be used to sanitize the input or explicitly return `false` to reject the input\n option = this.args.onCreateOption(this.select.searchText);\n\n if (option === false) {\n return;\n }\n }\n\n let search = option || this.select.searchText;\n\n this.select.actions.search('');\n this.select.actions.close();\n\n return search;\n }\n\n @action\n buildSelection(option: any, select: Select) {\n let newSelection = (select.selected || []).slice(0);\n let idx = -1;\n\n for (let i = 0; i < newSelection.length; i++) {\n if (isEqual(newSelection[i], option)) {\n idx = i;\n\n break;\n }\n }\n\n if (idx > -1) {\n newSelection.splice(idx, 1);\n } else {\n newSelection.push(option);\n }\n\n if (this.args.singleSelection && newSelection.length === 0) {\n select.actions.search('');\n }\n\n if (select?.selected?.length < newSelection.length) {\n select.actions.search('');\n }\n\n return newSelection;\n }\n}\n"],"names":["isSliceable","coll","isArray","toPlainArray","collection","slice","EuiComboBoxComponent","Component","g","prototype","service","i","void 0","tracked","_filterResultsCache","results","options","searchText","loadingMessage","args","euiI18n","lookupToken","noMatchesMessage","searchMessage","alwaysShowCreateOption","onCreateOption","setComponentTemplate","precompileTemplate","strictMode","scope","PowerSelectMultiple","EuiComboBoxSearchMessage","argOrDefault","and","not","EuiComboBoxTrigger","queue","optional","EuiComboBoxCreateOption","EuiComboBoxOptions","EuiComboBoxGroup","classNames","EuiComboBoxNoMatchesMessage","opts","reduce","acc","curr","emberPowerSelectIsGroup","push","n","cached","_resolvedOptions","length","search","_searchResult","_filter","scrollTo","option","select","optionsList","document","querySelector","uniqueId","index","indexOf","optionElement","optionTopScroll","offsetTop","optionBottomScroll","offsetHeight","scrollTop","action","registerAPI","onChange","selected","singleSelection","actions","close","buildSelection","newSelection","idx","isEqual","splice"],"mappings":"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"}
|