@cloudscape-design/components 3.0.711 → 3.0.713

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/autosuggest/options-controller.d.ts.map +1 -1
  2. package/autosuggest/options-controller.js +11 -4
  3. package/autosuggest/options-controller.js.map +1 -1
  4. package/internal/components/dropdown/index.d.ts.map +1 -1
  5. package/internal/components/dropdown/index.js +9 -11
  6. package/internal/components/dropdown/index.js.map +1 -1
  7. package/internal/environment.js +1 -1
  8. package/internal/environment.json +1 -1
  9. package/internal/manifest.json +1 -1
  10. package/internal/utils/scrollable-containers.d.ts.map +1 -1
  11. package/internal/utils/scrollable-containers.js +6 -4
  12. package/internal/utils/scrollable-containers.js.map +1 -1
  13. package/package.json +1 -1
  14. package/property-filter/index.d.ts.map +1 -1
  15. package/property-filter/index.js +4 -14
  16. package/property-filter/index.js.map +1 -1
  17. package/property-filter/styles.css.js +46 -31
  18. package/property-filter/styles.scoped.css +134 -33
  19. package/property-filter/styles.selectors.js +46 -31
  20. package/property-filter/test-classes/styles.css.js +16 -14
  21. package/property-filter/test-classes/styles.scoped.css +22 -14
  22. package/property-filter/test-classes/styles.selectors.js +16 -14
  23. package/property-filter/token-editor-grouped.d.ts +32 -0
  24. package/property-filter/token-editor-grouped.d.ts.map +1 -0
  25. package/property-filter/token-editor-grouped.js +114 -0
  26. package/property-filter/token-editor-grouped.js.map +1 -0
  27. package/property-filter/token-editor.d.ts +34 -3
  28. package/property-filter/token-editor.d.ts.map +1 -1
  29. package/property-filter/token-editor.js +8 -13
  30. package/property-filter/token-editor.js.map +1 -1
  31. package/property-filter/token.d.ts.map +1 -1
  32. package/property-filter/token.js +6 -1
  33. package/property-filter/token.js.map +1 -1
  34. package/test-utils/dom/property-filter/index.d.ts +12 -0
  35. package/test-utils/dom/property-filter/index.js +40 -1
  36. package/test-utils/dom/property-filter/index.js.map +1 -1
  37. package/test-utils/selectors/property-filter/index.d.ts +12 -0
  38. package/test-utils/selectors/property-filter/index.js +40 -1
  39. package/test-utils/selectors/property-filter/index.js.map +1 -1
  40. package/test-utils/tsconfig.tsbuildinfo +1 -1
@@ -2,58 +2,66 @@
2
2
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- .awsui_filtering-token_1heb1_1doww_5:not(#\9) {
5
+ .awsui_filtering-token_1heb1_iwu37_5:not(#\9) {
6
6
  /* used in test-utils */
7
7
  }
8
8
 
9
- .awsui_filtering-token-dismiss-button_1heb1_1doww_9:not(#\9) {
9
+ .awsui_filtering-token-dismiss-button_1heb1_iwu37_9:not(#\9) {
10
10
  /* used in test-utils */
11
11
  }
12
12
 
13
- .awsui_filtering-token-select_1heb1_1doww_13:not(#\9) {
13
+ .awsui_filtering-token-select_1heb1_iwu37_13:not(#\9) {
14
14
  /* used in test-utils */
15
15
  }
16
16
 
17
- .awsui_filtering-token-content_1heb1_1doww_17:not(#\9) {
17
+ .awsui_filtering-token-content_1heb1_iwu37_17:not(#\9) {
18
18
  /* used in test-utils */
19
19
  }
20
20
 
21
- .awsui_filtering-token-inner_1heb1_1doww_21:not(#\9) {
21
+ .awsui_filtering-token-inner_1heb1_iwu37_21:not(#\9) {
22
22
  /* used in test-utils */
23
23
  }
24
24
 
25
- .awsui_filtering-token-inner-dismiss-button_1heb1_1doww_25:not(#\9) {
25
+ .awsui_filtering-token-inner-dismiss-button_1heb1_iwu37_25:not(#\9) {
26
26
  /* used in test-utils */
27
27
  }
28
28
 
29
- .awsui_filtering-token-inner-select_1heb1_1doww_29:not(#\9) {
29
+ .awsui_filtering-token-inner-select_1heb1_iwu37_29:not(#\9) {
30
30
  /* used in test-utils */
31
31
  }
32
32
 
33
- .awsui_filtering-token-inner-content_1heb1_1doww_33:not(#\9) {
33
+ .awsui_filtering-token-inner-content_1heb1_iwu37_33:not(#\9) {
34
34
  /* used in test-utils */
35
35
  }
36
36
 
37
- .awsui_filtering-token-edit-button_1heb1_1doww_37:not(#\9) {
37
+ .awsui_filtering-token-edit-button_1heb1_iwu37_37:not(#\9) {
38
38
  /* used in test-utils */
39
39
  }
40
40
 
41
- .awsui_token-editor-field-property_1heb1_1doww_41:not(#\9) {
41
+ .awsui_token-editor-field-property_1heb1_iwu37_41:not(#\9) {
42
42
  /* used in test-utils */
43
43
  }
44
44
 
45
- .awsui_token-editor-field-operator_1heb1_1doww_45:not(#\9) {
45
+ .awsui_token-editor-field-operator_1heb1_iwu37_45:not(#\9) {
46
46
  /* used in test-utils */
47
47
  }
48
48
 
49
- .awsui_token-editor-field-value_1heb1_1doww_49:not(#\9) {
49
+ .awsui_token-editor-field-value_1heb1_iwu37_49:not(#\9) {
50
50
  /* used in test-utils */
51
51
  }
52
52
 
53
- .awsui_token-editor-cancel_1heb1_1doww_53:not(#\9) {
53
+ .awsui_token-editor-token-remove-actions_1heb1_iwu37_53:not(#\9) {
54
54
  /* used in test-utils */
55
55
  }
56
56
 
57
- .awsui_token-editor-submit_1heb1_1doww_57:not(#\9) {
57
+ .awsui_token-editor-token-add-actions_1heb1_iwu37_57:not(#\9) {
58
+ /* used in test-utils */
59
+ }
60
+
61
+ .awsui_token-editor-cancel_1heb1_iwu37_61:not(#\9) {
62
+ /* used in test-utils */
63
+ }
64
+
65
+ .awsui_token-editor-submit_1heb1_iwu37_65:not(#\9) {
58
66
  /* used in test-utils */
59
67
  }
@@ -2,19 +2,21 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "filtering-token": "awsui_filtering-token_1heb1_1doww_5",
6
- "filtering-token-dismiss-button": "awsui_filtering-token-dismiss-button_1heb1_1doww_9",
7
- "filtering-token-select": "awsui_filtering-token-select_1heb1_1doww_13",
8
- "filtering-token-content": "awsui_filtering-token-content_1heb1_1doww_17",
9
- "filtering-token-inner": "awsui_filtering-token-inner_1heb1_1doww_21",
10
- "filtering-token-inner-dismiss-button": "awsui_filtering-token-inner-dismiss-button_1heb1_1doww_25",
11
- "filtering-token-inner-select": "awsui_filtering-token-inner-select_1heb1_1doww_29",
12
- "filtering-token-inner-content": "awsui_filtering-token-inner-content_1heb1_1doww_33",
13
- "filtering-token-edit-button": "awsui_filtering-token-edit-button_1heb1_1doww_37",
14
- "token-editor-field-property": "awsui_token-editor-field-property_1heb1_1doww_41",
15
- "token-editor-field-operator": "awsui_token-editor-field-operator_1heb1_1doww_45",
16
- "token-editor-field-value": "awsui_token-editor-field-value_1heb1_1doww_49",
17
- "token-editor-cancel": "awsui_token-editor-cancel_1heb1_1doww_53",
18
- "token-editor-submit": "awsui_token-editor-submit_1heb1_1doww_57"
5
+ "filtering-token": "awsui_filtering-token_1heb1_iwu37_5",
6
+ "filtering-token-dismiss-button": "awsui_filtering-token-dismiss-button_1heb1_iwu37_9",
7
+ "filtering-token-select": "awsui_filtering-token-select_1heb1_iwu37_13",
8
+ "filtering-token-content": "awsui_filtering-token-content_1heb1_iwu37_17",
9
+ "filtering-token-inner": "awsui_filtering-token-inner_1heb1_iwu37_21",
10
+ "filtering-token-inner-dismiss-button": "awsui_filtering-token-inner-dismiss-button_1heb1_iwu37_25",
11
+ "filtering-token-inner-select": "awsui_filtering-token-inner-select_1heb1_iwu37_29",
12
+ "filtering-token-inner-content": "awsui_filtering-token-inner-content_1heb1_iwu37_33",
13
+ "filtering-token-edit-button": "awsui_filtering-token-edit-button_1heb1_iwu37_37",
14
+ "token-editor-field-property": "awsui_token-editor-field-property_1heb1_iwu37_41",
15
+ "token-editor-field-operator": "awsui_token-editor-field-operator_1heb1_iwu37_45",
16
+ "token-editor-field-value": "awsui_token-editor-field-value_1heb1_iwu37_49",
17
+ "token-editor-token-remove-actions": "awsui_token-editor-token-remove-actions_1heb1_iwu37_53",
18
+ "token-editor-token-add-actions": "awsui_token-editor-token-add-actions_1heb1_iwu37_57",
19
+ "token-editor-cancel": "awsui_token-editor-cancel_1heb1_iwu37_61",
20
+ "token-editor-submit": "awsui_token-editor-submit_1heb1_iwu37_65"
19
21
  };
20
22
 
@@ -0,0 +1,32 @@
1
+ /// <reference types="react" />
2
+ import { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';
3
+ import { NonCancelableEventHandler } from '../internal/events';
4
+ import { FormattedToken, GroupText, I18nStrings, InternalFilteringOption, InternalFilteringProperty, InternalFreeTextFiltering, InternalToken, LoadItemsDetail } from './interfaces';
5
+ interface I18nStringsExt {
6
+ tokenEditorTokenActionsLabel: (token: FormattedToken) => string;
7
+ tokenEditorTokenRemoveLabel: (token: FormattedToken) => string;
8
+ tokenEditorTokenRemoveFromGroupLabel: (token: FormattedToken) => string;
9
+ tokenEditorAddNewTokenLabel: string;
10
+ tokenEditorAddTokenActionsLabel: string;
11
+ tokenEditorAddExistingTokenLabel: (token: FormattedToken) => string;
12
+ }
13
+ export interface TokenEditorProps {
14
+ supportsGroups: boolean;
15
+ asyncProperties?: boolean;
16
+ asyncProps: DropdownStatusProps;
17
+ customGroupsText: readonly GroupText[];
18
+ freeTextFiltering: InternalFreeTextFiltering;
19
+ filteringProperties: readonly InternalFilteringProperty[];
20
+ filteringOptions: readonly InternalFilteringOption[];
21
+ i18nStrings: I18nStrings & I18nStringsExt;
22
+ onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;
23
+ onSubmit: () => void;
24
+ onDismiss: () => void;
25
+ standaloneTokens: InternalToken[];
26
+ onChangeStandalone: (newStandalone: InternalToken[]) => void;
27
+ tempGroup: InternalToken[];
28
+ onChangeTempGroup: (token: InternalToken[]) => void;
29
+ }
30
+ export declare function TokenEditor({ supportsGroups, asyncProperties, asyncProps, customGroupsText, freeTextFiltering, filteringProperties, filteringOptions, i18nStrings, onLoadItems, onSubmit, onDismiss, standaloneTokens, onChangeStandalone, tempGroup, onChangeTempGroup, }: TokenEditorProps): JSX.Element;
31
+ export {};
32
+ //# sourceMappingURL=token-editor-grouped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-editor-grouped.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor-grouped.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAExF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,OAAO,EAEL,cAAc,EACd,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,eAAe,EAChB,MAAM,cAAc,CAAC;AAMtB,UAAU,cAAc;IACtB,4BAA4B,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC;IAChE,2BAA2B,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC;IAC/D,oCAAoC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC;IACxE,2BAA2B,EAAE,MAAM,CAAC;IACpC,+BAA+B,EAAE,MAAM,CAAC;IACxC,gCAAgC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC;CACrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,WAAW,EAAE,WAAW,GAAG,cAAc,CAAC;IAC1C,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAClC,kBAAkB,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,iBAAiB,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,iBAAiB,GAClB,EAAE,gBAAgB,eAsIlB"}
@@ -0,0 +1,114 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import React from 'react';
4
+ import clsx from 'clsx';
5
+ import InternalButton from '../button/internal';
6
+ import InternalButtonDropdown from '../button-dropdown/internal';
7
+ import InternalFormField from '../form-field/internal';
8
+ import { FormFieldContext } from '../internal/context/form-field-context';
9
+ import { useContainerBreakpoints } from '../internal/hooks/container-queries';
10
+ import { useUniqueId } from '../internal/hooks/use-unique-id';
11
+ import { getAllowedOperators } from './controller';
12
+ import { getFormattedToken } from './i18n-utils';
13
+ import { OperatorInput, PropertyInput, ValueInput } from './token-editor';
14
+ import styles from './styles.css.js';
15
+ import testUtilStyles from './test-classes/styles.css.js';
16
+ export function TokenEditor({ supportsGroups, asyncProperties, asyncProps, customGroupsText, freeTextFiltering, filteringProperties, filteringOptions, i18nStrings, onLoadItems, onSubmit, onDismiss, standaloneTokens, onChangeStandalone, tempGroup, onChangeTempGroup, }) {
17
+ const groups = tempGroup.map((temporaryToken, index) => {
18
+ const setTemporaryToken = (newToken) => {
19
+ const copy = [...tempGroup];
20
+ copy[index] = newToken;
21
+ onChangeTempGroup(copy);
22
+ };
23
+ const property = temporaryToken.property;
24
+ const onChangePropertyKey = (newPropertyKey) => {
25
+ var _a;
26
+ const filteringProperty = filteringProperties.reduce((acc, property) => (property.propertyKey === newPropertyKey ? property : acc), undefined);
27
+ const allowedOperators = filteringProperty ? getAllowedOperators(filteringProperty) : freeTextFiltering.operators;
28
+ const operator = temporaryToken.operator && allowedOperators.indexOf(temporaryToken.operator) !== -1
29
+ ? temporaryToken.operator
30
+ : allowedOperators[0];
31
+ const matchedProperty = (_a = filteringProperties.find(property => property.propertyKey === newPropertyKey)) !== null && _a !== void 0 ? _a : null;
32
+ setTemporaryToken(Object.assign(Object.assign({}, temporaryToken), { property: matchedProperty, operator, value: null }));
33
+ };
34
+ const operator = temporaryToken.operator;
35
+ const onChangeOperator = (newOperator) => {
36
+ setTemporaryToken(Object.assign(Object.assign({}, temporaryToken), { operator: newOperator }));
37
+ };
38
+ const value = temporaryToken.value;
39
+ const onChangeValue = (newValue) => {
40
+ setTemporaryToken(Object.assign(Object.assign({}, temporaryToken), { value: newValue }));
41
+ };
42
+ return { token: temporaryToken, property, onChangePropertyKey, operator, onChangeOperator, value, onChangeValue };
43
+ });
44
+ return (React.createElement("div", { className: styles['token-editor-grouped'] },
45
+ React.createElement(TokenEditorFields, { supportsGroups: supportsGroups, tokens: groups.map(group => getFormattedToken(group.token, i18nStrings)), onRemove: index => {
46
+ const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);
47
+ onChangeTempGroup(updated);
48
+ }, onRemoveFromGroup: index => {
49
+ const removedToken = tempGroup[index];
50
+ const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);
51
+ onChangeTempGroup(updated);
52
+ onChangeStandalone([...standaloneTokens, removedToken]);
53
+ }, renderProperty: index => (React.createElement(PropertyInput, { property: groups[index].property, onChangePropertyKey: groups[index].onChangePropertyKey, asyncProps: asyncProperties ? asyncProps : null, filteringProperties: filteringProperties, onLoadItems: onLoadItems, customGroupsText: customGroupsText, i18nStrings: i18nStrings, freeTextFiltering: freeTextFiltering })), renderOperator: index => (React.createElement(OperatorInput, { property: groups[index].property, operator: groups[index].operator, onChangeOperator: groups[index].onChangeOperator, i18nStrings: i18nStrings, freeTextFiltering: freeTextFiltering, triggerVariant: "label" })), renderValue: index => (React.createElement(ValueInput, { property: groups[index].property, operator: groups[index].operator, value: groups[index].value, onChangeValue: groups[index].onChangeValue, asyncProps: asyncProps, filteringOptions: filteringOptions, onLoadItems: onLoadItems, i18nStrings: i18nStrings })), i18nStrings: i18nStrings }),
54
+ supportsGroups && (React.createElement("div", { className: clsx(styles['token-editor-grouped-add-token'], testUtilStyles['token-editor-token-add-actions']) },
55
+ React.createElement(InternalButtonDropdown, { variant: "normal", ariaLabel: i18nStrings.tokenEditorAddTokenActionsLabel, items: standaloneTokens.map((token, index) => ({
56
+ id: index.toString(),
57
+ text: i18nStrings.tokenEditorAddExistingTokenLabel(getFormattedToken(token, i18nStrings)),
58
+ })), onItemClick: ({ detail }) => {
59
+ const index = parseInt(detail.id);
60
+ if (!isNaN(index) && standaloneTokens[index]) {
61
+ const addedToken = standaloneTokens[index];
62
+ const updated = standaloneTokens.filter((_, existingIndex) => existingIndex !== index);
63
+ onChangeStandalone(updated);
64
+ onChangeTempGroup([...tempGroup, addedToken]);
65
+ }
66
+ }, disabled: standaloneTokens.length === 0, mainAction: {
67
+ text: i18nStrings.tokenEditorAddNewTokenLabel,
68
+ onClick: () => onChangeTempGroup([...tempGroup, { property: null, operator: ':', value: null }]),
69
+ } }))),
70
+ React.createElement("div", { className: styles['token-editor-grouped-actions'] },
71
+ React.createElement(InternalButton, { formAction: "none", variant: "link", className: clsx(styles['token-editor-grouped-cancel'], testUtilStyles['token-editor-cancel']), onClick: onDismiss }, i18nStrings.cancelActionText),
72
+ React.createElement(InternalButton, { className: clsx(styles['token-editor-grouped-submit'], testUtilStyles['token-editor-submit']), formAction: "none", onClick: onSubmit }, i18nStrings.applyActionText))));
73
+ }
74
+ function TokenEditorFields({ tokens, supportsGroups, onRemove, onRemoveFromGroup, renderProperty, renderOperator, renderValue, i18nStrings, }) {
75
+ const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);
76
+ const isNarrow = breakpoint === 'default';
77
+ const propertyLabelId = useUniqueId();
78
+ const operatorLabelId = useUniqueId();
79
+ const valueLabelId = useUniqueId();
80
+ const headers = (React.createElement("div", { className: styles['token-editor-grouped-grid-group'] },
81
+ React.createElement("div", { id: propertyLabelId, className: styles['token-editor-grouped-grid-header'] }, i18nStrings.propertyText),
82
+ React.createElement("div", { id: operatorLabelId, className: styles['token-editor-grouped-grid-header'] }, i18nStrings.operatorText),
83
+ React.createElement("div", { id: valueLabelId, className: styles['token-editor-grouped-grid-header'] }, i18nStrings.valueText),
84
+ React.createElement("div", { className: styles['token-editor-grouped-grid-header'] })));
85
+ return (React.createElement("div", { className: clsx(styles['token-editor-grouped-grid'], isNarrow && styles['token-editor-narrow']), ref: breakpointRef },
86
+ !isNarrow && headers,
87
+ tokens.map((token, index) => (React.createElement("div", { key: index, role: "group", "aria-label": `${token.propertyLabel} ${token.operator} ${token.value}`, className: styles['token-editor-grouped-grid-group'] },
88
+ React.createElement("div", { className: styles['token-editor-grouped-grid-cell'] },
89
+ React.createElement(TokenEditorField, { isNarrow: isNarrow, label: i18nStrings.propertyText, labelId: propertyLabelId, className: clsx(styles['token-editor-grouped-field-property'], testUtilStyles['token-editor-field-property']), index: index }, renderProperty(index))),
90
+ React.createElement("div", { className: styles['token-editor-grouped-grid-cell'] },
91
+ React.createElement(TokenEditorField, { isNarrow: isNarrow, label: i18nStrings.operatorText, labelId: operatorLabelId, className: clsx(styles['token-editor-grouped-field-operator'], testUtilStyles['token-editor-field-operator']), index: index }, renderOperator(index))),
92
+ React.createElement("div", { className: styles['token-editor-grouped-grid-cell'] },
93
+ React.createElement(TokenEditorField, { isNarrow: isNarrow, label: i18nStrings.valueText, labelId: valueLabelId, className: clsx(styles['token-editor-grouped-field-value'], testUtilStyles['token-editor-field-value']), index: index }, renderValue(index))),
94
+ React.createElement("div", { className: styles['token-editor-grouped-grid-cell'] }, supportsGroups && (React.createElement("div", { className: styles['token-editor-grouped-remove-token'] },
95
+ React.createElement(TokenEditorRemoveActions, { isNarrow: isNarrow, ariaLabel: i18nStrings.tokenEditorTokenActionsLabel(token), disabled: tokens.length === 1, items: [
96
+ { id: 'remove', text: i18nStrings.tokenEditorTokenRemoveLabel(token) },
97
+ { id: 'remove-from-group', text: i18nStrings.tokenEditorTokenRemoveFromGroupLabel(token) },
98
+ ], onItemClick: itemId => {
99
+ switch (itemId) {
100
+ case 'remove':
101
+ return onRemove(index);
102
+ case 'remove-from-group':
103
+ return onRemoveFromGroup(index);
104
+ }
105
+ }, index: index })))))))));
106
+ }
107
+ function TokenEditorField({ isNarrow, label, labelId, children, className, index, }) {
108
+ return isNarrow ? (React.createElement(InternalFormField, { label: label, className: className, "data-testindex": index }, children)) : (React.createElement(FormFieldContext.Provider, { value: { ariaLabelledby: labelId } },
109
+ React.createElement(InternalFormField, { className: className, "data-testindex": index }, children)));
110
+ }
111
+ function TokenEditorRemoveActions({ isNarrow, ariaLabel, disabled, items, onItemClick, index, }) {
112
+ return isNarrow ? (React.createElement(InternalButtonDropdown, { variant: "normal", ariaLabel: ariaLabel, items: items.slice(1), onItemClick: ({ detail }) => onItemClick(detail.id), disabled: disabled, mainAction: { text: items[0].text, onClick: () => onItemClick(items[0].id), disabled }, className: testUtilStyles['token-editor-token-remove-actions'], "data-testindex": index })) : (React.createElement(InternalButtonDropdown, { variant: "icon", ariaLabel: ariaLabel, items: items, onItemClick: ({ detail }) => onItemClick(detail.id), disabled: disabled, className: testUtilStyles['token-editor-token-remove-actions'], "data-testindex": index }));
113
+ }
114
+ //# sourceMappingURL=token-editor-grouped.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-editor-grouped.js","sourceRoot":"","sources":["../../../src/property-filter/token-editor-grouped.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport InternalButton from '../button/internal';\nimport { ButtonDropdownProps } from '../button-dropdown/interfaces';\nimport InternalButtonDropdown from '../button-dropdown/internal';\nimport InternalFormField from '../form-field/internal';\nimport { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';\nimport { FormFieldContext } from '../internal/context/form-field-context';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { getAllowedOperators } from './controller';\nimport { getFormattedToken } from './i18n-utils';\nimport {\n ComparisonOperator,\n FormattedToken,\n GroupText,\n I18nStrings,\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalToken,\n LoadItemsDetail,\n} from './interfaces';\nimport { OperatorInput, PropertyInput, ValueInput } from './token-editor';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface I18nStringsExt {\n tokenEditorTokenActionsLabel: (token: FormattedToken) => string;\n tokenEditorTokenRemoveLabel: (token: FormattedToken) => string;\n tokenEditorTokenRemoveFromGroupLabel: (token: FormattedToken) => string;\n tokenEditorAddNewTokenLabel: string;\n tokenEditorAddTokenActionsLabel: string;\n tokenEditorAddExistingTokenLabel: (token: FormattedToken) => string;\n}\n\nexport interface TokenEditorProps {\n supportsGroups: boolean;\n asyncProperties?: boolean;\n asyncProps: DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n filteringOptions: readonly InternalFilteringOption[];\n i18nStrings: I18nStrings & I18nStringsExt;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n onSubmit: () => void;\n onDismiss: () => void;\n standaloneTokens: InternalToken[];\n onChangeStandalone: (newStandalone: InternalToken[]) => void;\n tempGroup: InternalToken[];\n onChangeTempGroup: (token: InternalToken[]) => void;\n}\n\nexport function TokenEditor({\n supportsGroups,\n asyncProperties,\n asyncProps,\n customGroupsText,\n freeTextFiltering,\n filteringProperties,\n filteringOptions,\n i18nStrings,\n onLoadItems,\n onSubmit,\n onDismiss,\n standaloneTokens,\n onChangeStandalone,\n tempGroup,\n onChangeTempGroup,\n}: TokenEditorProps) {\n const groups = tempGroup.map((temporaryToken, index) => {\n const setTemporaryToken = (newToken: InternalToken) => {\n const copy = [...tempGroup];\n copy[index] = newToken;\n onChangeTempGroup(copy);\n };\n const property = temporaryToken.property;\n const onChangePropertyKey = (newPropertyKey: undefined | string) => {\n const filteringProperty = filteringProperties.reduce<InternalFilteringProperty | undefined>(\n (acc, property) => (property.propertyKey === newPropertyKey ? property : acc),\n undefined\n );\n const allowedOperators = filteringProperty ? getAllowedOperators(filteringProperty) : freeTextFiltering.operators;\n const operator =\n temporaryToken.operator && allowedOperators.indexOf(temporaryToken.operator) !== -1\n ? temporaryToken.operator\n : allowedOperators[0];\n const matchedProperty = filteringProperties.find(property => property.propertyKey === newPropertyKey) ?? null;\n setTemporaryToken({ ...temporaryToken, property: matchedProperty, operator, value: null });\n };\n\n const operator = temporaryToken.operator;\n const onChangeOperator = (newOperator: ComparisonOperator) => {\n setTemporaryToken({ ...temporaryToken, operator: newOperator });\n };\n\n const value = temporaryToken.value;\n const onChangeValue = (newValue: unknown) => {\n setTemporaryToken({ ...temporaryToken, value: newValue });\n };\n\n return { token: temporaryToken, property, onChangePropertyKey, operator, onChangeOperator, value, onChangeValue };\n });\n return (\n <div className={styles['token-editor-grouped']}>\n <TokenEditorFields\n supportsGroups={supportsGroups}\n tokens={groups.map(group => getFormattedToken(group.token, i18nStrings))}\n onRemove={index => {\n const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);\n onChangeTempGroup(updated);\n }}\n onRemoveFromGroup={index => {\n const removedToken = tempGroup[index];\n const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);\n onChangeTempGroup(updated);\n onChangeStandalone([...standaloneTokens, removedToken]);\n }}\n renderProperty={index => (\n <PropertyInput\n property={groups[index].property}\n onChangePropertyKey={groups[index].onChangePropertyKey}\n asyncProps={asyncProperties ? asyncProps : null}\n filteringProperties={filteringProperties}\n onLoadItems={onLoadItems}\n customGroupsText={customGroupsText}\n i18nStrings={i18nStrings}\n freeTextFiltering={freeTextFiltering}\n />\n )}\n renderOperator={index => (\n <OperatorInput\n property={groups[index].property}\n operator={groups[index].operator}\n onChangeOperator={groups[index].onChangeOperator}\n i18nStrings={i18nStrings}\n freeTextFiltering={freeTextFiltering}\n triggerVariant=\"label\"\n />\n )}\n renderValue={index => (\n <ValueInput\n property={groups[index].property}\n operator={groups[index].operator}\n value={groups[index].value}\n onChangeValue={groups[index].onChangeValue}\n asyncProps={asyncProps}\n filteringOptions={filteringOptions}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n />\n )}\n i18nStrings={i18nStrings}\n />\n\n {supportsGroups && (\n <div\n className={clsx(styles['token-editor-grouped-add-token'], testUtilStyles['token-editor-token-add-actions'])}\n >\n <InternalButtonDropdown\n variant=\"normal\"\n ariaLabel={i18nStrings.tokenEditorAddTokenActionsLabel}\n items={standaloneTokens.map((token, index) => ({\n id: index.toString(),\n text: i18nStrings.tokenEditorAddExistingTokenLabel(getFormattedToken(token, i18nStrings)),\n }))}\n onItemClick={({ detail }) => {\n const index = parseInt(detail.id);\n if (!isNaN(index) && standaloneTokens[index]) {\n const addedToken = standaloneTokens[index];\n const updated = standaloneTokens.filter((_, existingIndex) => existingIndex !== index);\n onChangeStandalone(updated);\n onChangeTempGroup([...tempGroup, addedToken]);\n }\n }}\n disabled={standaloneTokens.length === 0}\n mainAction={{\n text: i18nStrings.tokenEditorAddNewTokenLabel,\n onClick: () => onChangeTempGroup([...tempGroup, { property: null, operator: ':', value: null }]),\n }}\n />\n </div>\n )}\n\n <div className={styles['token-editor-grouped-actions']}>\n <InternalButton\n formAction=\"none\"\n variant=\"link\"\n className={clsx(styles['token-editor-grouped-cancel'], testUtilStyles['token-editor-cancel'])}\n onClick={onDismiss}\n >\n {i18nStrings.cancelActionText}\n </InternalButton>\n <InternalButton\n className={clsx(styles['token-editor-grouped-submit'], testUtilStyles['token-editor-submit'])}\n formAction=\"none\"\n onClick={onSubmit}\n >\n {i18nStrings.applyActionText}\n </InternalButton>\n </div>\n </div>\n );\n}\n\ninterface TokenEditorLayout {\n tokens: FormattedToken[];\n supportsGroups: boolean;\n onRemove: (index: number) => void;\n onRemoveFromGroup: (index: number) => void;\n renderProperty: (index: number) => React.ReactNode;\n renderOperator: (index: number) => React.ReactNode;\n renderValue: (index: number) => React.ReactNode;\n i18nStrings: I18nStrings & I18nStringsExt;\n}\n\nfunction TokenEditorFields({\n tokens,\n supportsGroups,\n onRemove,\n onRemoveFromGroup,\n renderProperty,\n renderOperator,\n renderValue,\n i18nStrings,\n}: TokenEditorLayout) {\n const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);\n const isNarrow = breakpoint === 'default';\n\n const propertyLabelId = useUniqueId();\n const operatorLabelId = useUniqueId();\n const valueLabelId = useUniqueId();\n const headers = (\n <div className={styles['token-editor-grouped-grid-group']}>\n <div id={propertyLabelId} className={styles['token-editor-grouped-grid-header']}>\n {i18nStrings.propertyText}\n </div>\n <div id={operatorLabelId} className={styles['token-editor-grouped-grid-header']}>\n {i18nStrings.operatorText}\n </div>\n <div id={valueLabelId} className={styles['token-editor-grouped-grid-header']}>\n {i18nStrings.valueText}\n </div>\n <div className={styles['token-editor-grouped-grid-header']}></div>\n </div>\n );\n\n return (\n <div\n className={clsx(styles['token-editor-grouped-grid'], isNarrow && styles['token-editor-narrow'])}\n ref={breakpointRef}\n >\n {!isNarrow && headers}\n\n {tokens.map((token, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`${token.propertyLabel} ${token.operator} ${token.value}`}\n className={styles['token-editor-grouped-grid-group']}\n >\n <div className={styles['token-editor-grouped-grid-cell']}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.propertyText}\n labelId={propertyLabelId}\n className={clsx(\n styles['token-editor-grouped-field-property'],\n testUtilStyles['token-editor-field-property']\n )}\n index={index}\n >\n {renderProperty(index)}\n </TokenEditorField>\n </div>\n\n <div className={styles['token-editor-grouped-grid-cell']}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.operatorText}\n labelId={operatorLabelId}\n className={clsx(\n styles['token-editor-grouped-field-operator'],\n testUtilStyles['token-editor-field-operator']\n )}\n index={index}\n >\n {renderOperator(index)}\n </TokenEditorField>\n </div>\n\n <div className={styles['token-editor-grouped-grid-cell']}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.valueText}\n labelId={valueLabelId}\n className={clsx(styles['token-editor-grouped-field-value'], testUtilStyles['token-editor-field-value'])}\n index={index}\n >\n {renderValue(index)}\n </TokenEditorField>\n </div>\n\n <div className={styles['token-editor-grouped-grid-cell']}>\n {supportsGroups && (\n <div className={styles['token-editor-grouped-remove-token']}>\n <TokenEditorRemoveActions\n isNarrow={isNarrow}\n ariaLabel={i18nStrings.tokenEditorTokenActionsLabel(token)}\n disabled={tokens.length === 1}\n items={[\n { id: 'remove', text: i18nStrings.tokenEditorTokenRemoveLabel(token) },\n { id: 'remove-from-group', text: i18nStrings.tokenEditorTokenRemoveFromGroupLabel(token) },\n ]}\n onItemClick={itemId => {\n switch (itemId) {\n case 'remove':\n return onRemove(index);\n case 'remove-from-group':\n return onRemoveFromGroup(index);\n }\n }}\n index={index}\n />\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction TokenEditorField({\n isNarrow,\n label,\n labelId,\n children,\n className,\n index,\n}: {\n isNarrow: boolean;\n label: React.ReactNode;\n labelId: string;\n children: React.ReactNode;\n className: string;\n index: number;\n}) {\n return isNarrow ? (\n <InternalFormField label={label} className={className} data-testindex={index}>\n {children}\n </InternalFormField>\n ) : (\n <FormFieldContext.Provider value={{ ariaLabelledby: labelId }}>\n <InternalFormField className={className} data-testindex={index}>\n {children}\n </InternalFormField>\n </FormFieldContext.Provider>\n );\n}\n\nfunction TokenEditorRemoveActions({\n isNarrow,\n ariaLabel,\n disabled,\n items,\n onItemClick,\n index,\n}: {\n isNarrow: boolean;\n ariaLabel: string;\n disabled: boolean;\n items: ButtonDropdownProps.Item[];\n onItemClick: (itemId: string) => void;\n index: number;\n}) {\n return isNarrow ? (\n <InternalButtonDropdown\n variant=\"normal\"\n ariaLabel={ariaLabel}\n items={items.slice(1)}\n onItemClick={({ detail }) => onItemClick(detail.id)}\n disabled={disabled}\n mainAction={{ text: items[0].text, onClick: () => onItemClick(items[0].id), disabled }}\n className={testUtilStyles['token-editor-token-remove-actions']}\n data-testindex={index}\n />\n ) : (\n <InternalButtonDropdown\n variant=\"icon\"\n ariaLabel={ariaLabel}\n items={items}\n onItemClick={({ detail }) => onItemClick(detail.id)}\n disabled={disabled}\n className={testUtilStyles['token-editor-token-remove-actions']}\n data-testindex={index}\n />\n );\n}\n"]}
@@ -1,7 +1,38 @@
1
1
  /// <reference types="react" />
2
2
  import { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';
3
3
  import { NonCancelableEventHandler } from '../internal/events';
4
- import { GroupText, I18nStrings, InternalFilteringOption, InternalFilteringProperty, InternalFreeTextFiltering, InternalToken, LoadItemsDetail, Token } from './interfaces';
4
+ import { ComparisonOperator, GroupText, I18nStrings, InternalFilteringOption, InternalFilteringProperty, InternalFreeTextFiltering, InternalToken, LoadItemsDetail } from './interfaces';
5
+ interface PropertyInputProps {
6
+ asyncProps: null | DropdownStatusProps;
7
+ customGroupsText: readonly GroupText[];
8
+ freeTextFiltering: InternalFreeTextFiltering;
9
+ filteringProperties: readonly InternalFilteringProperty[];
10
+ i18nStrings: I18nStrings;
11
+ onChangePropertyKey: (propertyKey: undefined | string) => void;
12
+ onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;
13
+ property: null | InternalFilteringProperty;
14
+ }
15
+ export declare function PropertyInput({ property, onChangePropertyKey, asyncProps, filteringProperties, onLoadItems, customGroupsText, i18nStrings, freeTextFiltering, }: PropertyInputProps): JSX.Element;
16
+ interface OperatorInputProps {
17
+ i18nStrings: I18nStrings;
18
+ onChangeOperator: (operator: ComparisonOperator) => void;
19
+ operator: undefined | ComparisonOperator;
20
+ property: null | InternalFilteringProperty;
21
+ freeTextFiltering: InternalFreeTextFiltering;
22
+ triggerVariant: 'option' | 'label';
23
+ }
24
+ export declare function OperatorInput({ property, operator, onChangeOperator, i18nStrings, freeTextFiltering, triggerVariant, }: OperatorInputProps): JSX.Element;
25
+ interface ValueInputProps {
26
+ asyncProps: DropdownStatusProps;
27
+ filteringOptions: readonly InternalFilteringOption[];
28
+ i18nStrings: I18nStrings;
29
+ onChangeValue: (value: string) => void;
30
+ onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;
31
+ operator: undefined | ComparisonOperator;
32
+ property: null | InternalFilteringProperty;
33
+ value: undefined | string;
34
+ }
35
+ export declare function ValueInput({ property, operator, value, onChangeValue, asyncProps, filteringOptions, onLoadItems, i18nStrings, }: ValueInputProps): JSX.Element;
5
36
  interface TokenEditorProps {
6
37
  asyncProperties?: boolean;
7
38
  asyncProps: DropdownStatusProps;
@@ -12,11 +43,11 @@ interface TokenEditorProps {
12
43
  filteringOptions: readonly InternalFilteringOption[];
13
44
  i18nStrings: I18nStrings;
14
45
  onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;
15
- setToken: (newToken: Token) => void;
46
+ onSubmit: () => void;
16
47
  onDismiss: () => void;
17
48
  temporaryToken: InternalToken;
18
49
  onChangeTemporaryToken: (token: InternalToken) => void;
19
50
  }
20
- export declare function TokenEditor({ asyncProperties, asyncProps, customGroupsText, freeTextFiltering, filteringProperties, filteringOptions, i18nStrings, onLoadItems, setToken, onDismiss, temporaryToken, onChangeTemporaryToken, }: TokenEditorProps): JSX.Element;
51
+ export declare function TokenEditor({ asyncProperties, asyncProps, customGroupsText, freeTextFiltering, filteringProperties, filteringOptions, i18nStrings, onLoadItems, onSubmit, onDismiss, temporaryToken, onChangeTemporaryToken, }: TokenEditorProps): JSX.Element;
21
52
  export {};
22
53
  //# sourceMappingURL=token-editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-editor.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAEL,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AAoJtB,UAAU,gBAAgB;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,aAAa,CAAC;IAC9B,sBAAsB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CACxD;AAED,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,cAAc,EACd,sBAAsB,GACvB,EAAE,gBAAgB,eAwGlB"}
1
+ {"version":3,"file":"token-editor.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor.tsx"],"names":[],"mappings":"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"}
@@ -8,10 +8,9 @@ import InternalFormField from '../form-field/internal';
8
8
  import InternalSelect from '../select/internal';
9
9
  import { getAllowedOperators, getPropertySuggestions, operatorToDescription } from './controller';
10
10
  import { useLoadItems } from './use-load-items';
11
- import { matchTokenValue } from './utils';
12
11
  import styles from './styles.css.js';
13
12
  import testUtilStyles from './test-classes/styles.css.js';
14
- function PropertyInput({ property, onChangePropertyKey, asyncProps, filteringProperties, onLoadItems, customGroupsText, i18nStrings, freeTextFiltering, }) {
13
+ export function PropertyInput({ property, onChangePropertyKey, asyncProps, filteringProperties, onLoadItems, customGroupsText, i18nStrings, freeTextFiltering, }) {
15
14
  var _a;
16
15
  const propertySelectHandlers = useLoadItems(onLoadItems);
17
16
  const asyncPropertySelectProps = asyncProps ? Object.assign(Object.assign({}, asyncProps), propertySelectHandlers) : {};
@@ -34,13 +33,13 @@ function PropertyInput({ property, onChangePropertyKey, asyncProps, filteringPro
34
33
  }
35
34
  : allPropertiesOption, onChange: e => onChangePropertyKey(e.detail.selectedOption.value) }, asyncPropertySelectProps)));
36
35
  }
37
- function OperatorInput({ property, operator, onChangeOperator, i18nStrings, freeTextFiltering }) {
36
+ export function OperatorInput({ property, operator, onChangeOperator, i18nStrings, freeTextFiltering, triggerVariant, }) {
38
37
  const operatorOptions = (property ? getAllowedOperators(property) : freeTextFiltering.operators).map(operator => ({
39
38
  value: operator,
40
39
  label: operator,
41
40
  description: operatorToDescription(operator, i18nStrings),
42
41
  }));
43
- return (React.createElement(InternalSelect, { options: operatorOptions, triggerVariant: "option", selectedOption: operator
42
+ return (React.createElement(InternalSelect, { options: operatorOptions, triggerVariant: triggerVariant, selectedOption: operator
44
43
  ? {
45
44
  value: operator,
46
45
  label: operator,
@@ -48,7 +47,7 @@ function OperatorInput({ property, operator, onChangeOperator, i18nStrings, free
48
47
  }
49
48
  : null, onChange: e => onChangeOperator(e.detail.selectedOption.value) }));
50
49
  }
51
- function ValueInput({ property, operator, value, onChangeValue, asyncProps, filteringOptions, onLoadItems, i18nStrings, }) {
50
+ export function ValueInput({ property, operator, value, onChangeValue, asyncProps, filteringOptions, onLoadItems, i18nStrings, }) {
52
51
  var _a, _b, _c;
53
52
  const valueOptions = property
54
53
  ? filteringOptions
@@ -62,7 +61,7 @@ function ValueInput({ property, operator, value, onChangeValue, asyncProps, filt
62
61
  const OperatorForm = (property === null || property === void 0 ? void 0 : property.propertyKey) && operator && (property === null || property === void 0 ? void 0 : property.getValueFormRenderer(operator));
63
62
  return OperatorForm ? (React.createElement(OperatorForm, { value: value, onChange: onChangeValue, operator: operator })) : (React.createElement(InternalAutosuggest, Object.assign({ enteredTextLabel: (_a = i18nStrings.enteredTextLabel) !== null && _a !== void 0 ? _a : (value => value), value: (_c = (_b = matchedOption === null || matchedOption === void 0 ? void 0 : matchedOption.label) !== null && _b !== void 0 ? _b : value) !== null && _c !== void 0 ? _c : '', clearAriaLabel: i18nStrings.clearAriaLabel, onChange: e => onChangeValue(e.detail.value), disabled: !operator, options: valueOptions }, asyncValueAutosuggestProps, { virtualScroll: true })));
64
63
  }
65
- export function TokenEditor({ asyncProperties, asyncProps, customGroupsText, freeTextFiltering, filteringProperties, filteringOptions, i18nStrings, onLoadItems, setToken, onDismiss, temporaryToken, onChangeTemporaryToken, }) {
64
+ export function TokenEditor({ asyncProperties, asyncProps, customGroupsText, freeTextFiltering, filteringProperties, filteringOptions, i18nStrings, onLoadItems, onSubmit, onDismiss, temporaryToken, onChangeTemporaryToken, }) {
66
65
  const property = temporaryToken.property;
67
66
  const onChangePropertyKey = (newPropertyKey) => {
68
67
  var _a;
@@ -82,24 +81,20 @@ export function TokenEditor({ asyncProperties, asyncProps, customGroupsText, fre
82
81
  const onChangeValue = (newValue) => {
83
82
  onChangeTemporaryToken(Object.assign(Object.assign({}, temporaryToken), { value: newValue }));
84
83
  };
85
- const onApply = () => {
86
- setToken(matchTokenValue(temporaryToken, filteringOptions));
87
- onDismiss();
88
- };
89
84
  const onFormSubmit = (event) => {
90
85
  event.preventDefault();
91
- onApply();
86
+ onSubmit();
92
87
  };
93
88
  return (React.createElement("div", { className: styles['token-editor'] },
94
89
  React.createElement("form", { className: styles['token-editor-form'], onSubmit: onFormSubmit },
95
90
  React.createElement(InternalFormField, { label: i18nStrings.propertyText, className: clsx(styles['token-editor-field-property'], testUtilStyles['token-editor-field-property']) },
96
91
  React.createElement(PropertyInput, { property: property, onChangePropertyKey: onChangePropertyKey, asyncProps: asyncProperties ? asyncProps : null, filteringProperties: filteringProperties, onLoadItems: onLoadItems, customGroupsText: customGroupsText, i18nStrings: i18nStrings, freeTextFiltering: freeTextFiltering })),
97
92
  React.createElement(InternalFormField, { label: i18nStrings.operatorText, className: clsx(styles['token-editor-field-operator'], testUtilStyles['token-editor-field-operator']) },
98
- React.createElement(OperatorInput, { property: property, operator: operator, onChangeOperator: onChangeOperator, i18nStrings: i18nStrings, freeTextFiltering: freeTextFiltering })),
93
+ React.createElement(OperatorInput, { property: property, operator: operator, onChangeOperator: onChangeOperator, i18nStrings: i18nStrings, freeTextFiltering: freeTextFiltering, triggerVariant: "option" })),
99
94
  React.createElement(InternalFormField, { label: i18nStrings.valueText, className: clsx(styles['token-editor-field-value'], testUtilStyles['token-editor-field-value']) },
100
95
  React.createElement(ValueInput, { property: property, operator: operator, value: value, onChangeValue: onChangeValue, asyncProps: asyncProps, filteringOptions: filteringOptions, onLoadItems: onLoadItems, i18nStrings: i18nStrings }))),
101
96
  React.createElement("div", { className: styles['token-editor-actions'] },
102
97
  React.createElement(InternalButton, { formAction: "none", variant: "link", className: clsx(styles['token-editor-cancel'], testUtilStyles['token-editor-cancel']), onClick: onDismiss }, i18nStrings.cancelActionText),
103
- React.createElement(InternalButton, { className: clsx(styles['token-editor-submit'], testUtilStyles['token-editor-submit']), formAction: "none", onClick: onApply }, i18nStrings.applyActionText))));
98
+ React.createElement(InternalButton, { className: clsx(styles['token-editor-submit'], testUtilStyles['token-editor-submit']), formAction: "none", onClick: onSubmit }, i18nStrings.applyActionText))));
104
99
  }
105
100
  //# sourceMappingURL=token-editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-editor.js","sourceRoot":"","sources":["../../../src/property-filter/token-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { FormEvent } from 'react';\nimport clsx from 'clsx';\n\nimport InternalAutosuggest from '../autosuggest/internal';\nimport InternalButton from '../button/internal';\nimport InternalFormField from '../form-field/internal';\nimport { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { SelectProps } from '../select/interfaces';\nimport InternalSelect from '../select/internal';\nimport { getAllowedOperators, getPropertySuggestions, operatorToDescription } from './controller';\nimport {\n ComparisonOperator,\n GroupText,\n I18nStrings,\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalToken,\n LoadItemsDetail,\n Token,\n} from './interfaces';\nimport { useLoadItems } from './use-load-items';\nimport { matchTokenValue } from './utils';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface PropertyInputProps {\n asyncProps: null | DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n i18nStrings: I18nStrings;\n onChangePropertyKey: (propertyKey: undefined | string) => void;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n property: null | InternalFilteringProperty;\n}\n\nfunction PropertyInput({\n property,\n onChangePropertyKey,\n asyncProps,\n filteringProperties,\n onLoadItems,\n customGroupsText,\n i18nStrings,\n freeTextFiltering,\n}: PropertyInputProps) {\n const propertySelectHandlers = useLoadItems(onLoadItems);\n const asyncPropertySelectProps = asyncProps ? { ...asyncProps, ...propertySelectHandlers } : {};\n const propertyOptions: (SelectProps.Option | SelectProps.OptionGroup)[] = getPropertySuggestions(\n filteringProperties,\n customGroupsText,\n i18nStrings,\n ({ propertyKey, propertyLabel }) => ({\n value: propertyKey,\n label: propertyLabel,\n dontCloseOnSelect: true,\n })\n );\n\n const allPropertiesOption = {\n label: i18nStrings.allPropertiesLabel,\n value: undefined,\n };\n if (!freeTextFiltering.disabled) {\n propertyOptions.unshift(allPropertiesOption);\n }\n return (\n <InternalSelect\n options={propertyOptions}\n selectedOption={\n property\n ? {\n value: property.propertyKey ?? undefined,\n label: property.propertyLabel,\n }\n : allPropertiesOption\n }\n onChange={e => onChangePropertyKey(e.detail.selectedOption.value)}\n {...asyncPropertySelectProps}\n />\n );\n}\n\ninterface OperatorInputProps {\n i18nStrings: I18nStrings;\n onChangeOperator: (operator: ComparisonOperator) => void;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n freeTextFiltering: InternalFreeTextFiltering;\n}\n\nfunction OperatorInput({ property, operator, onChangeOperator, i18nStrings, freeTextFiltering }: OperatorInputProps) {\n const operatorOptions = (property ? getAllowedOperators(property) : freeTextFiltering.operators).map(operator => ({\n value: operator,\n label: operator,\n description: operatorToDescription(operator, i18nStrings),\n }));\n return (\n <InternalSelect\n options={operatorOptions}\n triggerVariant=\"option\"\n selectedOption={\n operator\n ? {\n value: operator,\n label: operator,\n description: operatorToDescription(operator, i18nStrings),\n }\n : null\n }\n onChange={e => onChangeOperator(e.detail.selectedOption.value as ComparisonOperator)}\n />\n );\n}\n\ninterface ValueInputProps {\n asyncProps: DropdownStatusProps;\n filteringOptions: readonly InternalFilteringOption[];\n i18nStrings: I18nStrings;\n onChangeValue: (value: string) => void;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n value: undefined | string;\n}\n\nfunction ValueInput({\n property,\n operator,\n value,\n onChangeValue,\n asyncProps,\n filteringOptions,\n onLoadItems,\n i18nStrings,\n}: ValueInputProps) {\n const valueOptions = property\n ? filteringOptions\n .filter(option => option.property?.propertyKey === property.propertyKey)\n .map(({ label, value }) => ({ label, value }))\n : [];\n\n const valueAutosuggestHandlers = useLoadItems(onLoadItems, '', property?.externalProperty);\n const asyncValueAutosuggestProps = property?.propertyKey\n ? { ...valueAutosuggestHandlers, ...asyncProps }\n : { empty: asyncProps.empty };\n const [matchedOption] = valueOptions.filter(option => option.value === value);\n\n const OperatorForm = property?.propertyKey && operator && property?.getValueFormRenderer(operator);\n\n return OperatorForm ? (\n <OperatorForm value={value} onChange={onChangeValue} operator={operator} />\n ) : (\n <InternalAutosuggest\n enteredTextLabel={i18nStrings.enteredTextLabel ?? (value => value)}\n value={matchedOption?.label ?? value ?? ''}\n clearAriaLabel={i18nStrings.clearAriaLabel}\n onChange={e => onChangeValue(e.detail.value)}\n disabled={!operator}\n options={valueOptions}\n {...asyncValueAutosuggestProps}\n virtualScroll={true}\n />\n );\n}\n\ninterface TokenEditorProps {\n asyncProperties?: boolean;\n asyncProps: DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n disabled?: boolean;\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n filteringOptions: readonly InternalFilteringOption[];\n i18nStrings: I18nStrings;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n setToken: (newToken: Token) => void;\n onDismiss: () => void;\n temporaryToken: InternalToken;\n onChangeTemporaryToken: (token: InternalToken) => void;\n}\n\nexport function TokenEditor({\n asyncProperties,\n asyncProps,\n customGroupsText,\n freeTextFiltering,\n filteringProperties,\n filteringOptions,\n i18nStrings,\n onLoadItems,\n setToken,\n onDismiss,\n temporaryToken,\n onChangeTemporaryToken,\n}: TokenEditorProps) {\n const property = temporaryToken.property;\n const onChangePropertyKey = (newPropertyKey: undefined | string) => {\n const filteringProperty = filteringProperties.reduce<InternalFilteringProperty | undefined>(\n (acc, property) => (property.propertyKey === newPropertyKey ? property : acc),\n undefined\n );\n const allowedOperators = filteringProperty ? getAllowedOperators(filteringProperty) : freeTextFiltering.operators;\n const operator =\n temporaryToken.operator && allowedOperators.indexOf(temporaryToken.operator) !== -1\n ? temporaryToken.operator\n : allowedOperators[0];\n const matchedProperty = filteringProperties.find(property => property.propertyKey === newPropertyKey) ?? null;\n onChangeTemporaryToken({ ...temporaryToken, property: matchedProperty, operator, value: null });\n };\n\n const operator = temporaryToken.operator;\n const onChangeOperator = (newOperator: ComparisonOperator) => {\n onChangeTemporaryToken({ ...temporaryToken, operator: newOperator });\n };\n\n const value = temporaryToken.value;\n const onChangeValue = (newValue: string) => {\n onChangeTemporaryToken({ ...temporaryToken, value: newValue });\n };\n\n const onApply = () => {\n setToken(matchTokenValue(temporaryToken, filteringOptions));\n onDismiss();\n };\n\n const onFormSubmit = (event: FormEvent) => {\n event.preventDefault();\n onApply();\n };\n\n return (\n <div className={styles['token-editor']}>\n <form className={styles['token-editor-form']} onSubmit={onFormSubmit}>\n <InternalFormField\n label={i18nStrings.propertyText}\n className={clsx(styles['token-editor-field-property'], testUtilStyles['token-editor-field-property'])}\n >\n <PropertyInput\n property={property}\n onChangePropertyKey={onChangePropertyKey}\n asyncProps={asyncProperties ? asyncProps : null}\n filteringProperties={filteringProperties}\n onLoadItems={onLoadItems}\n customGroupsText={customGroupsText}\n i18nStrings={i18nStrings}\n freeTextFiltering={freeTextFiltering}\n />\n </InternalFormField>\n\n <InternalFormField\n label={i18nStrings.operatorText}\n className={clsx(styles['token-editor-field-operator'], testUtilStyles['token-editor-field-operator'])}\n >\n <OperatorInput\n property={property}\n operator={operator}\n onChangeOperator={onChangeOperator}\n i18nStrings={i18nStrings}\n freeTextFiltering={freeTextFiltering}\n />\n </InternalFormField>\n\n <InternalFormField\n label={i18nStrings.valueText}\n className={clsx(styles['token-editor-field-value'], testUtilStyles['token-editor-field-value'])}\n >\n <ValueInput\n property={property}\n operator={operator}\n value={value}\n onChangeValue={onChangeValue}\n asyncProps={asyncProps}\n filteringOptions={filteringOptions}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n />\n </InternalFormField>\n </form>\n\n <div className={styles['token-editor-actions']}>\n <InternalButton\n formAction=\"none\"\n variant=\"link\"\n className={clsx(styles['token-editor-cancel'], testUtilStyles['token-editor-cancel'])}\n onClick={onDismiss}\n >\n {i18nStrings.cancelActionText}\n </InternalButton>\n <InternalButton\n className={clsx(styles['token-editor-submit'], testUtilStyles['token-editor-submit'])}\n formAction=\"none\"\n onClick={onApply}\n >\n {i18nStrings.applyActionText}\n </InternalButton>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"token-editor.js","sourceRoot":"","sources":["../../../src/property-filter/token-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { FormEvent } from 'react';\nimport clsx from 'clsx';\n\nimport InternalAutosuggest from '../autosuggest/internal';\nimport InternalButton from '../button/internal';\nimport InternalFormField from '../form-field/internal';\nimport { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';\nimport { NonCancelableEventHandler } from '../internal/events';\nimport { SelectProps } from '../select/interfaces';\nimport InternalSelect from '../select/internal';\nimport { getAllowedOperators, getPropertySuggestions, operatorToDescription } from './controller';\nimport {\n ComparisonOperator,\n GroupText,\n I18nStrings,\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalToken,\n LoadItemsDetail,\n} from './interfaces';\nimport { useLoadItems } from './use-load-items';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface PropertyInputProps {\n asyncProps: null | DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n i18nStrings: I18nStrings;\n onChangePropertyKey: (propertyKey: undefined | string) => void;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n property: null | InternalFilteringProperty;\n}\n\nexport function PropertyInput({\n property,\n onChangePropertyKey,\n asyncProps,\n filteringProperties,\n onLoadItems,\n customGroupsText,\n i18nStrings,\n freeTextFiltering,\n}: PropertyInputProps) {\n const propertySelectHandlers = useLoadItems(onLoadItems);\n const asyncPropertySelectProps = asyncProps ? { ...asyncProps, ...propertySelectHandlers } : {};\n const propertyOptions: (SelectProps.Option | SelectProps.OptionGroup)[] = getPropertySuggestions(\n filteringProperties,\n customGroupsText,\n i18nStrings,\n ({ propertyKey, propertyLabel }) => ({\n value: propertyKey,\n label: propertyLabel,\n dontCloseOnSelect: true,\n })\n );\n\n const allPropertiesOption = {\n label: i18nStrings.allPropertiesLabel,\n value: undefined,\n };\n if (!freeTextFiltering.disabled) {\n propertyOptions.unshift(allPropertiesOption);\n }\n return (\n <InternalSelect\n options={propertyOptions}\n selectedOption={\n property\n ? {\n value: property.propertyKey ?? undefined,\n label: property.propertyLabel,\n }\n : allPropertiesOption\n }\n onChange={e => onChangePropertyKey(e.detail.selectedOption.value)}\n {...asyncPropertySelectProps}\n />\n );\n}\n\ninterface OperatorInputProps {\n i18nStrings: I18nStrings;\n onChangeOperator: (operator: ComparisonOperator) => void;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n freeTextFiltering: InternalFreeTextFiltering;\n triggerVariant: 'option' | 'label';\n}\n\nexport function OperatorInput({\n property,\n operator,\n onChangeOperator,\n i18nStrings,\n freeTextFiltering,\n triggerVariant,\n}: OperatorInputProps) {\n const operatorOptions = (property ? getAllowedOperators(property) : freeTextFiltering.operators).map(operator => ({\n value: operator,\n label: operator,\n description: operatorToDescription(operator, i18nStrings),\n }));\n return (\n <InternalSelect\n options={operatorOptions}\n triggerVariant={triggerVariant}\n selectedOption={\n operator\n ? {\n value: operator,\n label: operator,\n description: operatorToDescription(operator, i18nStrings),\n }\n : null\n }\n onChange={e => onChangeOperator(e.detail.selectedOption.value as ComparisonOperator)}\n />\n );\n}\n\ninterface ValueInputProps {\n asyncProps: DropdownStatusProps;\n filteringOptions: readonly InternalFilteringOption[];\n i18nStrings: I18nStrings;\n onChangeValue: (value: string) => void;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n value: undefined | string;\n}\n\nexport function ValueInput({\n property,\n operator,\n value,\n onChangeValue,\n asyncProps,\n filteringOptions,\n onLoadItems,\n i18nStrings,\n}: ValueInputProps) {\n const valueOptions = property\n ? filteringOptions\n .filter(option => option.property?.propertyKey === property.propertyKey)\n .map(({ label, value }) => ({ label, value }))\n : [];\n\n const valueAutosuggestHandlers = useLoadItems(onLoadItems, '', property?.externalProperty);\n const asyncValueAutosuggestProps = property?.propertyKey\n ? { ...valueAutosuggestHandlers, ...asyncProps }\n : { empty: asyncProps.empty };\n const [matchedOption] = valueOptions.filter(option => option.value === value);\n\n const OperatorForm = property?.propertyKey && operator && property?.getValueFormRenderer(operator);\n\n return OperatorForm ? (\n <OperatorForm value={value} onChange={onChangeValue} operator={operator} />\n ) : (\n <InternalAutosuggest\n enteredTextLabel={i18nStrings.enteredTextLabel ?? (value => value)}\n value={matchedOption?.label ?? value ?? ''}\n clearAriaLabel={i18nStrings.clearAriaLabel}\n onChange={e => onChangeValue(e.detail.value)}\n disabled={!operator}\n options={valueOptions}\n {...asyncValueAutosuggestProps}\n virtualScroll={true}\n />\n );\n}\n\ninterface TokenEditorProps {\n asyncProperties?: boolean;\n asyncProps: DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n disabled?: boolean;\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n filteringOptions: readonly InternalFilteringOption[];\n i18nStrings: I18nStrings;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n onSubmit: () => void;\n onDismiss: () => void;\n temporaryToken: InternalToken;\n onChangeTemporaryToken: (token: InternalToken) => void;\n}\n\nexport function TokenEditor({\n asyncProperties,\n asyncProps,\n customGroupsText,\n freeTextFiltering,\n filteringProperties,\n filteringOptions,\n i18nStrings,\n onLoadItems,\n onSubmit,\n onDismiss,\n temporaryToken,\n onChangeTemporaryToken,\n}: TokenEditorProps) {\n const property = temporaryToken.property;\n const onChangePropertyKey = (newPropertyKey: undefined | string) => {\n const filteringProperty = filteringProperties.reduce<InternalFilteringProperty | undefined>(\n (acc, property) => (property.propertyKey === newPropertyKey ? property : acc),\n undefined\n );\n const allowedOperators = filteringProperty ? getAllowedOperators(filteringProperty) : freeTextFiltering.operators;\n const operator =\n temporaryToken.operator && allowedOperators.indexOf(temporaryToken.operator) !== -1\n ? temporaryToken.operator\n : allowedOperators[0];\n const matchedProperty = filteringProperties.find(property => property.propertyKey === newPropertyKey) ?? null;\n onChangeTemporaryToken({ ...temporaryToken, property: matchedProperty, operator, value: null });\n };\n\n const operator = temporaryToken.operator;\n const onChangeOperator = (newOperator: ComparisonOperator) => {\n onChangeTemporaryToken({ ...temporaryToken, operator: newOperator });\n };\n\n const value = temporaryToken.value;\n const onChangeValue = (newValue: string) => {\n onChangeTemporaryToken({ ...temporaryToken, value: newValue });\n };\n\n const onFormSubmit = (event: FormEvent) => {\n event.preventDefault();\n onSubmit();\n };\n\n return (\n <div className={styles['token-editor']}>\n <form className={styles['token-editor-form']} onSubmit={onFormSubmit}>\n <InternalFormField\n label={i18nStrings.propertyText}\n className={clsx(styles['token-editor-field-property'], testUtilStyles['token-editor-field-property'])}\n >\n <PropertyInput\n property={property}\n onChangePropertyKey={onChangePropertyKey}\n asyncProps={asyncProperties ? asyncProps : null}\n filteringProperties={filteringProperties}\n onLoadItems={onLoadItems}\n customGroupsText={customGroupsText}\n i18nStrings={i18nStrings}\n freeTextFiltering={freeTextFiltering}\n />\n </InternalFormField>\n\n <InternalFormField\n label={i18nStrings.operatorText}\n className={clsx(styles['token-editor-field-operator'], testUtilStyles['token-editor-field-operator'])}\n >\n <OperatorInput\n property={property}\n operator={operator}\n onChangeOperator={onChangeOperator}\n i18nStrings={i18nStrings}\n freeTextFiltering={freeTextFiltering}\n triggerVariant=\"option\"\n />\n </InternalFormField>\n\n <InternalFormField\n label={i18nStrings.valueText}\n className={clsx(styles['token-editor-field-value'], testUtilStyles['token-editor-field-value'])}\n >\n <ValueInput\n property={property}\n operator={operator}\n value={value}\n onChangeValue={onChangeValue}\n asyncProps={asyncProps}\n filteringOptions={filteringOptions}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n />\n </InternalFormField>\n </form>\n\n <div className={styles['token-editor-actions']}>\n <InternalButton\n formAction=\"none\"\n variant=\"link\"\n className={clsx(styles['token-editor-cancel'], testUtilStyles['token-editor-cancel'])}\n onClick={onDismiss}\n >\n {i18nStrings.cancelActionText}\n </InternalButton>\n <InternalButton\n className={clsx(styles['token-editor-submit'], testUtilStyles['token-editor-submit'])}\n formAction=\"none\"\n onClick={onSubmit}\n >\n {i18nStrings.applyActionText}\n </InternalButton>\n </div>\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,EAEL,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AAKtB,UAAU,UAAU;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,SAAS,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,CAAC;IACpD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,qPAkBrB,UAAU,gBAuDZ,CAAC"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,EAEL,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,eAAe,EACf,KAAK,EACN,MAAM,cAAc,CAAC;AAMtB,UAAU,UAAU;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,SAAS,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,YAAY,EAAE,aAAa,KAAK,IAAI,CAAC;IACpD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,qPAkBrB,UAAU,gBA0DZ,CAAC"}
@@ -4,6 +4,7 @@ import React, { useRef, useState } from 'react';
4
4
  import FilteringToken from './filtering-token';
5
5
  import { getFormattedToken } from './i18n-utils';
6
6
  import { TokenEditor } from './token-editor';
7
+ import { matchTokenValue } from './utils';
7
8
  import styles from './styles.css.js';
8
9
  export const TokenButton = ({ token, operation = 'and', first, removeToken, setToken, setOperation, filteringProperties, filteringOptions, asyncProps, onLoadItems, i18nStrings, asyncProperties, hideOperations, customGroupsText, disabled, freeTextFiltering, expandToViewport, }) => {
9
10
  var _a, _b, _c, _d, _e, _f, _g;
@@ -17,7 +18,11 @@ export const TokenButton = ({ token, operation = 'and', first, removeToken, setT
17
18
  ariaLabel: `${formattedToken.propertyLabel} ${formattedToken.operator} ${formattedToken.value}`,
18
19
  dismissAriaLabel: (_b = (_a = i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.removeTokenButtonAriaLabel) === null || _a === void 0 ? void 0 : _a.call(i18nStrings, formattedToken)) !== null && _b !== void 0 ? _b : '',
19
20
  },
20
- ], showOperation: !first && !hideOperations, operation: operation, andText: (_c = i18nStrings.operationAndText) !== null && _c !== void 0 ? _c : '', orText: (_d = i18nStrings.operationOrText) !== null && _d !== void 0 ? _d : '', operationAriaLabel: (_e = i18nStrings.tokenOperatorAriaLabel) !== null && _e !== void 0 ? _e : '', onChangeOperation: setOperation, onDismissToken: removeToken, disabled: disabled, editorContent: React.createElement(TokenEditor, { setToken: setToken, filteringProperties: filteringProperties, filteringOptions: filteringOptions, temporaryToken: temporaryToken, onChangeTemporaryToken: setTemporaryToken, asyncProps: asyncProps, onLoadItems: onLoadItems, i18nStrings: i18nStrings, asyncProperties: asyncProperties, customGroupsText: customGroupsText, freeTextFiltering: freeTextFiltering, onDismiss: () => { var _a; return (_a = tokenRef.current) === null || _a === void 0 ? void 0 : _a.closeEditor(); } }), editorHeader: (_f = i18nStrings.editTokenHeader) !== null && _f !== void 0 ? _f : '', editorDismissAriaLabel: (_g = i18nStrings.dismissAriaLabel) !== null && _g !== void 0 ? _g : '', editorExpandToViewport: !!expandToViewport, onEditorOpen: () => setTemporaryToken(token),
21
+ ], showOperation: !first && !hideOperations, operation: operation, andText: (_c = i18nStrings.operationAndText) !== null && _c !== void 0 ? _c : '', orText: (_d = i18nStrings.operationOrText) !== null && _d !== void 0 ? _d : '', operationAriaLabel: (_e = i18nStrings.tokenOperatorAriaLabel) !== null && _e !== void 0 ? _e : '', onChangeOperation: setOperation, onDismissToken: removeToken, disabled: disabled, editorContent: React.createElement(TokenEditor, { filteringProperties: filteringProperties, filteringOptions: filteringOptions, temporaryToken: temporaryToken, onChangeTemporaryToken: setTemporaryToken, asyncProps: asyncProps, onLoadItems: onLoadItems, i18nStrings: i18nStrings, asyncProperties: asyncProperties, customGroupsText: customGroupsText, freeTextFiltering: freeTextFiltering, onDismiss: () => { var _a; return (_a = tokenRef.current) === null || _a === void 0 ? void 0 : _a.closeEditor(); }, onSubmit: () => {
22
+ var _a;
23
+ setToken(matchTokenValue(temporaryToken, filteringOptions));
24
+ (_a = tokenRef.current) === null || _a === void 0 ? void 0 : _a.closeEditor();
25
+ } }), editorHeader: (_f = i18nStrings.editTokenHeader) !== null && _f !== void 0 ? _f : '', editorDismissAriaLabel: (_g = i18nStrings.dismissAriaLabel) !== null && _g !== void 0 ? _g : '', editorExpandToViewport: !!expandToViewport, onEditorOpen: () => setTemporaryToken(token),
21
26
  // The properties below are only relevant for grouped tokens that are not supported
22
27
  // by the property filter component yet.
23
28
  groupOperation: operation, groupAriaLabel: '', groupEditAriaLabel: '', onChangeGroupOperation: () => { }, hasGroups: false }));