@cloudscape-design/components-themeable 3.0.1328 → 3.0.1329
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/lib/internal/manifest.json +1 -1
- package/lib/internal/scss/anchor-navigation/styles.scss +3 -0
- package/lib/internal/scss/expandable-section/styles.scss +1 -1
- package/lib/internal/scss/header/styles.scss +11 -0
- package/lib/internal/scss/internal/components/option/styles.scss +6 -2
- package/lib/internal/scss/internal/components/selectable-item/styles.scss +9 -8
- package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +173 -160
- package/lib/internal/scss/tree-view/tree-item/styles.scss +9 -4
- package/lib/internal/template/alert/styles.css.js +27 -27
- package/lib/internal/template/alert/styles.scoped.css +50 -50
- package/lib/internal/template/alert/styles.selectors.js +27 -27
- package/lib/internal/template/anchor-navigation/anchor-item/index.js +1 -1
- package/lib/internal/template/anchor-navigation/anchor-item/index.js.map +1 -1
- package/lib/internal/template/anchor-navigation/styles.css.js +8 -8
- package/lib/internal/template/anchor-navigation/styles.scoped.css +20 -18
- package/lib/internal/template/anchor-navigation/styles.selectors.js +8 -8
- package/lib/internal/template/annotation-context/annotation/styles.css.js +13 -13
- package/lib/internal/template/annotation-context/annotation/styles.scoped.css +21 -21
- package/lib/internal/template/annotation-context/annotation/styles.selectors.js +13 -13
- package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
- package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
- package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
- package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
- package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +262 -262
- package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +32 -32
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +89 -89
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +32 -32
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +4 -4
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +7 -7
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +4 -4
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +29 -29
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +66 -66
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +29 -29
- package/lib/internal/template/attribute-editor/styles.css.js +15 -15
- package/lib/internal/template/attribute-editor/styles.scoped.css +29 -29
- package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
- package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
- package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +30 -30
- package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
- package/lib/internal/template/button/styles.css.js +22 -22
- package/lib/internal/template/button/styles.scoped.css +256 -256
- package/lib/internal/template/button/styles.selectors.js +22 -22
- package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -21
- package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +37 -37
- package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -21
- package/lib/internal/template/checkbox/styles.css.js +3 -3
- package/lib/internal/template/checkbox/styles.scoped.css +11 -11
- package/lib/internal/template/checkbox/styles.selectors.js +3 -3
- package/lib/internal/template/content-layout/styles.css.js +14 -14
- package/lib/internal/template/content-layout/styles.scoped.css +27 -27
- package/lib/internal/template/content-layout/styles.selectors.js +14 -14
- package/lib/internal/template/dropdown/styles.css.js +20 -20
- package/lib/internal/template/dropdown/styles.scoped.css +49 -49
- package/lib/internal/template/dropdown/styles.selectors.js +20 -20
- package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.js +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
- package/lib/internal/template/expandable-section/styles.css.js +35 -35
- package/lib/internal/template/expandable-section/styles.scoped.css +70 -70
- package/lib/internal/template/expandable-section/styles.selectors.js +35 -35
- package/lib/internal/template/file-token-group/styles.css.js +23 -23
- package/lib/internal/template/file-token-group/styles.scoped.css +36 -36
- package/lib/internal/template/file-token-group/styles.selectors.js +23 -23
- package/lib/internal/template/flashbar/styles.css.js +50 -50
- package/lib/internal/template/flashbar/styles.scoped.css +192 -192
- package/lib/internal/template/flashbar/styles.selectors.js +50 -50
- package/lib/internal/template/header/internal.d.ts +2 -1
- package/lib/internal/template/header/internal.d.ts.map +1 -1
- package/lib/internal/template/header/internal.js +2 -2
- package/lib/internal/template/header/internal.js.map +1 -1
- package/lib/internal/template/header/styles.css.js +35 -34
- package/lib/internal/template/header/styles.scoped.css +60 -52
- package/lib/internal/template/header/styles.selectors.js +35 -34
- package/lib/internal/template/help-panel/styles.css.js +6 -6
- package/lib/internal/template/help-panel/styles.scoped.css +72 -72
- package/lib/internal/template/help-panel/styles.selectors.js +6 -6
- package/lib/internal/template/icon/generated/icons.d.ts +1 -0
- package/lib/internal/template/icon/generated/icons.d.ts.map +1 -1
- package/lib/internal/template/icon/generated/icons.js +3 -0
- package/lib/internal/template/icon/generated/icons.js.map +1 -1
- package/lib/internal/template/icon-provider/interfaces.d.ts +1 -1
- package/lib/internal/template/icon-provider/interfaces.d.ts.map +1 -1
- package/lib/internal/template/icon-provider/interfaces.js.map +1 -1
- package/lib/internal/template/input/styles.css.js +18 -18
- package/lib/internal/template/input/styles.scoped.css +82 -82
- package/lib/internal/template/input/styles.selectors.js +18 -18
- package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.css.js +30 -30
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.scoped.css +58 -58
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.selectors.js +30 -30
- package/lib/internal/template/internal/components/option/styles.css.js +17 -17
- package/lib/internal/template/internal/components/option/styles.scoped.css +31 -31
- package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
- package/lib/internal/template/internal/components/options-list/index.d.ts +2 -0
- package/lib/internal/template/internal/components/options-list/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/options-list/index.js +2 -2
- package/lib/internal/template/internal/components/options-list/index.js.map +1 -1
- package/lib/internal/template/internal/components/radio-button/styles.css.js +7 -7
- package/lib/internal/template/internal/components/radio-button/styles.scoped.css +18 -18
- package/lib/internal/template/internal/components/radio-button/styles.selectors.js +7 -7
- package/lib/internal/template/internal/components/selectable-item/styles.css.js +22 -22
- package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +57 -57
- package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +22 -22
- package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
- package/lib/internal/template/internal/components/token-list/styles.scoped.css +25 -25
- package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
- package/lib/internal/template/internal/environment.js +2 -2
- package/lib/internal/template/internal/environment.json +2 -2
- package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts +13 -0
- package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts.map +1 -1
- package/lib/internal/template/internal/generated/custom-css-properties/index.js +172 -159
- package/lib/internal/template/internal/generated/custom-css-properties/index.js.map +1 -1
- package/lib/internal/template/item-card/styles.css.js +14 -14
- package/lib/internal/template/item-card/styles.scoped.css +63 -63
- package/lib/internal/template/item-card/styles.selectors.js +14 -14
- package/lib/internal/template/link/styles.css.js +21 -21
- package/lib/internal/template/link/styles.scoped.css +117 -117
- package/lib/internal/template/link/styles.selectors.js +21 -21
- package/lib/internal/template/modal/styles.css.js +31 -31
- package/lib/internal/template/modal/styles.scoped.css +48 -48
- package/lib/internal/template/modal/styles.selectors.js +31 -31
- package/lib/internal/template/multiselect/use-multiselect.d.ts +1 -0
- package/lib/internal/template/multiselect/use-multiselect.d.ts.map +1 -1
- package/lib/internal/template/progress-bar/styles.css.js +18 -18
- package/lib/internal/template/progress-bar/styles.scoped.css +48 -48
- package/lib/internal/template/progress-bar/styles.selectors.js +18 -18
- package/lib/internal/template/prompt-input/components/menu-dropdown.d.ts +3 -1
- package/lib/internal/template/prompt-input/components/menu-dropdown.d.ts.map +1 -1
- package/lib/internal/template/prompt-input/components/menu-dropdown.js +2 -1
- package/lib/internal/template/prompt-input/components/menu-dropdown.js.map +1 -1
- package/lib/internal/template/prompt-input/components/token-mode.d.ts +3 -1
- package/lib/internal/template/prompt-input/components/token-mode.d.ts.map +1 -1
- package/lib/internal/template/prompt-input/components/token-mode.js +14 -3
- package/lib/internal/template/prompt-input/components/token-mode.js.map +1 -1
- package/lib/internal/template/prompt-input/internal-interfaces.d.ts +41 -0
- package/lib/internal/template/prompt-input/internal-interfaces.d.ts.map +1 -0
- package/lib/internal/template/prompt-input/internal-interfaces.js +2 -0
- package/lib/internal/template/prompt-input/internal-interfaces.js.map +1 -0
- package/lib/internal/template/prompt-input/internal.d.ts.map +1 -1
- package/lib/internal/template/prompt-input/internal.js +1 -1
- package/lib/internal/template/prompt-input/internal.js.map +1 -1
- package/lib/internal/template/prompt-input/styles.css.js +26 -26
- package/lib/internal/template/prompt-input/styles.d.ts +11 -0
- package/lib/internal/template/prompt-input/styles.d.ts.map +1 -1
- package/lib/internal/template/prompt-input/styles.js +27 -2
- package/lib/internal/template/prompt-input/styles.js.map +1 -1
- package/lib/internal/template/prompt-input/styles.scoped.css +105 -105
- package/lib/internal/template/prompt-input/styles.selectors.js +26 -26
- package/lib/internal/template/property-filter/controller.d.ts.map +1 -1
- package/lib/internal/template/property-filter/controller.js +10 -6
- package/lib/internal/template/property-filter/controller.js.map +1 -1
- package/lib/internal/template/property-filter/i18n-utils.d.ts +2 -2
- package/lib/internal/template/property-filter/i18n-utils.d.ts.map +1 -1
- package/lib/internal/template/property-filter/i18n-utils.js +11 -4
- package/lib/internal/template/property-filter/i18n-utils.js.map +1 -1
- package/lib/internal/template/property-filter/interfaces.d.ts +8 -2
- package/lib/internal/template/property-filter/interfaces.d.ts.map +1 -1
- package/lib/internal/template/property-filter/interfaces.js.map +1 -1
- package/lib/internal/template/property-filter/internal-interfaces.d.ts +1 -0
- package/lib/internal/template/property-filter/internal-interfaces.d.ts.map +1 -1
- package/lib/internal/template/property-filter/internal-interfaces.js.map +1 -1
- package/lib/internal/template/property-filter/internal.d.ts.map +1 -1
- package/lib/internal/template/property-filter/internal.js +1 -0
- package/lib/internal/template/property-filter/internal.js.map +1 -1
- package/lib/internal/template/property-filter/token-editor-inputs.d.ts +2 -1
- package/lib/internal/template/property-filter/token-editor-inputs.d.ts.map +1 -1
- package/lib/internal/template/property-filter/token-editor-inputs.js +18 -8
- package/lib/internal/template/property-filter/token-editor-inputs.js.map +1 -1
- package/lib/internal/template/property-filter/token-editor.d.ts.map +1 -1
- package/lib/internal/template/property-filter/token-editor.js +1 -1
- package/lib/internal/template/property-filter/token-editor.js.map +1 -1
- package/lib/internal/template/property-filter/utils.d.ts.map +1 -1
- package/lib/internal/template/property-filter/utils.js +12 -3
- package/lib/internal/template/property-filter/utils.js.map +1 -1
- package/lib/internal/template/segmented-control/styles.css.js +16 -16
- package/lib/internal/template/segmented-control/styles.scoped.css +46 -46
- package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
- package/lib/internal/template/slider/styles.css.js +26 -26
- package/lib/internal/template/slider/styles.scoped.css +165 -165
- package/lib/internal/template/slider/styles.selectors.js +26 -26
- package/lib/internal/template/spinner/styles.css.js +13 -13
- package/lib/internal/template/spinner/styles.scoped.css +39 -39
- package/lib/internal/template/spinner/styles.selectors.js +13 -13
- package/lib/internal/template/tabs/styles.css.js +30 -30
- package/lib/internal/template/tabs/styles.scoped.css +76 -76
- package/lib/internal/template/tabs/styles.selectors.js +30 -30
- package/lib/internal/template/tag-editor/styles.css.js +3 -3
- package/lib/internal/template/tag-editor/styles.scoped.css +13 -13
- package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
- package/lib/internal/template/text-content/styles.css.js +1 -1
- package/lib/internal/template/text-content/styles.scoped.css +66 -66
- package/lib/internal/template/text-content/styles.selectors.js +1 -1
- package/lib/internal/template/textarea/styles.css.js +5 -5
- package/lib/internal/template/textarea/styles.scoped.css +45 -45
- package/lib/internal/template/textarea/styles.selectors.js +5 -5
- package/lib/internal/template/toggle/styles.css.js +10 -10
- package/lib/internal/template/toggle/styles.scoped.css +23 -23
- package/lib/internal/template/toggle/styles.selectors.js +10 -10
- package/lib/internal/template/token/internal.d.ts.map +1 -1
- package/lib/internal/template/token/internal.js +4 -1
- package/lib/internal/template/token/internal.js.map +1 -1
- package/lib/internal/template/token/styles.css.js +14 -14
- package/lib/internal/template/token/styles.scoped.css +47 -47
- package/lib/internal/template/token/styles.selectors.js +14 -14
- package/lib/internal/template/tree-view/tree-item/index.js +1 -1
- package/lib/internal/template/tree-view/tree-item/index.js.map +1 -1
- package/lib/internal/template/tree-view/tree-item/styles.css.js +10 -9
- package/lib/internal/template/tree-view/tree-item/styles.scoped.css +20 -14
- package/lib/internal/template/tree-view/tree-item/styles.selectors.js +10 -9
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/property-filter/internal.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\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { PropertyFilterOperator } from '@cloudscape-design/collection-hooks';\nimport { useMergeRefs, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { InternalButton } from '../button/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport { AutosuggestInputRef } from '../internal/components/autosuggest-input';\nimport TokenList from '../internal/components/token-list';\nimport { useTableComponentsContext } from '../internal/context/table-component-context';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useListFocusController } from '../internal/hooks/use-list-focus-controller';\nimport { SomeRequired } from '../internal/types';\nimport { joinStrings } from '../internal/utils/strings';\nimport { InternalLiveRegionRef } from '../live-region/internal';\nimport InternalSpaceBetween from '../space-between/internal';\nimport { SearchResults } from '../text-filter/search-results';\nimport useDebounceSearchResultCallback from '../text-filter/use-debounce-search-result-callback';\nimport { GeneratedAnalyticsMetadataPropertyFilterClearFilters } from './analytics-metadata/interfaces';\nimport { getAllowedOperators, getAutosuggestOptions, getQueryActions, parseText } from './controller';\nimport { usePropertyFilterI18n } from './i18n-utils';\nimport {\n ComparisonOperator,\n ExtendedOperator,\n FilteringProperty,\n PropertyFilterProps,\n Ref,\n Token,\n TokenGroup,\n} from './interfaces';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalQuery,\n InternalToken,\n InternalTokenGroup,\n ParsedText,\n} from './internal-interfaces';\nimport { PropertyEditorContentCustom, PropertyEditorContentEnum, PropertyEditorFooter } from './property-editor';\nimport PropertyFilterAutosuggest, { PropertyFilterAutosuggestProps } from './property-filter-autosuggest';\nimport { TokenButton } from './token';\nimport { useLoadItems } from './use-load-items';\nimport { tokenGroupToTokens } from './utils';\n\nimport tokenListStyles from '../internal/components/token-list/styles.css.js';\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\ntype PropertyFilterInternalProps = SomeRequired<\n PropertyFilterProps,\n | 'filteringOptions'\n | 'customGroupsText'\n | 'enableTokenGroups'\n | 'disableFreeTextFiltering'\n | 'hideOperations'\n | 'readOnlyOperations'\n> &\n InternalBaseComponentProps;\n\nconst PropertyFilterInternal = React.forwardRef(\n (\n {\n disabled,\n countText,\n query,\n hideOperations,\n readOnlyOperations,\n onChange,\n filteringProperties,\n filteringOptions,\n customGroupsText,\n disableFreeTextFiltering,\n freeTextFiltering,\n onLoadItems,\n virtualScroll,\n customControl,\n customFilterActions,\n filteringPlaceholder,\n filteringAriaLabel,\n filteringEmpty,\n filteringLoadingText,\n filteringFinishedText,\n filteringErrorText,\n filteringRecoveryText,\n filteringConstraintText,\n filteringStatusType,\n asyncProperties,\n tokenLimit,\n expandToViewport,\n tokenLimitShowFewerAriaLabel,\n tokenLimitShowMoreAriaLabel,\n enableTokenGroups,\n loading = false,\n __internalRootRef,\n ...rest\n }: PropertyFilterInternalProps,\n ref: React.Ref<Ref>\n ) => {\n const [nextFocusIndex, setNextFocusIndex] = useState<null | number>(null);\n const tokenListRef = useListFocusController({\n nextFocusIndex,\n onFocusMoved: (target, targetType) => {\n if (targetType === 'fallback') {\n inputRef.current?.focus({ preventDropdown: true });\n } else {\n target.focus();\n }\n setNextFocusIndex(null);\n },\n listItemSelector: `.${tokenListStyles['list-item']}`,\n showMoreSelector: `.${tokenListStyles.toggle}`,\n fallbackSelector: `.${styles.input}`,\n });\n\n const mergedRef = useMergeRefs(tokenListRef, __internalRootRef);\n const inputRef = useRef<AutosuggestInputRef>(null);\n const searchResultsRef = useRef<InternalLiveRegionRef>(null);\n const baseProps = getBaseProps(rest);\n\n const i18nStrings = usePropertyFilterI18n(rest.i18nStrings);\n\n useImperativeHandle(ref, () => ({ focus: () => inputRef.current?.focus() }), []);\n const [filteringText, setFilteringText] = useState<string>('');\n\n const { internalProperties, internalOptions, internalQuery, internalFreeText } = (() => {\n const propertyByKey = filteringProperties.reduce((acc, property) => {\n const extendedOperators = (property?.operators ?? []).reduce(\n (acc, operator) => (typeof operator === 'object' ? acc.set(operator.operator, operator) : acc),\n new Map<PropertyFilterOperator, null | ExtendedOperator<any>>()\n );\n acc.set(property.key, {\n propertyKey: property.key,\n propertyLabel: property?.propertyLabel ?? '',\n groupValuesLabel: property?.groupValuesLabel ?? '',\n propertyGroup: property?.group,\n operators: (property?.operators ?? []).map(op => (typeof op === 'string' ? op : op.operator)),\n defaultOperator: property?.defaultOperator ?? '=',\n getTokenType: operator => (operator ? (extendedOperators.get(operator)?.tokenType ?? 'value') : 'value'),\n getValueFormatter: operator => (operator ? (extendedOperators.get(operator)?.format ?? null) : null),\n getValueFormRenderer: operator => (operator ? (extendedOperators.get(operator)?.form ?? null) : null),\n externalProperty: property,\n });\n return acc;\n }, new Map<string, InternalFilteringProperty>());\n const getProperty = (propertyKey: string): null | InternalFilteringProperty =>\n propertyByKey.get(propertyKey) ?? null;\n\n const internalOptions: readonly InternalFilteringOption[] = filteringOptions.map(option => ({\n property: getProperty(option.propertyKey),\n value: option.value,\n label: option.label ?? option.value ?? '',\n tags: option.tags ?? [],\n filteringTags: option.filteringTags ?? [],\n }));\n\n function transformToken(\n tokenOrGroup: Token | TokenGroup,\n standaloneIndex?: number\n ): InternalToken | InternalTokenGroup {\n const isTokenGroup = (t: Token | TokenGroup): t is TokenGroup => {\n const key: keyof TokenGroup = 'operation';\n return key in t;\n };\n return isTokenGroup(tokenOrGroup)\n ? {\n operation: tokenOrGroup.operation,\n tokens: tokenOrGroup.tokens.map(token => transformToken(token)),\n }\n : {\n standaloneIndex,\n property: tokenOrGroup.propertyKey ? getProperty(tokenOrGroup.propertyKey) : null,\n operator: tokenOrGroup.operator,\n value: tokenOrGroup.value,\n };\n }\n\n const internalQuery: InternalQuery = {\n operation: query.operation,\n tokens: (enableTokenGroups && query.tokenGroups ? query.tokenGroups : query.tokens).map(transformToken),\n };\n\n const internalFreeText: InternalFreeTextFiltering = {\n disabled: disableFreeTextFiltering,\n operators: freeTextFiltering?.operators ?? [':', '!:'],\n defaultOperator: freeTextFiltering?.defaultOperator ?? ':',\n };\n\n return { internalProperties: [...propertyByKey.values()], internalOptions, internalQuery, internalFreeText };\n })();\n\n const countValue = useMemo(() => {\n if (!countText || typeof countText !== 'string') {\n return undefined;\n }\n\n const m = countText.match(/\\d+/);\n return m ? parseInt(m[0]) : undefined;\n }, [countText]);\n\n const tableComponentContext = useTableComponentsContext();\n\n useEffect(() => {\n if (tableComponentContext?.filterRef?.current) {\n const groupedTokens = tokenGroupToTokens<InternalToken>(internalQuery.tokens);\n const filteredBy = groupedTokens\n .map(token => token.property?.propertyKey)\n .filter((propertyKey): propertyKey is string => typeof propertyKey === 'string');\n\n tableComponentContext.filterRef.current.filterCount = countValue;\n tableComponentContext.filterRef.current.filteredBy = filteredBy;\n tableComponentContext.filterRef.current.filtered = groupedTokens.length > 0;\n\n return () => {\n delete tableComponentContext.filterRef.current?.filterCount;\n delete tableComponentContext.filterRef.current?.filteredBy;\n delete tableComponentContext.filterRef.current?.filtered;\n };\n }\n }, [tableComponentContext?.filterRef, countValue, internalQuery.tokens]);\n\n const { addToken, updateToken, updateOperation, removeToken, removeAllTokens } = getQueryActions({\n query: internalQuery,\n filteringOptions: internalOptions,\n onChange,\n enableTokenGroups,\n });\n\n const parsedText = parseText(filteringText, internalProperties, internalFreeText);\n const autosuggestOptions = getAutosuggestOptions(\n parsedText,\n internalProperties,\n internalOptions,\n customGroupsText,\n i18nStrings\n );\n\n const createToken = (currentText: string) => {\n const parsedText = parseText(currentText, internalProperties, internalFreeText);\n let newToken: InternalToken;\n switch (parsedText.step) {\n case 'property': {\n newToken = {\n property: parsedText.property,\n operator: parsedText.operator,\n value: parsedText.value,\n };\n break;\n }\n case 'free-text': {\n newToken = {\n property: null,\n operator: parsedText.operator || internalFreeText.defaultOperator,\n value: parsedText.value,\n };\n break;\n }\n case 'operator': {\n newToken = {\n property: null,\n operator: internalFreeText.defaultOperator,\n value: currentText,\n };\n break;\n }\n }\n if (internalFreeText.disabled && !newToken.property) {\n return;\n }\n addToken(newToken);\n setFilteringText('');\n };\n const getLoadMoreDetail = (parsedText: ParsedText, filteringText: string) => {\n const loadMoreDetail: {\n filteringProperty: FilteringProperty | undefined;\n filteringText: string;\n filteringOperator: ComparisonOperator | undefined;\n } = {\n filteringProperty: undefined,\n filteringText,\n filteringOperator: undefined,\n };\n if (parsedText.step === 'property') {\n loadMoreDetail.filteringProperty = parsedText.property.externalProperty;\n loadMoreDetail.filteringText = parsedText.value;\n loadMoreDetail.filteringOperator = parsedText.operator;\n }\n return loadMoreDetail;\n };\n const loadMoreDetail = getLoadMoreDetail(parsedText, filteringText);\n const inputLoadItemsHandlers = useLoadItems(\n onLoadItems,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringProperty,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringOperator\n );\n const asyncProps = {\n empty: filteringEmpty,\n loadingText: filteringLoadingText,\n finishedText: filteringFinishedText,\n errorText: filteringErrorText,\n recoveryText: filteringRecoveryText,\n statusType: filteringStatusType,\n };\n const asyncAutosuggestProps =\n !!filteringText.length || asyncProperties\n ? {\n ...inputLoadItemsHandlers,\n ...asyncProps,\n }\n : {};\n const handleSelected: PropertyFilterAutosuggestProps['onOptionClick'] = event => {\n const { detail: option } = event;\n const value = option.value || '';\n if (!value) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-syntax -- Runtime property not in TS type\n if (!('keepOpenOnSelect' in option)) {\n createToken(value);\n return;\n }\n\n // stop dropdown from closing\n event.preventDefault();\n\n const parsedText = parseText(value, internalProperties, internalFreeText);\n const loadMoreDetail = getLoadMoreDetail(parsedText, value);\n\n // Insert operator automatically if only one operator is defined for the given property.\n if (parsedText.step === 'operator') {\n const operators = getAllowedOperators(parsedText.property);\n if (value.trim() === parsedText.property.propertyLabel && operators.length === 1) {\n loadMoreDetail.filteringProperty = parsedText.property.externalProperty ?? undefined;\n loadMoreDetail.filteringOperator = operators[0];\n loadMoreDetail.filteringText = '';\n setFilteringText(parsedText.property.propertyLabel + ' ' + operators[0] + ' ');\n }\n }\n\n fireNonCancelableEvent(onLoadItems, { ...loadMoreDetail, firstPage: true, samePage: false });\n };\n\n useDebounceSearchResultCallback({\n searchQuery: query,\n countText,\n loading,\n announceCallback: () => {\n searchResultsRef.current?.reannounce();\n },\n });\n\n const propertyStep = parsedText.step === 'property' ? parsedText : null;\n const customValueKey = propertyStep ? propertyStep.property.propertyKey + ':' + propertyStep.operator : '';\n const [customFormValueRecord, setCustomFormValueRecord] = useState<Record<string, any>>({});\n const customFormValue = customValueKey in customFormValueRecord ? customFormValueRecord[customValueKey] : null;\n const setCustomFormValue = (value: null | any) => setCustomFormValueRecord({ [customValueKey]: value });\n const operatorForm = propertyStep && propertyStep.property.getValueFormRenderer(propertyStep.operator);\n const isEnumValue = propertyStep?.property.getTokenType(propertyStep.operator) === 'enum';\n\n const searchResultsId = useUniqueId('property-filter-search-results');\n const constraintTextId = useUniqueId('property-filter-constraint');\n const textboxAriaDescribedBy = filteringConstraintText\n ? joinStrings(rest.ariaDescribedby, constraintTextId)\n : rest.ariaDescribedby;\n\n const showResults = !!internalQuery.tokens?.length && !disabled && !!countText;\n\n return (\n <div {...baseProps} className={clsx(baseProps.className, styles.root)} ref={mergedRef}>\n <div className={clsx(styles['search-field'], analyticsSelectors['search-field'])}>\n {customControl && <div className={styles['custom-control']}>{customControl}</div>}\n <div className={styles['input-wrapper']}>\n <PropertyFilterAutosuggest\n ref={inputRef}\n virtualScroll={virtualScroll}\n enteredTextLabel={i18nStrings.enteredTextLabel}\n ariaLabel={filteringAriaLabel ?? i18nStrings.filteringAriaLabel}\n placeholder={filteringPlaceholder ?? i18nStrings.filteringPlaceholder}\n ariaLabelledby={rest.ariaLabelledby}\n ariaDescribedby={textboxAriaDescribedBy}\n controlId={rest.controlId}\n value={filteringText}\n disabled={disabled}\n {...autosuggestOptions}\n onChange={event => setFilteringText(event.detail.value)}\n empty={filteringEmpty}\n {...asyncAutosuggestProps}\n expandToViewport={expandToViewport}\n onOptionClick={handleSelected}\n customForm={\n operatorForm || isEnumValue\n ? {\n content: operatorForm ? (\n <PropertyEditorContentCustom\n key={customValueKey}\n property={propertyStep.property}\n operator={propertyStep.operator}\n filter={propertyStep.value}\n operatorForm={operatorForm}\n value={customFormValue}\n onChange={setCustomFormValue}\n />\n ) : (\n <PropertyEditorContentEnum\n key={customValueKey}\n property={propertyStep.property}\n filter={propertyStep.value}\n value={customFormValue}\n onChange={setCustomFormValue}\n asyncProps={asyncProps}\n filteringOptions={internalOptions}\n onLoadItems={inputLoadItemsHandlers.onLoadItems}\n />\n ),\n footer: (\n <PropertyEditorFooter\n key={customValueKey}\n property={propertyStep.property}\n operator={propertyStep.operator}\n value={customFormValue}\n i18nStrings={i18nStrings}\n onCancel={() => {\n setFilteringText('');\n inputRef.current?.close();\n inputRef.current?.focus({ preventDropdown: true });\n }}\n onSubmit={token => {\n addToken(token);\n setFilteringText('');\n inputRef.current?.focus({ preventDropdown: true });\n inputRef.current?.close();\n }}\n />\n ),\n }\n : undefined\n }\n onCloseDropdown={() => setCustomFormValueRecord({})}\n hideEnteredTextOption={internalFreeText.disabled && parsedText.step !== 'property'}\n clearAriaLabel={i18nStrings.clearAriaLabel}\n searchResultsId={showResults ? searchResultsId : undefined}\n />\n {showResults ? (\n <div className={styles.results}>\n <SearchResults id={searchResultsId} renderLiveRegion={!loading} ref={searchResultsRef}>\n {countText}\n </SearchResults>\n </div>\n ) : null}\n </div>\n </div>\n {filteringConstraintText && (\n <div id={constraintTextId} className={styles.constraint}>\n {filteringConstraintText}\n </div>\n )}\n {internalQuery.tokens && internalQuery.tokens.length > 0 && (\n <div className={styles.tokens}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n <TokenList\n alignment=\"inline\"\n limit={tokenLimit}\n items={internalQuery.tokens}\n limitShowFewerAriaLabel={tokenLimitShowFewerAriaLabel}\n limitShowMoreAriaLabel={tokenLimitShowMoreAriaLabel}\n renderItem={(_, tokenIndex) => (\n <TokenButton\n query={internalQuery}\n tokenIndex={tokenIndex}\n onUpdateToken={(token, releasedTokens) => {\n updateToken(tokenIndex, token, releasedTokens);\n }}\n onUpdateOperation={updateOperation}\n onRemoveToken={() => {\n removeToken(tokenIndex);\n setNextFocusIndex(tokenIndex);\n }}\n filteringProperties={internalProperties}\n filteringOptions={internalOptions}\n asyncProps={asyncProps}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n asyncProperties={asyncProperties}\n hideOperations={hideOperations}\n readOnlyOperations={readOnlyOperations}\n customGroupsText={customGroupsText}\n freeTextFiltering={internalFreeText}\n disabled={disabled}\n expandToViewport={expandToViewport}\n enableTokenGroups={enableTokenGroups}\n />\n )}\n i18nStrings={{\n limitShowFewer: i18nStrings.tokenLimitShowFewer,\n limitShowMore: i18nStrings.tokenLimitShowMore,\n }}\n after={\n customFilterActions ? (\n <div className={styles['custom-filter-actions']}>{customFilterActions}</div>\n ) : (\n <span\n {...getAnalyticsMetadataAttribute({\n action: 'clearFilters',\n } as Partial<GeneratedAnalyticsMetadataPropertyFilterClearFilters>)}\n >\n <InternalButton\n formAction=\"none\"\n onClick={() => {\n removeAllTokens();\n inputRef.current?.focus({ preventDropdown: true });\n }}\n className={styles['remove-all']}\n disabled={disabled}\n >\n {i18nStrings.clearFiltersText}\n </InternalButton>\n </span>\n )\n }\n />\n </InternalSpaceBetween>\n </div>\n )}\n </div>\n );\n }\n);\n\nexport default PropertyFilterInternal;\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/property-filter/internal.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\nimport React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { PropertyFilterOperator } from '@cloudscape-design/collection-hooks';\nimport { useMergeRefs, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { InternalButton } from '../button/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport { AutosuggestInputRef } from '../internal/components/autosuggest-input';\nimport TokenList from '../internal/components/token-list';\nimport { useTableComponentsContext } from '../internal/context/table-component-context';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useListFocusController } from '../internal/hooks/use-list-focus-controller';\nimport { SomeRequired } from '../internal/types';\nimport { joinStrings } from '../internal/utils/strings';\nimport { InternalLiveRegionRef } from '../live-region/internal';\nimport InternalSpaceBetween from '../space-between/internal';\nimport { SearchResults } from '../text-filter/search-results';\nimport useDebounceSearchResultCallback from '../text-filter/use-debounce-search-result-callback';\nimport { GeneratedAnalyticsMetadataPropertyFilterClearFilters } from './analytics-metadata/interfaces';\nimport { getAllowedOperators, getAutosuggestOptions, getQueryActions, parseText } from './controller';\nimport { usePropertyFilterI18n } from './i18n-utils';\nimport {\n ComparisonOperator,\n ExtendedOperator,\n FilteringProperty,\n PropertyFilterProps,\n Ref,\n Token,\n TokenGroup,\n} from './interfaces';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalQuery,\n InternalToken,\n InternalTokenGroup,\n ParsedText,\n} from './internal-interfaces';\nimport { PropertyEditorContentCustom, PropertyEditorContentEnum, PropertyEditorFooter } from './property-editor';\nimport PropertyFilterAutosuggest, { PropertyFilterAutosuggestProps } from './property-filter-autosuggest';\nimport { TokenButton } from './token';\nimport { useLoadItems } from './use-load-items';\nimport { tokenGroupToTokens } from './utils';\n\nimport tokenListStyles from '../internal/components/token-list/styles.css.js';\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\ntype PropertyFilterInternalProps = SomeRequired<\n PropertyFilterProps,\n | 'filteringOptions'\n | 'customGroupsText'\n | 'enableTokenGroups'\n | 'disableFreeTextFiltering'\n | 'hideOperations'\n | 'readOnlyOperations'\n> &\n InternalBaseComponentProps;\n\nconst PropertyFilterInternal = React.forwardRef(\n (\n {\n disabled,\n countText,\n query,\n hideOperations,\n readOnlyOperations,\n onChange,\n filteringProperties,\n filteringOptions,\n customGroupsText,\n disableFreeTextFiltering,\n freeTextFiltering,\n onLoadItems,\n virtualScroll,\n customControl,\n customFilterActions,\n filteringPlaceholder,\n filteringAriaLabel,\n filteringEmpty,\n filteringLoadingText,\n filteringFinishedText,\n filteringErrorText,\n filteringRecoveryText,\n filteringConstraintText,\n filteringStatusType,\n asyncProperties,\n tokenLimit,\n expandToViewport,\n tokenLimitShowFewerAriaLabel,\n tokenLimitShowMoreAriaLabel,\n enableTokenGroups,\n loading = false,\n __internalRootRef,\n ...rest\n }: PropertyFilterInternalProps,\n ref: React.Ref<Ref>\n ) => {\n const [nextFocusIndex, setNextFocusIndex] = useState<null | number>(null);\n const tokenListRef = useListFocusController({\n nextFocusIndex,\n onFocusMoved: (target, targetType) => {\n if (targetType === 'fallback') {\n inputRef.current?.focus({ preventDropdown: true });\n } else {\n target.focus();\n }\n setNextFocusIndex(null);\n },\n listItemSelector: `.${tokenListStyles['list-item']}`,\n showMoreSelector: `.${tokenListStyles.toggle}`,\n fallbackSelector: `.${styles.input}`,\n });\n\n const mergedRef = useMergeRefs(tokenListRef, __internalRootRef);\n const inputRef = useRef<AutosuggestInputRef>(null);\n const searchResultsRef = useRef<InternalLiveRegionRef>(null);\n const baseProps = getBaseProps(rest);\n\n const i18nStrings = usePropertyFilterI18n(rest.i18nStrings);\n\n useImperativeHandle(ref, () => ({ focus: () => inputRef.current?.focus() }), []);\n const [filteringText, setFilteringText] = useState<string>('');\n\n const { internalProperties, internalOptions, internalQuery, internalFreeText } = (() => {\n const propertyByKey = filteringProperties.reduce((acc, property) => {\n const extendedOperators = (property?.operators ?? []).reduce(\n (acc, operator) => (typeof operator === 'object' ? acc.set(operator.operator, operator) : acc),\n new Map<PropertyFilterOperator, null | ExtendedOperator<any>>()\n );\n acc.set(property.key, {\n propertyKey: property.key,\n propertyLabel: property?.propertyLabel ?? '',\n groupValuesLabel: property?.groupValuesLabel ?? '',\n propertyGroup: property?.group,\n operators: (property?.operators ?? []).map(op => (typeof op === 'string' ? op : op.operator)),\n defaultOperator: property?.defaultOperator ?? '=',\n getTokenType: operator => (operator ? (extendedOperators.get(operator)?.tokenType ?? 'value') : 'value'),\n getValueFormatter: operator => (operator ? (extendedOperators.get(operator)?.format ?? null) : null),\n getValueFormRenderer: operator => (operator ? (extendedOperators.get(operator)?.form ?? null) : null),\n getOperatorDescription: operator =>\n operator ? (extendedOperators.get(operator)?.description ?? null) : null,\n externalProperty: property,\n });\n return acc;\n }, new Map<string, InternalFilteringProperty>());\n const getProperty = (propertyKey: string): null | InternalFilteringProperty =>\n propertyByKey.get(propertyKey) ?? null;\n\n const internalOptions: readonly InternalFilteringOption[] = filteringOptions.map(option => ({\n property: getProperty(option.propertyKey),\n value: option.value,\n label: option.label ?? option.value ?? '',\n tags: option.tags ?? [],\n filteringTags: option.filteringTags ?? [],\n }));\n\n function transformToken(\n tokenOrGroup: Token | TokenGroup,\n standaloneIndex?: number\n ): InternalToken | InternalTokenGroup {\n const isTokenGroup = (t: Token | TokenGroup): t is TokenGroup => {\n const key: keyof TokenGroup = 'operation';\n return key in t;\n };\n return isTokenGroup(tokenOrGroup)\n ? {\n operation: tokenOrGroup.operation,\n tokens: tokenOrGroup.tokens.map(token => transformToken(token)),\n }\n : {\n standaloneIndex,\n property: tokenOrGroup.propertyKey ? getProperty(tokenOrGroup.propertyKey) : null,\n operator: tokenOrGroup.operator,\n value: tokenOrGroup.value,\n };\n }\n\n const internalQuery: InternalQuery = {\n operation: query.operation,\n tokens: (enableTokenGroups && query.tokenGroups ? query.tokenGroups : query.tokens).map(transformToken),\n };\n\n const internalFreeText: InternalFreeTextFiltering = {\n disabled: disableFreeTextFiltering,\n operators: freeTextFiltering?.operators ?? [':', '!:'],\n defaultOperator: freeTextFiltering?.defaultOperator ?? ':',\n };\n\n return { internalProperties: [...propertyByKey.values()], internalOptions, internalQuery, internalFreeText };\n })();\n\n const countValue = useMemo(() => {\n if (!countText || typeof countText !== 'string') {\n return undefined;\n }\n\n const m = countText.match(/\\d+/);\n return m ? parseInt(m[0]) : undefined;\n }, [countText]);\n\n const tableComponentContext = useTableComponentsContext();\n\n useEffect(() => {\n if (tableComponentContext?.filterRef?.current) {\n const groupedTokens = tokenGroupToTokens<InternalToken>(internalQuery.tokens);\n const filteredBy = groupedTokens\n .map(token => token.property?.propertyKey)\n .filter((propertyKey): propertyKey is string => typeof propertyKey === 'string');\n\n tableComponentContext.filterRef.current.filterCount = countValue;\n tableComponentContext.filterRef.current.filteredBy = filteredBy;\n tableComponentContext.filterRef.current.filtered = groupedTokens.length > 0;\n\n return () => {\n delete tableComponentContext.filterRef.current?.filterCount;\n delete tableComponentContext.filterRef.current?.filteredBy;\n delete tableComponentContext.filterRef.current?.filtered;\n };\n }\n }, [tableComponentContext?.filterRef, countValue, internalQuery.tokens]);\n\n const { addToken, updateToken, updateOperation, removeToken, removeAllTokens } = getQueryActions({\n query: internalQuery,\n filteringOptions: internalOptions,\n onChange,\n enableTokenGroups,\n });\n\n const parsedText = parseText(filteringText, internalProperties, internalFreeText);\n const autosuggestOptions = getAutosuggestOptions(\n parsedText,\n internalProperties,\n internalOptions,\n customGroupsText,\n i18nStrings\n );\n\n const createToken = (currentText: string) => {\n const parsedText = parseText(currentText, internalProperties, internalFreeText);\n let newToken: InternalToken;\n switch (parsedText.step) {\n case 'property': {\n newToken = {\n property: parsedText.property,\n operator: parsedText.operator,\n value: parsedText.value,\n };\n break;\n }\n case 'free-text': {\n newToken = {\n property: null,\n operator: parsedText.operator || internalFreeText.defaultOperator,\n value: parsedText.value,\n };\n break;\n }\n case 'operator': {\n newToken = {\n property: null,\n operator: internalFreeText.defaultOperator,\n value: currentText,\n };\n break;\n }\n }\n if (internalFreeText.disabled && !newToken.property) {\n return;\n }\n addToken(newToken);\n setFilteringText('');\n };\n const getLoadMoreDetail = (parsedText: ParsedText, filteringText: string) => {\n const loadMoreDetail: {\n filteringProperty: FilteringProperty | undefined;\n filteringText: string;\n filteringOperator: ComparisonOperator | undefined;\n } = {\n filteringProperty: undefined,\n filteringText,\n filteringOperator: undefined,\n };\n if (parsedText.step === 'property') {\n loadMoreDetail.filteringProperty = parsedText.property.externalProperty;\n loadMoreDetail.filteringText = parsedText.value;\n loadMoreDetail.filteringOperator = parsedText.operator;\n }\n return loadMoreDetail;\n };\n const loadMoreDetail = getLoadMoreDetail(parsedText, filteringText);\n const inputLoadItemsHandlers = useLoadItems(\n onLoadItems,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringProperty,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringOperator\n );\n const asyncProps = {\n empty: filteringEmpty,\n loadingText: filteringLoadingText,\n finishedText: filteringFinishedText,\n errorText: filteringErrorText,\n recoveryText: filteringRecoveryText,\n statusType: filteringStatusType,\n };\n const asyncAutosuggestProps =\n !!filteringText.length || asyncProperties\n ? {\n ...inputLoadItemsHandlers,\n ...asyncProps,\n }\n : {};\n const handleSelected: PropertyFilterAutosuggestProps['onOptionClick'] = event => {\n const { detail: option } = event;\n const value = option.value || '';\n if (!value) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-syntax -- Runtime property not in TS type\n if (!('keepOpenOnSelect' in option)) {\n createToken(value);\n return;\n }\n\n // stop dropdown from closing\n event.preventDefault();\n\n const parsedText = parseText(value, internalProperties, internalFreeText);\n const loadMoreDetail = getLoadMoreDetail(parsedText, value);\n\n // Insert operator automatically if only one operator is defined for the given property.\n if (parsedText.step === 'operator') {\n const operators = getAllowedOperators(parsedText.property);\n if (value.trim() === parsedText.property.propertyLabel && operators.length === 1) {\n loadMoreDetail.filteringProperty = parsedText.property.externalProperty ?? undefined;\n loadMoreDetail.filteringOperator = operators[0];\n loadMoreDetail.filteringText = '';\n setFilteringText(parsedText.property.propertyLabel + ' ' + operators[0] + ' ');\n }\n }\n\n fireNonCancelableEvent(onLoadItems, { ...loadMoreDetail, firstPage: true, samePage: false });\n };\n\n useDebounceSearchResultCallback({\n searchQuery: query,\n countText,\n loading,\n announceCallback: () => {\n searchResultsRef.current?.reannounce();\n },\n });\n\n const propertyStep = parsedText.step === 'property' ? parsedText : null;\n const customValueKey = propertyStep ? propertyStep.property.propertyKey + ':' + propertyStep.operator : '';\n const [customFormValueRecord, setCustomFormValueRecord] = useState<Record<string, any>>({});\n const customFormValue = customValueKey in customFormValueRecord ? customFormValueRecord[customValueKey] : null;\n const setCustomFormValue = (value: null | any) => setCustomFormValueRecord({ [customValueKey]: value });\n const operatorForm = propertyStep && propertyStep.property.getValueFormRenderer(propertyStep.operator);\n const isEnumValue = propertyStep?.property.getTokenType(propertyStep.operator) === 'enum';\n\n const searchResultsId = useUniqueId('property-filter-search-results');\n const constraintTextId = useUniqueId('property-filter-constraint');\n const textboxAriaDescribedBy = filteringConstraintText\n ? joinStrings(rest.ariaDescribedby, constraintTextId)\n : rest.ariaDescribedby;\n\n const showResults = !!internalQuery.tokens?.length && !disabled && !!countText;\n\n return (\n <div {...baseProps} className={clsx(baseProps.className, styles.root)} ref={mergedRef}>\n <div className={clsx(styles['search-field'], analyticsSelectors['search-field'])}>\n {customControl && <div className={styles['custom-control']}>{customControl}</div>}\n <div className={styles['input-wrapper']}>\n <PropertyFilterAutosuggest\n ref={inputRef}\n virtualScroll={virtualScroll}\n enteredTextLabel={i18nStrings.enteredTextLabel}\n ariaLabel={filteringAriaLabel ?? i18nStrings.filteringAriaLabel}\n placeholder={filteringPlaceholder ?? i18nStrings.filteringPlaceholder}\n ariaLabelledby={rest.ariaLabelledby}\n ariaDescribedby={textboxAriaDescribedBy}\n controlId={rest.controlId}\n value={filteringText}\n disabled={disabled}\n {...autosuggestOptions}\n onChange={event => setFilteringText(event.detail.value)}\n empty={filteringEmpty}\n {...asyncAutosuggestProps}\n expandToViewport={expandToViewport}\n onOptionClick={handleSelected}\n customForm={\n operatorForm || isEnumValue\n ? {\n content: operatorForm ? (\n <PropertyEditorContentCustom\n key={customValueKey}\n property={propertyStep.property}\n operator={propertyStep.operator}\n filter={propertyStep.value}\n operatorForm={operatorForm}\n value={customFormValue}\n onChange={setCustomFormValue}\n />\n ) : (\n <PropertyEditorContentEnum\n key={customValueKey}\n property={propertyStep.property}\n filter={propertyStep.value}\n value={customFormValue}\n onChange={setCustomFormValue}\n asyncProps={asyncProps}\n filteringOptions={internalOptions}\n onLoadItems={inputLoadItemsHandlers.onLoadItems}\n />\n ),\n footer: (\n <PropertyEditorFooter\n key={customValueKey}\n property={propertyStep.property}\n operator={propertyStep.operator}\n value={customFormValue}\n i18nStrings={i18nStrings}\n onCancel={() => {\n setFilteringText('');\n inputRef.current?.close();\n inputRef.current?.focus({ preventDropdown: true });\n }}\n onSubmit={token => {\n addToken(token);\n setFilteringText('');\n inputRef.current?.focus({ preventDropdown: true });\n inputRef.current?.close();\n }}\n />\n ),\n }\n : undefined\n }\n onCloseDropdown={() => setCustomFormValueRecord({})}\n hideEnteredTextOption={internalFreeText.disabled && parsedText.step !== 'property'}\n clearAriaLabel={i18nStrings.clearAriaLabel}\n searchResultsId={showResults ? searchResultsId : undefined}\n />\n {showResults ? (\n <div className={styles.results}>\n <SearchResults id={searchResultsId} renderLiveRegion={!loading} ref={searchResultsRef}>\n {countText}\n </SearchResults>\n </div>\n ) : null}\n </div>\n </div>\n {filteringConstraintText && (\n <div id={constraintTextId} className={styles.constraint}>\n {filteringConstraintText}\n </div>\n )}\n {internalQuery.tokens && internalQuery.tokens.length > 0 && (\n <div className={styles.tokens}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\">\n <TokenList\n alignment=\"inline\"\n limit={tokenLimit}\n items={internalQuery.tokens}\n limitShowFewerAriaLabel={tokenLimitShowFewerAriaLabel}\n limitShowMoreAriaLabel={tokenLimitShowMoreAriaLabel}\n renderItem={(_, tokenIndex) => (\n <TokenButton\n query={internalQuery}\n tokenIndex={tokenIndex}\n onUpdateToken={(token, releasedTokens) => {\n updateToken(tokenIndex, token, releasedTokens);\n }}\n onUpdateOperation={updateOperation}\n onRemoveToken={() => {\n removeToken(tokenIndex);\n setNextFocusIndex(tokenIndex);\n }}\n filteringProperties={internalProperties}\n filteringOptions={internalOptions}\n asyncProps={asyncProps}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n asyncProperties={asyncProperties}\n hideOperations={hideOperations}\n readOnlyOperations={readOnlyOperations}\n customGroupsText={customGroupsText}\n freeTextFiltering={internalFreeText}\n disabled={disabled}\n expandToViewport={expandToViewport}\n enableTokenGroups={enableTokenGroups}\n />\n )}\n i18nStrings={{\n limitShowFewer: i18nStrings.tokenLimitShowFewer,\n limitShowMore: i18nStrings.tokenLimitShowMore,\n }}\n after={\n customFilterActions ? (\n <div className={styles['custom-filter-actions']}>{customFilterActions}</div>\n ) : (\n <span\n {...getAnalyticsMetadataAttribute({\n action: 'clearFilters',\n } as Partial<GeneratedAnalyticsMetadataPropertyFilterClearFilters>)}\n >\n <InternalButton\n formAction=\"none\"\n onClick={() => {\n removeAllTokens();\n inputRef.current?.focus({ preventDropdown: true });\n }}\n className={styles['remove-all']}\n disabled={disabled}\n >\n {i18nStrings.clearFiltersText}\n </InternalButton>\n </span>\n )\n }\n />\n </InternalSpaceBetween>\n </div>\n )}\n </div>\n );\n }\n);\n\nexport default PropertyFilterInternal;\n"]}
|
|
@@ -19,10 +19,11 @@ interface OperatorInputProps {
|
|
|
19
19
|
onChangeOperator: (operator: ComparisonOperator) => void;
|
|
20
20
|
operator: undefined | ComparisonOperator;
|
|
21
21
|
property: null | InternalFilteringProperty;
|
|
22
|
+
filteringProperties: readonly InternalFilteringProperty[];
|
|
22
23
|
freeTextFiltering: InternalFreeTextFiltering;
|
|
23
24
|
triggerVariant: 'option' | 'label';
|
|
24
25
|
}
|
|
25
|
-
export declare function OperatorInput({ property, operator, onChangeOperator, i18nStrings, freeTextFiltering, triggerVariant, }: OperatorInputProps): JSX.Element;
|
|
26
|
+
export declare function OperatorInput({ property, operator, onChangeOperator, i18nStrings, filteringProperties, freeTextFiltering, triggerVariant, }: OperatorInputProps): JSX.Element;
|
|
26
27
|
interface ValueInputProps {
|
|
27
28
|
asyncProps: DropdownStatusProps;
|
|
28
29
|
filteringOptions: readonly InternalFilteringOption[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-editor-inputs.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor-inputs.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAyB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAKlC,UAAU,kBAAkB;IAC1B,UAAU,EAAE,IAAI,GAAG,mBAAmB,CAAC;IACvC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,WAAW,EAAE,mBAAmB,CAAC;IACjC,mBAAmB,EAAE,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/D,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAI,GAAG,yBAAyB,CAAC;CAC5C;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,GAClB,EAAE,kBAAkB,eAqCpB;AAED,UAAU,kBAAkB;IAC1B,WAAW,EAAE,mBAAmB,CAAC;IACjC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACzC,QAAQ,EAAE,IAAI,GAAG,yBAAyB,CAAC;IAC3C,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"token-editor-inputs.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor-inputs.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAyB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAKlC,UAAU,kBAAkB;IAC1B,UAAU,EAAE,IAAI,GAAG,mBAAmB,CAAC;IACvC,gBAAgB,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,WAAW,EAAE,mBAAmB,CAAC;IACjC,mBAAmB,EAAE,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/D,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAI,GAAG,yBAAyB,CAAC;CAC5C;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,GAClB,EAAE,kBAAkB,eAqCpB;AAED,UAAU,kBAAkB;IAC1B,WAAW,EAAE,mBAAmB,CAAC;IACjC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACzC,QAAQ,EAAE,IAAI,GAAG,yBAAyB,CAAC;IAC3C,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,EAAE,kBAAkB,eAgCpB;AAED,UAAU,eAAe;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,WAAW,EAAE,mBAAmB,CAAC;IACjC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACzC,QAAQ,EAAE,IAAI,GAAG,yBAAyB,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eAWhD"}
|
|
@@ -31,18 +31,28 @@ export function PropertyInput({ property, onChangePropertyKey, asyncProps, filte
|
|
|
31
31
|
}
|
|
32
32
|
: allPropertiesOption, onChange: e => onChangePropertyKey(e.detail.selectedOption.value), ...asyncPropertySelectProps }));
|
|
33
33
|
}
|
|
34
|
-
export function OperatorInput({ property, operator, onChangeOperator, i18nStrings, freeTextFiltering, triggerVariant, }) {
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
export function OperatorInput({ property, operator, onChangeOperator, i18nStrings, filteringProperties, freeTextFiltering, triggerVariant, }) {
|
|
35
|
+
var _a;
|
|
36
|
+
const getDescription = (op) => {
|
|
37
|
+
if (property) {
|
|
38
|
+
return operatorToDescription(op, i18nStrings, property);
|
|
39
|
+
}
|
|
40
|
+
const freeTextProperty = filteringProperties.find(prop => prop.getOperatorDescription(op) !== null);
|
|
41
|
+
return operatorToDescription(op, i18nStrings, freeTextProperty);
|
|
42
|
+
};
|
|
43
|
+
const operatorOptions = (property ? getAllowedOperators(property) : getAllowedFreeTextOperators(freeTextFiltering)).map(op => {
|
|
44
|
+
var _a;
|
|
45
|
+
return ({
|
|
46
|
+
value: op,
|
|
47
|
+
label: op,
|
|
48
|
+
description: (_a = getDescription(op)) !== null && _a !== void 0 ? _a : undefined,
|
|
49
|
+
});
|
|
50
|
+
});
|
|
41
51
|
return (React.createElement(InternalSelect, { options: operatorOptions, triggerVariant: triggerVariant, selectedOption: operator
|
|
42
52
|
? {
|
|
43
53
|
value: operator,
|
|
44
54
|
label: operator,
|
|
45
|
-
description:
|
|
55
|
+
description: (_a = getDescription(operator)) !== null && _a !== void 0 ? _a : undefined,
|
|
46
56
|
}
|
|
47
57
|
: null, onChange: e => onChangeOperator(e.detail.selectedOption.value) }));
|
|
48
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-editor-inputs.js","sourceRoot":"","sources":["../../../src/property-filter/token-editor-inputs.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAE7D,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAuB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAO7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAarC,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,GACE;;IACnB,MAAM,sBAAsB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,wBAAwB,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,MAAM,eAAe,GAAqD,sBAAsB,CAC9F,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,aAAa;QACpB,iBAAiB,EAAE,IAAI;KACxB,CAAC,CACH,CAAC;IAEF,MAAM,mBAAmB,GAAG;QAC1B,KAAK,EAAE,WAAW,CAAC,kBAAkB;QACrC,KAAK,EAAE,SAAS;KACjB,CAAC;IACF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAChC,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CACL,oBAAC,cAAc,IACb,aAAa,EAAC,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,cAAc,EACZ,QAAQ;YACN,CAAC,CAAC;gBACE,KAAK,EAAE,MAAA,QAAQ,CAAC,WAAW,mCAAI,SAAS;gBACxC,KAAK,EAAE,QAAQ,CAAC,aAAa;aAC9B;YACH,CAAC,CAAC,mBAAmB,EAEzB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAC7D,wBAAwB,GAC5B,CACH,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,cAAc,GACK;IACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;IAC5G,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjD,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC1D,CAAC,CAAC,CAAC;IACJ,OAAO,CACL,oBAAC,cAAc,IACb,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,cAAc,EAC9B,cAAc,EACZ,QAAQ;YACN,CAAC,CAAC;gBACE,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC;aAC1D;YACH,CAAC,CAAC,IAAI,EAEV,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAA2B,CAAC,GACpF,CACH,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,YAAY,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,KAAI,QAAQ,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAA,CAAC;IAEnG,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;IACrF,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC;QACvE,OAAO,oBAAC,cAAc,OAAK,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;IAC/E,CAAC;IACD,OAAO,oBAAC,cAAc,OAAK,KAAK,GAAI,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,QAAQ,EACR,QAAQ,EACR,KAAK,EAAE,YAAY,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,GACK;;IAChB,MAAM,KAAK,GAAG,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,gBAAgB;aACb,MAAM,CAAC,MAAM,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,WAAW,MAAK,QAAQ,CAAC,WAAW,CAAA,EAAA,CAAC;aACvE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,wBAAwB,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5G,MAAM,0BAA0B,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW;QACtD,CAAC,CAAC,EAAE,GAAG,wBAAwB,EAAE,GAAG,UAAU,EAAE;QAChD,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAE9E,OAAO,CACL,oBAAC,mBAAmB,IAClB,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,EAC9C,KAAK,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,mCAAI,KAAK,EACpC,cAAc,EAAE,WAAW,CAAC,cAAc,EAC1C,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,QAAQ,EAAE,CAAC,QAAQ,EACnB,OAAO,EAAE,YAAY,KACjB,0BAA0B,EAC9B,aAAa,EAAE,IAAI,GACnB,CACH,CAAC;AACJ,CAAC;AAOD,SAAS,cAAc,CAAC,EACtB,QAAQ,EACR,QAAQ,EACR,KAAK,EAAE,YAAY,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,GACS;IACpB,MAAM,YAAY,GAAG,gBAAgB;SAClC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,WAAW,MAAK,QAAQ,CAAC,WAAW,CAAA,EAAA,CAAC;SACvE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,wBAAwB,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/G,MAAM,0BAA0B,GAAG,EAAE,UAAU,EAAE,UAAmB,EAAE,GAAG,wBAAwB,EAAE,GAAG,UAAU,EAAE,CAAC;IACnH,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/F,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,kCAAkC,CAAC;QACxD,6BAAK,SAAS,EAAE,MAAM,CAAC,wCAAwC,CAAC;YAC9D,oBAAC,mBAAmB,IAClB,aAAa,EAAC,MAAM,EACpB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EACxE,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KACjG,0BAA0B,EAC9B,YAAY,EAAE,IAAI,EAClB,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,GACd,CACE,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\n\nimport InternalAutosuggest from '../autosuggest/internal.js';\nimport InternalMultiselect from '../multiselect/internal.js';\nimport { SelectProps } from '../select/interfaces.js';\nimport InternalSelect from '../select/internal.js';\nimport { DropdownStatusProps } from '../types/dropdown-status';\nimport { NonCancelableEventHandler } from '../types/events';\nimport { getAllowedFreeTextOperators, getAllowedOperators, getPropertySuggestions } from './controller.js';\nimport { I18nStringsInternal, operatorToDescription } from './i18n-utils.js';\nimport { ComparisonOperator, GroupText, LoadItemsDetail } from './interfaces.js';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n} from './internal-interfaces.js';\nimport { useLoadItems } from './use-load-items.js';\n\nimport styles from './styles.css.js';\n\ninterface PropertyInputProps {\n asyncProps: null | DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n i18nStrings: I18nStringsInternal;\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 filteringType=\"auto\"\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: I18nStringsInternal;\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 operators = property ? getAllowedOperators(property) : getAllowedFreeTextOperators(freeTextFiltering);\n const operatorOptions = 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: I18nStringsInternal;\n onChangeValue: (value: unknown) => void;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n value: unknown;\n}\n\nexport function ValueInput(props: ValueInputProps) {\n const { property, operator, value, onChangeValue } = props;\n const OperatorForm = property?.propertyKey && operator && property?.getValueFormRenderer(operator);\n\n if (OperatorForm) {\n return <OperatorForm value={value} onChange={onChangeValue} operator={operator} />;\n }\n if (property && operator && property.getTokenType(operator) === 'enum') {\n return <ValueInputEnum {...props} property={property} operator={operator} />;\n }\n return <ValueInputAuto {...props} />;\n}\n\nfunction ValueInputAuto({\n property,\n operator,\n value: unknownValue,\n onChangeValue,\n asyncProps,\n filteringOptions,\n onLoadItems,\n i18nStrings,\n}: ValueInputProps) {\n const value = (unknownValue ?? '') + '';\n const valueOptions = property\n ? filteringOptions\n .filter(option => option.property?.propertyKey === property.propertyKey)\n .map(({ label, value, tags, filteringTags }) => ({ label, value, tags, filteringTags }))\n : [];\n\n const valueAutosuggestHandlers = useLoadItems(onLoadItems, '', property?.externalProperty, value, operator);\n const asyncValueAutosuggestProps = property?.propertyKey\n ? { ...valueAutosuggestHandlers, ...asyncProps }\n : { empty: asyncProps.empty };\n const [matchedOption] = valueOptions.filter(option => option.value === value);\n\n return (\n <InternalAutosuggest\n enteredTextLabel={i18nStrings.enteredTextLabel}\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 ValueInputPropsEnum extends ValueInputProps {\n property: InternalFilteringProperty;\n operator: ComparisonOperator;\n}\n\nfunction ValueInputEnum({\n property,\n operator,\n value: unknownValue,\n onChangeValue,\n asyncProps,\n filteringOptions,\n onLoadItems,\n}: ValueInputPropsEnum) {\n const valueOptions = filteringOptions\n .filter(option => option.property?.propertyKey === property.propertyKey)\n .map(({ label, value, tags, filteringTags }) => ({ label, value, tags, filteringTags }));\n const valueAutosuggestHandlers = useLoadItems(onLoadItems, '', property.externalProperty, undefined, operator);\n const asyncValueAutosuggestProps = { statusType: 'finished' as const, ...valueAutosuggestHandlers, ...asyncProps };\n const value = !unknownValue ? [] : Array.isArray(unknownValue) ? unknownValue : [unknownValue];\n const selectedOptions = valueOptions.filter(option => value.includes(option.value));\n return (\n <div className={styles['token-editor-multiselect-wrapper']}>\n <div className={styles['token-editor-multiselect-wrapper-inner']}>\n <InternalMultiselect\n filteringType=\"auto\"\n selectedOptions={selectedOptions}\n onChange={e => onChangeValue(e.detail.selectedOptions.map(o => o.value))}\n options={valueOptions.length > 0 ? [{ options: valueOptions, label: property.groupValuesLabel }] : []}\n {...asyncValueAutosuggestProps}\n inlineTokens={true}\n hideTokens={true}\n keepOpen={true}\n />\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"token-editor-inputs.js","sourceRoot":"","sources":["../../../src/property-filter/token-editor-inputs.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAC7D,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAE7D,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAuB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAO7E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAarC,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,GACE;;IACnB,MAAM,sBAAsB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,wBAAwB,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,MAAM,eAAe,GAAqD,sBAAsB,CAC9F,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,aAAa;QACpB,iBAAiB,EAAE,IAAI;KACxB,CAAC,CACH,CAAC;IAEF,MAAM,mBAAmB,GAAG;QAC1B,KAAK,EAAE,WAAW,CAAC,kBAAkB;QACrC,KAAK,EAAE,SAAS;KACjB,CAAC;IACF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAChC,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,CACL,oBAAC,cAAc,IACb,aAAa,EAAC,MAAM,EACpB,OAAO,EAAE,eAAe,EACxB,cAAc,EACZ,QAAQ;YACN,CAAC,CAAC;gBACE,KAAK,EAAE,MAAA,QAAQ,CAAC,WAAW,mCAAI,SAAS;gBACxC,KAAK,EAAE,QAAQ,CAAC,aAAa;aAC9B;YACH,CAAC,CAAC,mBAAmB,EAEzB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAC7D,wBAAwB,GAC5B,CACH,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACK;;IACnB,MAAM,cAAc,GAAG,CAAC,EAAsB,EAAE,EAAE;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,qBAAqB,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;QACpG,OAAO,qBAAqB,CAAC,EAAE,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CACtB,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAC1F,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;;QAAC,OAAA,CAAC;YACX,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,MAAA,cAAc,CAAC,EAAE,CAAC,mCAAI,SAAS;SAC7C,CAAC,CAAA;KAAA,CAAC,CAAC;IACJ,OAAO,CACL,oBAAC,cAAc,IACb,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,cAAc,EAC9B,cAAc,EACZ,QAAQ;YACN,CAAC,CAAC;gBACE,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,MAAA,cAAc,CAAC,QAAQ,CAAC,mCAAI,SAAS;aACnD;YACH,CAAC,CAAC,IAAI,EAEV,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAA2B,CAAC,GACpF,CACH,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,YAAY,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,KAAI,QAAQ,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAA,CAAC;IAEnG,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;IACrF,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC;QACvE,OAAO,oBAAC,cAAc,OAAK,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC;IAC/E,CAAC;IACD,OAAO,oBAAC,cAAc,OAAK,KAAK,GAAI,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,QAAQ,EACR,QAAQ,EACR,KAAK,EAAE,YAAY,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,GACK;;IAChB,MAAM,KAAK,GAAG,CAAC,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,gBAAgB;aACb,MAAM,CAAC,MAAM,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,WAAW,MAAK,QAAQ,CAAC,WAAW,CAAA,EAAA,CAAC;aACvE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,wBAAwB,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5G,MAAM,0BAA0B,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW;QACtD,CAAC,CAAC,EAAE,GAAG,wBAAwB,EAAE,GAAG,UAAU,EAAE;QAChD,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAE9E,OAAO,CACL,oBAAC,mBAAmB,IAClB,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,EAC9C,KAAK,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,mCAAI,KAAK,EACpC,cAAc,EAAE,WAAW,CAAC,cAAc,EAC1C,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,QAAQ,EAAE,CAAC,QAAQ,EACnB,OAAO,EAAE,YAAY,KACjB,0BAA0B,EAC9B,aAAa,EAAE,IAAI,GACnB,CACH,CAAC;AACJ,CAAC;AAOD,SAAS,cAAc,CAAC,EACtB,QAAQ,EACR,QAAQ,EACR,KAAK,EAAE,YAAY,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,WAAW,GACS;IACpB,MAAM,YAAY,GAAG,gBAAgB;SAClC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,WAAW,MAAK,QAAQ,CAAC,WAAW,CAAA,EAAA,CAAC;SACvE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,wBAAwB,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/G,MAAM,0BAA0B,GAAG,EAAE,UAAU,EAAE,UAAmB,EAAE,GAAG,wBAAwB,EAAE,GAAG,UAAU,EAAE,CAAC;IACnH,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/F,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,kCAAkC,CAAC;QACxD,6BAAK,SAAS,EAAE,MAAM,CAAC,wCAAwC,CAAC;YAC9D,oBAAC,mBAAmB,IAClB,aAAa,EAAC,MAAM,EACpB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EACxE,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KACjG,0BAA0B,EAC9B,YAAY,EAAE,IAAI,EAClB,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,GACd,CACE,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\n\nimport InternalAutosuggest from '../autosuggest/internal.js';\nimport InternalMultiselect from '../multiselect/internal.js';\nimport { SelectProps } from '../select/interfaces.js';\nimport InternalSelect from '../select/internal.js';\nimport { DropdownStatusProps } from '../types/dropdown-status';\nimport { NonCancelableEventHandler } from '../types/events';\nimport { getAllowedFreeTextOperators, getAllowedOperators, getPropertySuggestions } from './controller.js';\nimport { I18nStringsInternal, operatorToDescription } from './i18n-utils.js';\nimport { ComparisonOperator, GroupText, LoadItemsDetail } from './interfaces.js';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n} from './internal-interfaces.js';\nimport { useLoadItems } from './use-load-items.js';\n\nimport styles from './styles.css.js';\n\ninterface PropertyInputProps {\n asyncProps: null | DropdownStatusProps;\n customGroupsText: readonly GroupText[];\n freeTextFiltering: InternalFreeTextFiltering;\n filteringProperties: readonly InternalFilteringProperty[];\n i18nStrings: I18nStringsInternal;\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 filteringType=\"auto\"\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: I18nStringsInternal;\n onChangeOperator: (operator: ComparisonOperator) => void;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n filteringProperties: readonly InternalFilteringProperty[];\n freeTextFiltering: InternalFreeTextFiltering;\n triggerVariant: 'option' | 'label';\n}\n\nexport function OperatorInput({\n property,\n operator,\n onChangeOperator,\n i18nStrings,\n filteringProperties,\n freeTextFiltering,\n triggerVariant,\n}: OperatorInputProps) {\n const getDescription = (op: ComparisonOperator) => {\n if (property) {\n return operatorToDescription(op, i18nStrings, property);\n }\n const freeTextProperty = filteringProperties.find(prop => prop.getOperatorDescription(op) !== null);\n return operatorToDescription(op, i18nStrings, freeTextProperty);\n };\n\n const operatorOptions = (\n property ? getAllowedOperators(property) : getAllowedFreeTextOperators(freeTextFiltering)\n ).map(op => ({\n value: op,\n label: op,\n description: getDescription(op) ?? undefined,\n }));\n return (\n <InternalSelect\n options={operatorOptions}\n triggerVariant={triggerVariant}\n selectedOption={\n operator\n ? {\n value: operator,\n label: operator,\n description: getDescription(operator) ?? undefined,\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: I18nStringsInternal;\n onChangeValue: (value: unknown) => void;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n operator: undefined | ComparisonOperator;\n property: null | InternalFilteringProperty;\n value: unknown;\n}\n\nexport function ValueInput(props: ValueInputProps) {\n const { property, operator, value, onChangeValue } = props;\n const OperatorForm = property?.propertyKey && operator && property?.getValueFormRenderer(operator);\n\n if (OperatorForm) {\n return <OperatorForm value={value} onChange={onChangeValue} operator={operator} />;\n }\n if (property && operator && property.getTokenType(operator) === 'enum') {\n return <ValueInputEnum {...props} property={property} operator={operator} />;\n }\n return <ValueInputAuto {...props} />;\n}\n\nfunction ValueInputAuto({\n property,\n operator,\n value: unknownValue,\n onChangeValue,\n asyncProps,\n filteringOptions,\n onLoadItems,\n i18nStrings,\n}: ValueInputProps) {\n const value = (unknownValue ?? '') + '';\n const valueOptions = property\n ? filteringOptions\n .filter(option => option.property?.propertyKey === property.propertyKey)\n .map(({ label, value, tags, filteringTags }) => ({ label, value, tags, filteringTags }))\n : [];\n\n const valueAutosuggestHandlers = useLoadItems(onLoadItems, '', property?.externalProperty, value, operator);\n const asyncValueAutosuggestProps = property?.propertyKey\n ? { ...valueAutosuggestHandlers, ...asyncProps }\n : { empty: asyncProps.empty };\n const [matchedOption] = valueOptions.filter(option => option.value === value);\n\n return (\n <InternalAutosuggest\n enteredTextLabel={i18nStrings.enteredTextLabel}\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 ValueInputPropsEnum extends ValueInputProps {\n property: InternalFilteringProperty;\n operator: ComparisonOperator;\n}\n\nfunction ValueInputEnum({\n property,\n operator,\n value: unknownValue,\n onChangeValue,\n asyncProps,\n filteringOptions,\n onLoadItems,\n}: ValueInputPropsEnum) {\n const valueOptions = filteringOptions\n .filter(option => option.property?.propertyKey === property.propertyKey)\n .map(({ label, value, tags, filteringTags }) => ({ label, value, tags, filteringTags }));\n const valueAutosuggestHandlers = useLoadItems(onLoadItems, '', property.externalProperty, undefined, operator);\n const asyncValueAutosuggestProps = { statusType: 'finished' as const, ...valueAutosuggestHandlers, ...asyncProps };\n const value = !unknownValue ? [] : Array.isArray(unknownValue) ? unknownValue : [unknownValue];\n const selectedOptions = valueOptions.filter(option => value.includes(option.value));\n return (\n <div className={styles['token-editor-multiselect-wrapper']}>\n <div className={styles['token-editor-multiselect-wrapper-inner']}>\n <InternalMultiselect\n filteringType=\"auto\"\n selectedOptions={selectedOptions}\n onChange={e => onChangeValue(e.detail.selectedOptions.map(o => o.value))}\n options={valueOptions.length > 0 ? [{ options: valueOptions, label: property.groupValuesLabel }] : []}\n {...asyncValueAutosuggestProps}\n inlineTokens={true}\n hideTokens={true}\n keepOpen={true}\n />\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-editor.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAsB,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAMlC,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,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,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,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"token-editor.d.ts","sourceRoot":"","sources":["../../../src/property-filter/token-editor.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAsB,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAMlC,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,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,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,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,EAAE,gBAAgB,eAoLlB"}
|
|
@@ -76,7 +76,7 @@ export function TokenEditor({ supportsGroups, asyncProperties, asyncProps, custo
|
|
|
76
76
|
onChangeTempGroup(updated);
|
|
77
77
|
onTokenRelease(releasedToken);
|
|
78
78
|
setNextFocusIndex(index);
|
|
79
|
-
}, onSubmit: onSubmit, 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: supportsGroups ? 'label' : 'option' })), 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 }),
|
|
79
|
+
}, onSubmit: onSubmit, 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, filteringProperties: filteringProperties, freeTextFiltering: freeTextFiltering, triggerVariant: supportsGroups ? 'label' : 'option' })), 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 }),
|
|
80
80
|
supportsGroups && (React.createElement("div", { className: clsx(styles['token-editor-add-token'], testUtilStyles['token-editor-token-add-actions']) },
|
|
81
81
|
React.createElement(InternalButtonDropdown, { variant: "normal", ariaLabel: i18nStrings.tokenEditorAddTokenActionsAriaLabel, items: tokensToCapture.map((token, index) => {
|
|
82
82
|
var _a, _b, _c, _d;
|
|
@@ -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, { useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalButton from '../button/internal.js';\nimport { ButtonDropdownProps } from '../button-dropdown/interfaces.js';\nimport InternalButtonDropdown from '../button-dropdown/internal.js';\nimport InternalFormField from '../form-field/internal.js';\nimport { FormFieldContext } from '../internal/context/form-field-context.js';\nimport { useListFocusController } from '../internal/hooks/use-list-focus-controller.js';\nimport { useMobile } from '../internal/hooks/use-mobile/index.js';\nimport { DropdownStatusProps } from '../types/dropdown-status';\nimport { NonCancelableEventHandler } from '../types/events';\nimport {\n GeneratedAnalyticsMetadataPropertyEditCancel,\n GeneratedAnalyticsMetadataPropertyEditConfirm,\n} from './analytics-metadata/interfaces';\nimport { getAllowedFreeTextOperators, getAllowedOperators } from './controller.js';\nimport { I18nStringsInternal } from './i18n-utils.js';\nimport { ComparisonOperator, GroupText, LoadItemsDetail } from './interfaces.js';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalToken,\n} from './internal-interfaces.js';\nimport { OperatorInput, PropertyInput, ValueInput } from './token-editor-inputs.js';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\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: I18nStringsInternal;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n onSubmit: () => void;\n onDismiss: () => void;\n tokensToCapture: InternalToken[];\n onTokenCapture: (token: InternalToken) => void;\n onTokenRelease: (token: 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 tokensToCapture,\n onTokenCapture,\n onTokenRelease,\n tempGroup,\n onChangeTempGroup,\n}: TokenEditorProps) {\n const [nextFocusIndex, setNextFocusIndex] = useState<null | number>(null);\n const tokenListRef = useListFocusController({\n nextFocusIndex,\n onFocusMoved: target => {\n target.focus();\n setNextFocusIndex(null);\n },\n listItemSelector: `.${styles['token-editor-field-property']}`,\n fallbackSelector: `.${styles['token-editor-add-token']}`,\n });\n\n const groups = tempGroup.map((temporaryToken, index) => {\n const setTemporaryToken = (newToken: InternalToken) => {\n const copy = [...tempGroup];\n copy[index] = newToken;\n if (newToken.property?.getTokenType(newToken.operator) === 'enum' && newToken.value === null) {\n newToken.value = [];\n }\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\n ? getAllowedOperators(filteringProperty)\n : getAllowedFreeTextOperators(freeTextFiltering);\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 const isCustomType = !!matchedProperty?.getValueFormRenderer(operator);\n const value = isCustomType || matchedProperty?.getTokenType(operator) === 'enum' ? null : '';\n setTemporaryToken({ ...temporaryToken, property: matchedProperty, operator, value });\n };\n\n const operator = temporaryToken.operator;\n const onChangeOperator = (newOperator: ComparisonOperator) => {\n const currentOperatorTokenType = property?.getTokenType(operator);\n const newOperatorTokenType = property?.getTokenType(newOperator);\n const shouldClearValue = currentOperatorTokenType !== newOperatorTokenType;\n const value = shouldClearValue ? null : temporaryToken.value;\n setTemporaryToken({ ...temporaryToken, operator: newOperator, value });\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\n return (\n <div className={styles['token-editor']} ref={tokenListRef}>\n <TokenEditorFields\n supportsGroups={supportsGroups}\n tokens={groups.map(group => group.token)}\n onRemove={index => {\n const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);\n onChangeTempGroup(updated);\n setNextFocusIndex(index);\n }}\n onRemoveFromGroup={index => {\n const releasedToken = tempGroup[index];\n const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);\n onChangeTempGroup(updated);\n onTokenRelease(releasedToken);\n setNextFocusIndex(index);\n }}\n onSubmit={onSubmit}\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={supportsGroups ? 'label' : 'option'}\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 className={clsx(styles['token-editor-add-token'], testUtilStyles['token-editor-token-add-actions'])}>\n <InternalButtonDropdown\n variant=\"normal\"\n ariaLabel={i18nStrings.tokenEditorAddTokenActionsAriaLabel}\n items={tokensToCapture.map((token, index) => {\n return {\n id: index.toString(),\n text: i18nStrings.tokenEditorAddExistingTokenLabel?.(token) ?? '',\n ariaLabel: i18nStrings.tokenEditorAddExistingTokenAriaLabel?.(token) ?? '',\n };\n })}\n onItemClick={({ detail }) => {\n const index = parseInt(detail.id);\n if (!isNaN(index) && tokensToCapture[index]) {\n onChangeTempGroup([...tempGroup, { ...tokensToCapture[index] }]);\n setNextFocusIndex(groups.length);\n onTokenCapture(tokensToCapture[index]);\n }\n }}\n disabled={tokensToCapture.length === 0}\n showMainActionOnly={tokensToCapture.length === 0}\n mainAction={{\n text: i18nStrings.tokenEditorAddNewTokenLabel ?? '',\n onClick: () => {\n const lastTokenInGroup = tempGroup[tempGroup.length - 1];\n const property = lastTokenInGroup ? lastTokenInGroup.property : null;\n const operator = property?.defaultOperator ?? ':';\n onChangeTempGroup([...tempGroup, { property, operator, value: null }]);\n setNextFocusIndex(groups.length);\n },\n }}\n />\n </div>\n )}\n\n <div className={styles['token-editor-actions']}>\n <span\n {...getAnalyticsMetadataAttribute({\n action: 'editCancel',\n } as Partial<GeneratedAnalyticsMetadataPropertyEditCancel>)}\n >\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 </span>\n <span\n {...getAnalyticsMetadataAttribute({\n action: 'editConfirm',\n } as Partial<GeneratedAnalyticsMetadataPropertyEditConfirm>)}\n >\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 </span>\n </div>\n </div>\n );\n}\n\ninterface TokenEditorLayout {\n tokens: InternalToken[];\n supportsGroups: boolean;\n onRemove: (index: number) => void;\n onRemoveFromGroup: (index: number) => void;\n onSubmit: () => void;\n renderProperty: (index: number) => React.ReactNode;\n renderOperator: (index: number) => React.ReactNode;\n renderValue: (index: number) => React.ReactNode;\n i18nStrings: I18nStringsInternal;\n}\n\nfunction TokenEditorFields({\n tokens,\n supportsGroups,\n onRemove,\n onRemoveFromGroup,\n onSubmit,\n renderProperty,\n renderOperator,\n renderValue,\n i18nStrings,\n}: TokenEditorLayout) {\n const isMobile = useMobile();\n const isNarrow = isMobile || !supportsGroups;\n\n const propertyLabelId = useUniqueId();\n const operatorLabelId = useUniqueId();\n const valueLabelId = useUniqueId();\n const headers = (\n <div className={styles['token-editor-grid-group']}>\n <div id={propertyLabelId} className={styles['token-editor-grid-header']}>\n {i18nStrings.propertyText}\n </div>\n <div id={operatorLabelId} className={styles['token-editor-grid-header']}>\n {i18nStrings.operatorText}\n </div>\n <div id={valueLabelId} className={styles['token-editor-grid-header']}>\n {i18nStrings.valueText}\n </div>\n <div className={styles['token-editor-grid-header']}></div>\n </div>\n );\n\n return (\n <form\n className={clsx(\n styles['token-editor-grid'],\n isNarrow && styles['token-editor-narrow'],\n styles['token-editor-form']\n )}\n onSubmit={event => {\n event.preventDefault();\n onSubmit();\n }}\n >\n {!isNarrow && headers}\n\n {tokens.map((token, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={i18nStrings.formatToken(token).formattedText}\n className={clsx(styles['token-editor-grid-group'], supportsGroups && styles['token-editor-supports-groups'])}\n >\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.propertyText}\n labelId={propertyLabelId}\n className={clsx(styles['token-editor-field-property'], testUtilStyles['token-editor-field-property'])}\n index={index}\n >\n {renderProperty(index)}\n </TokenEditorField>\n </div>\n\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.operatorText}\n labelId={operatorLabelId}\n className={clsx(styles['token-editor-field-operator'], testUtilStyles['token-editor-field-operator'])}\n index={index}\n >\n {renderOperator(index)}\n </TokenEditorField>\n </div>\n\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.valueText}\n labelId={valueLabelId}\n className={clsx(styles['token-editor-field-value'], testUtilStyles['token-editor-field-value'])}\n index={index}\n >\n {renderValue(index)}\n </TokenEditorField>\n </div>\n\n {supportsGroups && (\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <div className={styles['token-editor-remove-token']}>\n <TokenEditorRemoveActions\n isNarrow={isNarrow}\n ariaLabel={i18nStrings.tokenEditorTokenActionsAriaLabel?.(token) ?? ''}\n mainActionAriaLabel={i18nStrings.tokenEditorTokenRemoveAriaLabel?.(token) ?? ''}\n disabled={tokens.length === 1}\n items={[\n {\n id: 'remove',\n text: i18nStrings.tokenEditorTokenRemoveLabel ?? '',\n disabled: token.standaloneIndex !== undefined,\n },\n { id: 'remove-from-group', text: i18nStrings.tokenEditorTokenRemoveFromGroupLabel ?? '' },\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 </div>\n )}\n </div>\n ))}\n </form>\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} stretch={true} 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 mainActionAriaLabel,\n disabled,\n items,\n onItemClick,\n index,\n}: {\n isNarrow: boolean;\n ariaLabel: string;\n mainActionAriaLabel: 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={{\n text: items[0].text,\n onClick: () => onItemClick(items[0].id),\n disabled,\n ariaLabel: mainActionAriaLabel,\n }}\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
|
+
{"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, { useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalButton from '../button/internal.js';\nimport { ButtonDropdownProps } from '../button-dropdown/interfaces.js';\nimport InternalButtonDropdown from '../button-dropdown/internal.js';\nimport InternalFormField from '../form-field/internal.js';\nimport { FormFieldContext } from '../internal/context/form-field-context.js';\nimport { useListFocusController } from '../internal/hooks/use-list-focus-controller.js';\nimport { useMobile } from '../internal/hooks/use-mobile/index.js';\nimport { DropdownStatusProps } from '../types/dropdown-status';\nimport { NonCancelableEventHandler } from '../types/events';\nimport {\n GeneratedAnalyticsMetadataPropertyEditCancel,\n GeneratedAnalyticsMetadataPropertyEditConfirm,\n} from './analytics-metadata/interfaces';\nimport { getAllowedFreeTextOperators, getAllowedOperators } from './controller.js';\nimport { I18nStringsInternal } from './i18n-utils.js';\nimport { ComparisonOperator, GroupText, LoadItemsDetail } from './interfaces.js';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalToken,\n} from './internal-interfaces.js';\nimport { OperatorInput, PropertyInput, ValueInput } from './token-editor-inputs.js';\n\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\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: I18nStringsInternal;\n onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>;\n onSubmit: () => void;\n onDismiss: () => void;\n tokensToCapture: InternalToken[];\n onTokenCapture: (token: InternalToken) => void;\n onTokenRelease: (token: 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 tokensToCapture,\n onTokenCapture,\n onTokenRelease,\n tempGroup,\n onChangeTempGroup,\n}: TokenEditorProps) {\n const [nextFocusIndex, setNextFocusIndex] = useState<null | number>(null);\n const tokenListRef = useListFocusController({\n nextFocusIndex,\n onFocusMoved: target => {\n target.focus();\n setNextFocusIndex(null);\n },\n listItemSelector: `.${styles['token-editor-field-property']}`,\n fallbackSelector: `.${styles['token-editor-add-token']}`,\n });\n\n const groups = tempGroup.map((temporaryToken, index) => {\n const setTemporaryToken = (newToken: InternalToken) => {\n const copy = [...tempGroup];\n copy[index] = newToken;\n if (newToken.property?.getTokenType(newToken.operator) === 'enum' && newToken.value === null) {\n newToken.value = [];\n }\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\n ? getAllowedOperators(filteringProperty)\n : getAllowedFreeTextOperators(freeTextFiltering);\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 const isCustomType = !!matchedProperty?.getValueFormRenderer(operator);\n const value = isCustomType || matchedProperty?.getTokenType(operator) === 'enum' ? null : '';\n setTemporaryToken({ ...temporaryToken, property: matchedProperty, operator, value });\n };\n\n const operator = temporaryToken.operator;\n const onChangeOperator = (newOperator: ComparisonOperator) => {\n const currentOperatorTokenType = property?.getTokenType(operator);\n const newOperatorTokenType = property?.getTokenType(newOperator);\n const shouldClearValue = currentOperatorTokenType !== newOperatorTokenType;\n const value = shouldClearValue ? null : temporaryToken.value;\n setTemporaryToken({ ...temporaryToken, operator: newOperator, value });\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\n return (\n <div className={styles['token-editor']} ref={tokenListRef}>\n <TokenEditorFields\n supportsGroups={supportsGroups}\n tokens={groups.map(group => group.token)}\n onRemove={index => {\n const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);\n onChangeTempGroup(updated);\n setNextFocusIndex(index);\n }}\n onRemoveFromGroup={index => {\n const releasedToken = tempGroup[index];\n const updated = tempGroup.filter((_, existingIndex) => existingIndex !== index);\n onChangeTempGroup(updated);\n onTokenRelease(releasedToken);\n setNextFocusIndex(index);\n }}\n onSubmit={onSubmit}\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 filteringProperties={filteringProperties}\n freeTextFiltering={freeTextFiltering}\n triggerVariant={supportsGroups ? 'label' : 'option'}\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 className={clsx(styles['token-editor-add-token'], testUtilStyles['token-editor-token-add-actions'])}>\n <InternalButtonDropdown\n variant=\"normal\"\n ariaLabel={i18nStrings.tokenEditorAddTokenActionsAriaLabel}\n items={tokensToCapture.map((token, index) => {\n return {\n id: index.toString(),\n text: i18nStrings.tokenEditorAddExistingTokenLabel?.(token) ?? '',\n ariaLabel: i18nStrings.tokenEditorAddExistingTokenAriaLabel?.(token) ?? '',\n };\n })}\n onItemClick={({ detail }) => {\n const index = parseInt(detail.id);\n if (!isNaN(index) && tokensToCapture[index]) {\n onChangeTempGroup([...tempGroup, { ...tokensToCapture[index] }]);\n setNextFocusIndex(groups.length);\n onTokenCapture(tokensToCapture[index]);\n }\n }}\n disabled={tokensToCapture.length === 0}\n showMainActionOnly={tokensToCapture.length === 0}\n mainAction={{\n text: i18nStrings.tokenEditorAddNewTokenLabel ?? '',\n onClick: () => {\n const lastTokenInGroup = tempGroup[tempGroup.length - 1];\n const property = lastTokenInGroup ? lastTokenInGroup.property : null;\n const operator = property?.defaultOperator ?? ':';\n onChangeTempGroup([...tempGroup, { property, operator, value: null }]);\n setNextFocusIndex(groups.length);\n },\n }}\n />\n </div>\n )}\n\n <div className={styles['token-editor-actions']}>\n <span\n {...getAnalyticsMetadataAttribute({\n action: 'editCancel',\n } as Partial<GeneratedAnalyticsMetadataPropertyEditCancel>)}\n >\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 </span>\n <span\n {...getAnalyticsMetadataAttribute({\n action: 'editConfirm',\n } as Partial<GeneratedAnalyticsMetadataPropertyEditConfirm>)}\n >\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 </span>\n </div>\n </div>\n );\n}\n\ninterface TokenEditorLayout {\n tokens: InternalToken[];\n supportsGroups: boolean;\n onRemove: (index: number) => void;\n onRemoveFromGroup: (index: number) => void;\n onSubmit: () => void;\n renderProperty: (index: number) => React.ReactNode;\n renderOperator: (index: number) => React.ReactNode;\n renderValue: (index: number) => React.ReactNode;\n i18nStrings: I18nStringsInternal;\n}\n\nfunction TokenEditorFields({\n tokens,\n supportsGroups,\n onRemove,\n onRemoveFromGroup,\n onSubmit,\n renderProperty,\n renderOperator,\n renderValue,\n i18nStrings,\n}: TokenEditorLayout) {\n const isMobile = useMobile();\n const isNarrow = isMobile || !supportsGroups;\n\n const propertyLabelId = useUniqueId();\n const operatorLabelId = useUniqueId();\n const valueLabelId = useUniqueId();\n const headers = (\n <div className={styles['token-editor-grid-group']}>\n <div id={propertyLabelId} className={styles['token-editor-grid-header']}>\n {i18nStrings.propertyText}\n </div>\n <div id={operatorLabelId} className={styles['token-editor-grid-header']}>\n {i18nStrings.operatorText}\n </div>\n <div id={valueLabelId} className={styles['token-editor-grid-header']}>\n {i18nStrings.valueText}\n </div>\n <div className={styles['token-editor-grid-header']}></div>\n </div>\n );\n\n return (\n <form\n className={clsx(\n styles['token-editor-grid'],\n isNarrow && styles['token-editor-narrow'],\n styles['token-editor-form']\n )}\n onSubmit={event => {\n event.preventDefault();\n onSubmit();\n }}\n >\n {!isNarrow && headers}\n\n {tokens.map((token, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={i18nStrings.formatToken(token).formattedText}\n className={clsx(styles['token-editor-grid-group'], supportsGroups && styles['token-editor-supports-groups'])}\n >\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.propertyText}\n labelId={propertyLabelId}\n className={clsx(styles['token-editor-field-property'], testUtilStyles['token-editor-field-property'])}\n index={index}\n >\n {renderProperty(index)}\n </TokenEditorField>\n </div>\n\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.operatorText}\n labelId={operatorLabelId}\n className={clsx(styles['token-editor-field-operator'], testUtilStyles['token-editor-field-operator'])}\n index={index}\n >\n {renderOperator(index)}\n </TokenEditorField>\n </div>\n\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <TokenEditorField\n isNarrow={isNarrow}\n label={i18nStrings.valueText}\n labelId={valueLabelId}\n className={clsx(styles['token-editor-field-value'], testUtilStyles['token-editor-field-value'])}\n index={index}\n >\n {renderValue(index)}\n </TokenEditorField>\n </div>\n\n {supportsGroups && (\n <div className={clsx(styles['token-editor-grid-cell'], isNarrow && styles['token-editor-narrow'])}>\n <div className={styles['token-editor-remove-token']}>\n <TokenEditorRemoveActions\n isNarrow={isNarrow}\n ariaLabel={i18nStrings.tokenEditorTokenActionsAriaLabel?.(token) ?? ''}\n mainActionAriaLabel={i18nStrings.tokenEditorTokenRemoveAriaLabel?.(token) ?? ''}\n disabled={tokens.length === 1}\n items={[\n {\n id: 'remove',\n text: i18nStrings.tokenEditorTokenRemoveLabel ?? '',\n disabled: token.standaloneIndex !== undefined,\n },\n { id: 'remove-from-group', text: i18nStrings.tokenEditorTokenRemoveFromGroupLabel ?? '' },\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 </div>\n )}\n </div>\n ))}\n </form>\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} stretch={true} 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 mainActionAriaLabel,\n disabled,\n items,\n onItemClick,\n index,\n}: {\n isNarrow: boolean;\n ariaLabel: string;\n mainActionAriaLabel: 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={{\n text: items[0].text,\n onClick: () => onItemClick(items[0].id),\n disabled,\n ariaLabel: mainActionAriaLabel,\n }}\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/property-filter/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,kBAAkB,GAAG,YAAY,IAAI,aAAa,CAG/G;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,aAAa,GAAG,kBAAkB,GAC/C,YAAY,IAAI,kBAAkB,CAGpC;AAGD,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,EACzD,aAAa,EAAE,MAAM,GACpB,IAAI,GAAG,yBAAyB,CAgBlC;AAGD,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,EAC/C,aAAa,EAAE,MAAM,GACpB,IAAI,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/property-filter/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,kBAAkB,GAAG,YAAY,IAAI,aAAa,CAG/G;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,aAAa,GAAG,kBAAkB,GAC/C,YAAY,IAAI,kBAAkB,CAGpC;AAGD,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,EACzD,aAAa,EAAE,MAAM,GACpB,IAAI,GAAG,yBAAyB,CAgBlC;AAGD,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,EAC/C,aAAa,EAAE,MAAM,GACpB,IAAI,GAAG,kBAAkB,CAuB3B;AAGD,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,EAC/C,aAAa,EAAE,MAAM,GACpB,IAAI,GAAG,MAAM,CAUf;AAED,wBAAgB,eAAe,CAC7B,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAC5C,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,GACnD,KAAK,CA0BP;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUhD;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAQ9D;AAMD,UAAU,aAAa;IACrB,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,UAAU,kBAAkB,CAAC,CAAC,SAAS,aAAa;IAClD,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CAChD;AAOD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAgBpH"}
|
|
@@ -24,12 +24,21 @@ export function matchFilteringProperty(filteringProperties, filteringText) {
|
|
|
24
24
|
}
|
|
25
25
|
// Finds the longest operator the filtering text starts from.
|
|
26
26
|
export function matchOperator(allowedOperators, filteringText) {
|
|
27
|
-
|
|
27
|
+
const lowerText = filteringText.toLowerCase();
|
|
28
28
|
let maxLength = 0;
|
|
29
29
|
let matchedOperator = null;
|
|
30
30
|
for (const operator of allowedOperators) {
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const lowerOp = operator.toLowerCase();
|
|
32
|
+
if (lowerOp.length > maxLength && startsWith(lowerText, lowerOp)) {
|
|
33
|
+
// Text-based operators (containing letters) require a word boundary after the match
|
|
34
|
+
// to avoid matching the operator as a prefix of a value (e.g. "in" matching "internal").
|
|
35
|
+
if (/[a-zA-Z]/.test(operator)) {
|
|
36
|
+
const charAfter = lowerText[lowerOp.length];
|
|
37
|
+
if (charAfter !== undefined && charAfter !== ' ') {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
maxLength = lowerOp.length;
|
|
33
42
|
matchedOperator = operator;
|
|
34
43
|
}
|
|
35
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/property-filter/utils.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAUtC,MAAM,UAAU,eAAe,CAAC,YAAgD;IAC9E,MAAM,GAAG,GAAwB,UAAU,CAAC;IAC5C,OAAO,GAAG,IAAI,YAAY,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,YAAgD;IAEhD,MAAM,GAAG,GAA6B,WAAW,CAAC;IAClD,OAAO,GAAG,IAAI,YAAY,CAAC;AAC7B,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,sBAAsB,CACpC,mBAAyD,EACzD,aAAqB;IAErB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,eAAe,GAAqC,IAAI,CAAC;IAE7D,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,IACE,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,SAAS,IAAI,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YACjG,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS;gBACxC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,EAChF,CAAC;YACD,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;YAC1C,eAAe,GAAG,QAAQ,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAC3B,gBAA+C,EAC/C,aAAqB;IAErB,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,eAAe,GAA8B,IAAI,CAAC;IAEtD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACrF,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC5B,eAAe,GAAG,QAAQ,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,mBAAmB,CACjC,gBAA+C,EAC/C,aAAqB;IAErB,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACpE,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAiB,EAC5C,gBAAoD;;IAEpD,MAAM,SAAS,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,CAAC,KAAc,EAAE,EAAE;QACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,SAAS,GAAU,EAAE,WAAW,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAEnG,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;YAC1F,+BAA+B;YAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,CAAC;QAED,+EAA+E;QAC/E,mGAAmG;QACnG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAA,MAAA,MAAM,CAAC,KAAK,mCAAI,MAAM,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5G,yEAAyE;YACzE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACtB,YAAY,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,QAAgB;IAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACrE,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5D,2EAA2E;IAC3E,kFAAkF;IAClF,oFAAoF;IACpF,6BAA6B;IAC7B,OAAO,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,MAAc;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAWD,SAAS,eAAe,CAA0B,YAAuC;IACvF,MAAM,GAAG,GAAwB,UAAU,CAAC;IAC5C,OAAO,GAAG,IAAI,YAAY,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAA0B,WAAmD;IAC7G,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,MAAM,YAAY,IAAI,WAAW,EAAE,CAAC;QACvC,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,kBAAkB,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACrD,IAAI,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,8BAA8B;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { ComparisonOperator, Token } from './interfaces';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalToken,\n InternalTokenGroup,\n} from './internal-interfaces';\n\nexport function isInternalToken(tokenOrGroup: InternalToken | InternalTokenGroup): tokenOrGroup is InternalToken {\n const key: keyof InternalToken = 'operator';\n return key in tokenOrGroup;\n}\n\nexport function isInternalTokenGroup(\n tokenOrGroup: InternalToken | InternalTokenGroup\n): tokenOrGroup is InternalTokenGroup {\n const key: keyof InternalTokenGroup = 'operation';\n return key in tokenOrGroup;\n}\n\n// Finds the longest property the filtering text starts from.\nexport function matchFilteringProperty(\n filteringProperties: readonly InternalFilteringProperty[],\n filteringText: string\n): null | InternalFilteringProperty {\n let maxLength = 0;\n let matchedProperty: null | InternalFilteringProperty = null;\n\n for (const property of filteringProperties) {\n if (\n (property.propertyLabel.length >= maxLength && startsWith(filteringText, property.propertyLabel)) ||\n (property.propertyLabel.length > maxLength &&\n startsWith(filteringText.toLowerCase(), property.propertyLabel.toLowerCase()))\n ) {\n maxLength = property.propertyLabel.length;\n matchedProperty = property;\n }\n }\n\n return matchedProperty;\n}\n\n// Finds the longest operator the filtering text starts from.\nexport function matchOperator(\n allowedOperators: readonly ComparisonOperator[],\n filteringText: string\n): null | ComparisonOperator {\n filteringText = filteringText.toLowerCase();\n\n let maxLength = 0;\n let matchedOperator: null | ComparisonOperator = null;\n\n for (const operator of allowedOperators) {\n if (operator.length > maxLength && startsWith(filteringText, operator.toLowerCase())) {\n maxLength = operator.length;\n matchedOperator = operator;\n }\n }\n\n return matchedOperator;\n}\n\n// Finds if the filtering text matches any operator prefix.\nexport function matchOperatorPrefix(\n allowedOperators: readonly ComparisonOperator[],\n filteringText: string\n): null | string {\n if (filteringText.trim().length === 0) {\n return '';\n }\n for (const operator of allowedOperators) {\n if (startsWith(operator.toLowerCase(), filteringText.toLowerCase())) {\n return filteringText;\n }\n }\n return null;\n}\n\nexport function matchTokenValue(\n { property, operator, value }: InternalToken,\n filteringOptions: readonly InternalFilteringOption[]\n): Token {\n const tokenType = property?.getTokenType(operator);\n const propertyOptions = filteringOptions.filter(option => option.property === property);\n const castValue = (value: unknown) => {\n if (value === null) {\n return tokenType === 'enum' ? [] : null;\n }\n return tokenType === 'enum' && !Array.isArray(value) ? [value] : value;\n };\n const bestMatch: Token = { propertyKey: property?.propertyKey, operator, value: castValue(value) };\n\n for (const option of propertyOptions) {\n if ((option.label && option.label === value) || (!option.label && option.value === value)) {\n // exact match found: return it\n return { propertyKey: property?.propertyKey, operator, value: castValue(option.value) };\n }\n\n // By default, the token value is a string, but when a custom property is used,\n // the token value can be any, therefore we need to check for its type before calling toLowerCase()\n if (typeof value === 'string' && value.toLowerCase() === (option.label ?? option.value ?? '').toLowerCase()) {\n // non-exact match: save and keep running in case exact match found later\n bestMatch.value = castValue(option.value);\n }\n }\n\n return bestMatch;\n}\n\nexport function trimStart(source: string): string {\n let spacesLength = 0;\n for (let i = 0; i < source.length; i++) {\n if (source[i] === ' ') {\n spacesLength++;\n } else {\n break;\n }\n }\n return source.slice(spacesLength);\n}\n\nfunction trimFirstSpace(source: string): string {\n return source[0] === ' ' ? source.slice(1) : source;\n}\n\nexport function removeOperator(source: string, operator: string) {\n const operatorLastIndex = source.indexOf(operator) + operator.length;\n const textWithoutOperator = source.slice(operatorLastIndex);\n // We need to remove the first leading space in case the user presses space\n // after the operator, for example: Owner: admin, will result in value of ` admin`\n // and we need to remove the first space, if the user added any more spaces only the\n // first one will be removed.\n return trimFirstSpace(textWithoutOperator);\n}\n\nfunction startsWith(source: string, target: string): boolean {\n return source.indexOf(target) === 0;\n}\n\ninterface AbstractToken {\n operator: any;\n}\n\ninterface AbstractTokenGroup<T extends AbstractToken> {\n operation: any;\n tokens: readonly (T | AbstractTokenGroup<T>)[];\n}\n\nfunction isAbstractToken<T extends AbstractToken>(tokenOrGroup: T | AbstractTokenGroup<T>): tokenOrGroup is T {\n const key: keyof AbstractToken = 'operator';\n return key in tokenOrGroup;\n}\n\n/**\n * Transforms query token groups to tokens (only taking 1 level of nesting).\n */\nexport function tokenGroupToTokens<T extends AbstractToken>(tokenGroups: readonly (T | AbstractTokenGroup<T>)[]): T[] {\n const tokens: T[] = [];\n for (const tokenOrGroup of tokenGroups) {\n if (isAbstractToken(tokenOrGroup)) {\n tokens.push(tokenOrGroup);\n } else {\n for (const nestedTokenOrGroup of tokenOrGroup.tokens) {\n if (isAbstractToken(nestedTokenOrGroup)) {\n tokens.push(nestedTokenOrGroup);\n } else {\n // Ignore deeply nested tokens\n }\n }\n }\n }\n return tokens;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/property-filter/utils.ts"],"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 { ComparisonOperator, Token } from './interfaces';\nimport {\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalToken,\n InternalTokenGroup,\n} from './internal-interfaces';\n\nexport function isInternalToken(tokenOrGroup: InternalToken | InternalTokenGroup): tokenOrGroup is InternalToken {\n const key: keyof InternalToken = 'operator';\n return key in tokenOrGroup;\n}\n\nexport function isInternalTokenGroup(\n tokenOrGroup: InternalToken | InternalTokenGroup\n): tokenOrGroup is InternalTokenGroup {\n const key: keyof InternalTokenGroup = 'operation';\n return key in tokenOrGroup;\n}\n\n// Finds the longest property the filtering text starts from.\nexport function matchFilteringProperty(\n filteringProperties: readonly InternalFilteringProperty[],\n filteringText: string\n): null | InternalFilteringProperty {\n let maxLength = 0;\n let matchedProperty: null | InternalFilteringProperty = null;\n\n for (const property of filteringProperties) {\n if (\n (property.propertyLabel.length >= maxLength && startsWith(filteringText, property.propertyLabel)) ||\n (property.propertyLabel.length > maxLength &&\n startsWith(filteringText.toLowerCase(), property.propertyLabel.toLowerCase()))\n ) {\n maxLength = property.propertyLabel.length;\n matchedProperty = property;\n }\n }\n\n return matchedProperty;\n}\n\n// Finds the longest operator the filtering text starts from.\nexport function matchOperator(\n allowedOperators: readonly ComparisonOperator[],\n filteringText: string\n): null | ComparisonOperator {\n const lowerText = filteringText.toLowerCase();\n\n let maxLength = 0;\n let matchedOperator: null | ComparisonOperator = null;\n\n for (const operator of allowedOperators) {\n const lowerOp = operator.toLowerCase();\n if (lowerOp.length > maxLength && startsWith(lowerText, lowerOp)) {\n // Text-based operators (containing letters) require a word boundary after the match\n // to avoid matching the operator as a prefix of a value (e.g. \"in\" matching \"internal\").\n if (/[a-zA-Z]/.test(operator)) {\n const charAfter = lowerText[lowerOp.length];\n if (charAfter !== undefined && charAfter !== ' ') {\n continue;\n }\n }\n maxLength = lowerOp.length;\n matchedOperator = operator;\n }\n }\n\n return matchedOperator;\n}\n\n// Finds if the filtering text matches any operator prefix.\nexport function matchOperatorPrefix(\n allowedOperators: readonly ComparisonOperator[],\n filteringText: string\n): null | string {\n if (filteringText.trim().length === 0) {\n return '';\n }\n for (const operator of allowedOperators) {\n if (startsWith(operator.toLowerCase(), filteringText.toLowerCase())) {\n return filteringText;\n }\n }\n return null;\n}\n\nexport function matchTokenValue(\n { property, operator, value }: InternalToken,\n filteringOptions: readonly InternalFilteringOption[]\n): Token {\n const tokenType = property?.getTokenType(operator);\n const propertyOptions = filteringOptions.filter(option => option.property === property);\n const castValue = (value: unknown) => {\n if (value === null) {\n return tokenType === 'enum' ? [] : null;\n }\n return tokenType === 'enum' && !Array.isArray(value) ? [value] : value;\n };\n const bestMatch: Token = { propertyKey: property?.propertyKey, operator, value: castValue(value) };\n\n for (const option of propertyOptions) {\n if ((option.label && option.label === value) || (!option.label && option.value === value)) {\n // exact match found: return it\n return { propertyKey: property?.propertyKey, operator, value: castValue(option.value) };\n }\n\n // By default, the token value is a string, but when a custom property is used,\n // the token value can be any, therefore we need to check for its type before calling toLowerCase()\n if (typeof value === 'string' && value.toLowerCase() === (option.label ?? option.value ?? '').toLowerCase()) {\n // non-exact match: save and keep running in case exact match found later\n bestMatch.value = castValue(option.value);\n }\n }\n\n return bestMatch;\n}\n\nexport function trimStart(source: string): string {\n let spacesLength = 0;\n for (let i = 0; i < source.length; i++) {\n if (source[i] === ' ') {\n spacesLength++;\n } else {\n break;\n }\n }\n return source.slice(spacesLength);\n}\n\nfunction trimFirstSpace(source: string): string {\n return source[0] === ' ' ? source.slice(1) : source;\n}\n\nexport function removeOperator(source: string, operator: string) {\n const operatorLastIndex = source.indexOf(operator) + operator.length;\n const textWithoutOperator = source.slice(operatorLastIndex);\n // We need to remove the first leading space in case the user presses space\n // after the operator, for example: Owner: admin, will result in value of ` admin`\n // and we need to remove the first space, if the user added any more spaces only the\n // first one will be removed.\n return trimFirstSpace(textWithoutOperator);\n}\n\nfunction startsWith(source: string, target: string): boolean {\n return source.indexOf(target) === 0;\n}\n\ninterface AbstractToken {\n operator: any;\n}\n\ninterface AbstractTokenGroup<T extends AbstractToken> {\n operation: any;\n tokens: readonly (T | AbstractTokenGroup<T>)[];\n}\n\nfunction isAbstractToken<T extends AbstractToken>(tokenOrGroup: T | AbstractTokenGroup<T>): tokenOrGroup is T {\n const key: keyof AbstractToken = 'operator';\n return key in tokenOrGroup;\n}\n\n/**\n * Transforms query token groups to tokens (only taking 1 level of nesting).\n */\nexport function tokenGroupToTokens<T extends AbstractToken>(tokenGroups: readonly (T | AbstractTokenGroup<T>)[]): T[] {\n const tokens: T[] = [];\n for (const tokenOrGroup of tokenGroups) {\n if (isAbstractToken(tokenOrGroup)) {\n tokens.push(tokenOrGroup);\n } else {\n for (const nestedTokenOrGroup of tokenOrGroup.tokens) {\n if (isAbstractToken(nestedTokenOrGroup)) {\n tokens.push(nestedTokenOrGroup);\n } else {\n // Ignore deeply nested tokens\n }\n }\n }\n }\n return tokens;\n}\n"]}
|