@cloudscape-design/components 3.0.1289 → 3.0.1291

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/app-layout/visual-refresh-toolbar/skeleton/index.d.ts.map +1 -1
  2. package/app-layout/visual-refresh-toolbar/skeleton/index.js +8 -2
  3. package/app-layout/visual-refresh-toolbar/skeleton/index.js.map +1 -1
  4. package/app-layout/visual-refresh-toolbar/skeleton/multi-layout.d.ts.map +1 -1
  5. package/app-layout/visual-refresh-toolbar/skeleton/multi-layout.js +5 -2
  6. package/app-layout/visual-refresh-toolbar/skeleton/multi-layout.js.map +1 -1
  7. package/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.d.ts.map +1 -1
  8. package/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.js +12 -3
  9. package/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.js.map +1 -1
  10. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.d.ts +5 -0
  11. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.d.ts.map +1 -1
  12. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.js +13 -4
  13. package/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.js.map +1 -1
  14. package/autosuggest/autosuggest-option.d.ts.map +1 -1
  15. package/autosuggest/autosuggest-option.js +19 -19
  16. package/autosuggest/autosuggest-option.js.map +1 -1
  17. package/internal/base-component/styles.scoped.css +1 -1
  18. package/internal/environment.js +2 -2
  19. package/internal/environment.json +2 -2
  20. package/internal/manifest.json +1 -1
  21. package/package.json +1 -1
  22. package/property-filter/controller.d.ts +1 -0
  23. package/property-filter/controller.d.ts.map +1 -1
  24. package/property-filter/controller.js +7 -4
  25. package/property-filter/controller.js.map +1 -1
  26. package/property-filter/interfaces.d.ts +10 -2
  27. package/property-filter/interfaces.d.ts.map +1 -1
  28. package/property-filter/interfaces.js.map +1 -1
  29. package/property-filter/token-editor-inputs.d.ts.map +1 -1
  30. package/property-filter/token-editor-inputs.js +3 -2
  31. package/property-filter/token-editor-inputs.js.map +1 -1
  32. package/property-filter/token-editor.d.ts.map +1 -1
  33. package/property-filter/token-editor.js +4 -2
  34. package/property-filter/token-editor.js.map +1 -1
  35. package/test-utils/dom/autosuggest/index.js +4 -4
  36. package/test-utils/dom/autosuggest/index.js.map +1 -1
  37. package/test-utils/dom/internal/dropdown-host.js +1 -1
  38. package/test-utils/dom/internal/dropdown-host.js.map +1 -1
  39. package/test-utils/dom/prompt-input/index.js +3 -3
  40. package/test-utils/dom/prompt-input/index.js.map +1 -1
  41. package/test-utils/selectors/autosuggest/index.js +4 -4
  42. package/test-utils/selectors/autosuggest/index.js.map +1 -1
  43. package/test-utils/selectors/internal/dropdown-host.js +1 -1
  44. package/test-utils/selectors/internal/dropdown-host.js.map +1 -1
  45. package/test-utils/selectors/prompt-input/index.js +3 -3
  46. package/test-utils/selectors/prompt-input/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAQ9E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAqB,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAK1E,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,qBAAqB,CAAC;IACtC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,uBAAuB,EAAE,uBAAuB,CAAC;CAClD;AAUD,eAAO,MAAM,cAAc,GAAI,wFAM5B,mBAAmB,gBAsDrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAQ9E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAqB,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAK1E,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,qBAAqB,CAAC;IACtC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,uBAAuB,EAAE,uBAAuB,CAAC;CAClD;AAUD,eAAO,MAAM,cAAc,GAAI,wFAM5B,mBAAmB,gBA+DrB,CAAC"}
@@ -19,7 +19,9 @@ const componentAnalyticsMetadata = {
19
19
  };
20
20
  export const SkeletonLayout = ({ registered, appLayoutProps, appLayoutState, toolbarProps, skeletonSlotsAttributes, }) => {
21
21
  var _a, _b, _c, _d, _e;
22
- const { contentHeader, content, navigationWidth } = appLayoutProps;
22
+ const { content, contentHeader, contentType, maxContentWidth, navigationWidth } = appLayoutProps;
23
+ const isMaxWidth = maxContentWidth === Number.MAX_VALUE || maxContentWidth === Number.MAX_SAFE_INTEGER;
24
+ const contentTypeCustomWidths = ['dashboard', 'cards', 'table'];
23
25
  const mergedProps = {
24
26
  toolbarProps,
25
27
  appLayoutProps,
@@ -28,9 +30,13 @@ export const SkeletonLayout = ({ registered, appLayoutProps, appLayoutState, too
28
30
  const { wrapperElAttributes, mainElAttributes, contentWrapperElAttributes, contentHeaderElAttributes, contentElAttributes, } = skeletonSlotsAttributes;
29
31
  const isWidgetLoaded = isWidgetReady(appLayoutState);
30
32
  return (React.createElement(VisualContext, { contextName: "app-layout-toolbar" },
31
- React.createElement("div", { ...getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata }), ref: appLayoutState.rootRef, "data-awsui-app-layout-widget-loaded": isWidgetLoaded, ...wrapperElAttributes, className: (_a = wrapperElAttributes === null || wrapperElAttributes === void 0 ? void 0 : wrapperElAttributes.className) !== null && _a !== void 0 ? _a : clsx(styles.root, testutilStyles.root), style: (_b = wrapperElAttributes === null || wrapperElAttributes === void 0 ? void 0 : wrapperElAttributes.style) !== null && _b !== void 0 ? _b : {
33
+ React.createElement("div", { ...getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata }), ref: appLayoutState.rootRef, "data-awsui-app-layout-widget-loaded": isWidgetLoaded, ...wrapperElAttributes, className: (_a = wrapperElAttributes === null || wrapperElAttributes === void 0 ? void 0 : wrapperElAttributes.className) !== null && _a !== void 0 ? _a : clsx(styles.root, testutilStyles.root, {
34
+ [styles['has-adaptive-widths-default']]: !contentTypeCustomWidths.includes(contentType),
35
+ [styles['has-adaptive-widths-dashboard']]: contentType === 'dashboard',
36
+ }), style: (_b = wrapperElAttributes === null || wrapperElAttributes === void 0 ? void 0 : wrapperElAttributes.style) !== null && _b !== void 0 ? _b : {
32
37
  blockSize: `calc(100vh - ${appLayoutProps.placement.insetBlockStart + appLayoutProps.placement.insetBlockEnd}px)`,
33
38
  [customCssProps.navigationWidth]: `${navigationWidth}px`,
39
+ [customCssProps.maxContentWidth]: isMaxWidth ? '100%' : maxContentWidth ? `${maxContentWidth}px` : '',
34
40
  } },
35
41
  React.createElement(AppLayoutBeforeMainSlot, { ...mergedProps }),
36
42
  React.createElement("main", { ...mainElAttributes, className: (_c = mainElAttributes === null || mainElAttributes === void 0 ? void 0 : mainElAttributes.className) !== null && _c !== void 0 ? _c : styles['main-landmark'] },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/index.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 from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { GeneratedAnalyticsMetadataAppLayoutToolbarComponent } from '../../../app-layout-toolbar/analytics-metadata/interfaces';\nimport { BuiltInErrorBoundary } from '../../../error-boundary/internal';\nimport VisualContext from '../../../internal/components/visual-context';\nimport customCssProps from '../../../internal/generated/custom-css-properties';\nimport { AppLayoutInternalProps, AppLayoutPendingState } from '../interfaces';\nimport {\n AppLayoutAfterMainSlot,\n AppLayoutBeforeMainSlot,\n AppLayoutBottomContentSlot,\n AppLayoutTopContentSlot,\n} from '../internal';\nimport { isWidgetReady } from '../state/invariants';\nimport { ToolbarProps } from '../toolbar';\nimport { SkeletonPartProps, SkeletonSlotsAttributes } from './interfaces';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport styles from './styles.css.js';\n\nexport interface SkeletonLayoutProps {\n registered: boolean;\n appLayoutProps: AppLayoutInternalProps;\n appLayoutState: AppLayoutPendingState;\n toolbarProps: ToolbarProps | null;\n skeletonSlotsAttributes: SkeletonSlotsAttributes;\n}\n\nconst componentAnalyticsMetadata: GeneratedAnalyticsMetadataAppLayoutToolbarComponent = {\n name: 'awsui.AppLayoutToolbar',\n label: {\n selector: 'h1',\n root: 'body',\n },\n};\n\nexport const SkeletonLayout = ({\n registered,\n appLayoutProps,\n appLayoutState,\n toolbarProps,\n skeletonSlotsAttributes,\n}: SkeletonLayoutProps) => {\n const { contentHeader, content, navigationWidth } = appLayoutProps;\n const mergedProps: SkeletonPartProps = {\n toolbarProps,\n appLayoutProps,\n appLayoutState,\n };\n const {\n wrapperElAttributes,\n mainElAttributes,\n contentWrapperElAttributes,\n contentHeaderElAttributes,\n contentElAttributes,\n } = skeletonSlotsAttributes;\n\n const isWidgetLoaded = isWidgetReady(appLayoutState);\n\n return (\n <VisualContext contextName=\"app-layout-toolbar\">\n <div\n {...getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata })}\n ref={appLayoutState.rootRef as React.Ref<HTMLDivElement>}\n data-awsui-app-layout-widget-loaded={isWidgetLoaded}\n {...wrapperElAttributes}\n className={wrapperElAttributes?.className ?? clsx(styles.root, testutilStyles.root)}\n style={\n wrapperElAttributes?.style ?? {\n blockSize: `calc(100vh - ${appLayoutProps.placement.insetBlockStart + appLayoutProps.placement.insetBlockEnd}px)`,\n [customCssProps.navigationWidth]: `${navigationWidth}px`,\n }\n }\n >\n <AppLayoutBeforeMainSlot {...mergedProps} />\n <main {...mainElAttributes} className={mainElAttributes?.className ?? styles['main-landmark']}>\n <AppLayoutTopContentSlot {...mergedProps} />\n <div\n {...contentWrapperElAttributes}\n className={\n contentWrapperElAttributes?.className ??\n clsx(styles.main, { [styles['main-disable-paddings']]: appLayoutProps.disableContentPaddings })\n }\n >\n {contentHeader && <div {...contentHeaderElAttributes}>{contentHeader}</div>}\n {/*delay rendering the content until registration of this instance is complete*/}\n <div {...contentElAttributes} className={contentElAttributes?.className ?? testutilStyles.content}>\n {registered ? <BuiltInErrorBoundary>{content}</BuiltInErrorBoundary> : null}\n </div>\n </div>\n <AppLayoutBottomContentSlot {...mergedProps} />\n </main>\n <AppLayoutAfterMainSlot {...mergedProps} />\n </div>\n </VisualContext>\n );\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/index.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 from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { GeneratedAnalyticsMetadataAppLayoutToolbarComponent } from '../../../app-layout-toolbar/analytics-metadata/interfaces';\nimport { BuiltInErrorBoundary } from '../../../error-boundary/internal';\nimport VisualContext from '../../../internal/components/visual-context';\nimport customCssProps from '../../../internal/generated/custom-css-properties';\nimport { AppLayoutInternalProps, AppLayoutPendingState } from '../interfaces';\nimport {\n AppLayoutAfterMainSlot,\n AppLayoutBeforeMainSlot,\n AppLayoutBottomContentSlot,\n AppLayoutTopContentSlot,\n} from '../internal';\nimport { isWidgetReady } from '../state/invariants';\nimport { ToolbarProps } from '../toolbar';\nimport { SkeletonPartProps, SkeletonSlotsAttributes } from './interfaces';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport styles from './styles.css.js';\n\nexport interface SkeletonLayoutProps {\n registered: boolean;\n appLayoutProps: AppLayoutInternalProps;\n appLayoutState: AppLayoutPendingState;\n toolbarProps: ToolbarProps | null;\n skeletonSlotsAttributes: SkeletonSlotsAttributes;\n}\n\nconst componentAnalyticsMetadata: GeneratedAnalyticsMetadataAppLayoutToolbarComponent = {\n name: 'awsui.AppLayoutToolbar',\n label: {\n selector: 'h1',\n root: 'body',\n },\n};\n\nexport const SkeletonLayout = ({\n registered,\n appLayoutProps,\n appLayoutState,\n toolbarProps,\n skeletonSlotsAttributes,\n}: SkeletonLayoutProps) => {\n const { content, contentHeader, contentType, maxContentWidth, navigationWidth } = appLayoutProps;\n const isMaxWidth = maxContentWidth === Number.MAX_VALUE || maxContentWidth === Number.MAX_SAFE_INTEGER;\n const contentTypeCustomWidths: Array<string | undefined> = ['dashboard', 'cards', 'table'];\n const mergedProps: SkeletonPartProps = {\n toolbarProps,\n appLayoutProps,\n appLayoutState,\n };\n const {\n wrapperElAttributes,\n mainElAttributes,\n contentWrapperElAttributes,\n contentHeaderElAttributes,\n contentElAttributes,\n } = skeletonSlotsAttributes;\n\n const isWidgetLoaded = isWidgetReady(appLayoutState);\n\n return (\n <VisualContext contextName=\"app-layout-toolbar\">\n <div\n {...getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata })}\n ref={appLayoutState.rootRef as React.Ref<HTMLDivElement>}\n data-awsui-app-layout-widget-loaded={isWidgetLoaded}\n {...wrapperElAttributes}\n className={\n wrapperElAttributes?.className ??\n clsx(styles.root, testutilStyles.root, {\n [styles['has-adaptive-widths-default']]: !contentTypeCustomWidths.includes(contentType),\n [styles['has-adaptive-widths-dashboard']]: contentType === 'dashboard',\n })\n }\n style={\n wrapperElAttributes?.style ?? {\n blockSize: `calc(100vh - ${appLayoutProps.placement.insetBlockStart + appLayoutProps.placement.insetBlockEnd}px)`,\n [customCssProps.navigationWidth]: `${navigationWidth}px`,\n [customCssProps.maxContentWidth]: isMaxWidth ? '100%' : maxContentWidth ? `${maxContentWidth}px` : '',\n }\n }\n >\n <AppLayoutBeforeMainSlot {...mergedProps} />\n <main {...mainElAttributes} className={mainElAttributes?.className ?? styles['main-landmark']}>\n <AppLayoutTopContentSlot {...mergedProps} />\n <div\n {...contentWrapperElAttributes}\n className={\n contentWrapperElAttributes?.className ??\n clsx(styles.main, { [styles['main-disable-paddings']]: appLayoutProps.disableContentPaddings })\n }\n >\n {contentHeader && <div {...contentHeaderElAttributes}>{contentHeader}</div>}\n {/*delay rendering the content until registration of this instance is complete*/}\n <div {...contentElAttributes} className={contentElAttributes?.className ?? testutilStyles.content}>\n {registered ? <BuiltInErrorBoundary>{content}</BuiltInErrorBoundary> : null}\n </div>\n </div>\n <AppLayoutBottomContentSlot {...mergedProps} />\n </main>\n <AppLayoutAfterMainSlot {...mergedProps} />\n </div>\n </VisualContext>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"multi-layout.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/multi-layout.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;AAE9E,wBAAgB,iBAAiB,CAC/B,sBAAsB,EAAE,iBAAiB,EACzC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,UAAU,GACrB;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CA8C5D"}
1
+ {"version":3,"file":"multi-layout.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/multi-layout.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;AAE9E,wBAAgB,iBAAiB,CAC/B,sBAAsB,EAAE,iBAAiB,EACzC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,UAAU,GACrB;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAgD5D"}
@@ -1,9 +1,10 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { useEffect, useLayoutEffect, useState } from 'react';
3
+ import { useContext, useEffect, useLayoutEffect, useState } from 'react';
4
4
  import { metrics } from '../../../internal/metrics';
5
5
  import { awsuiPluginsInternal } from '../../../internal/plugins/api';
6
6
  import { useAppLayoutFlagEnabled } from '../../utils/feature-flags';
7
+ import { AppLayoutToolbarPublicContext } from '../contexts';
7
8
  export function useMultiAppLayout(forceDeduplicationType, isEnabled, props, mergeProps) {
8
9
  const [registration, setRegistration] = useState(null);
9
10
  const isToolbar = useAppLayoutFlagEnabled();
@@ -31,7 +32,9 @@ export function useMultiAppLayout(forceDeduplicationType, isEnabled, props, merg
31
32
  reportMultiLayoutMetric(registration);
32
33
  }
33
34
  }, [registration]);
34
- if (!isToolbar) {
35
+ const isPublicAppLayout = useContext(AppLayoutToolbarPublicContext);
36
+ const isPublicToolbarInSSR = isPublicAppLayout && typeof window === 'undefined';
37
+ if (!isToolbar || isPublicToolbarInSSR) {
35
38
  return {
36
39
  registered: true,
37
40
  // mergeProps is needed here because the toolbar's behavior depends on reconciliation logic
@@ -1 +1 @@
1
- {"version":3,"file":"multi-layout.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/multi-layout.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,MAAM,UAAU,iBAAiB,CAC/B,sBAAyC,EACzC,SAAkB,EAClB,KAAkB,EAClB,UAAsB;IAEtB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAwC,IAAI,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAE5C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS,IAAI,sBAAsB,KAAK,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,sBAAsB,KAAK,KAAK,EAAE,CAAC;YACrC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAC/F,eAAe,CAAC,KAAuC,CAAC,CACzD,CAAC;QACF,OAAO,GAAG,EAAE;YACV,UAAU,EAAE,CAAC;YACb,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,sBAAsB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnD,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,MAAK,WAAW,EAAE,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,2FAA2F;YAC3F,+DAA+D;YAC/D,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAA;QAChC,YAAY,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,MAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;KACxG,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,YAA4C;IAC3E,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,mBAAmB,CAAC,kCAAkC,EAAE;YAC9D,2CAA2C;YAC3C,kEAAkE;YAClE,cAAc,EAAE,YAAY,CAAC,eAAe,CAAC,MAAa;SAC3D,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,mBAAmB,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nimport { metrics } from '../../../internal/metrics';\nimport { awsuiPluginsInternal } from '../../../internal/plugins/api';\nimport { RegistrationState } from '../../../internal/plugins/controllers/app-layout-widget';\nimport { useAppLayoutFlagEnabled } from '../../utils/feature-flags';\nimport { MergeProps, SharedProps } from '../state/interfaces';\nimport { ToolbarProps } from '../toolbar';\n\nexport type DeduplicationType = 'primary' | 'secondary' | 'suspended' | 'off';\n\nexport function useMultiAppLayout(\n forceDeduplicationType: DeduplicationType,\n isEnabled: boolean,\n props: SharedProps,\n mergeProps: MergeProps\n): { registered: boolean; toolbarProps: ToolbarProps | null } {\n const [registration, setRegistration] = useState<RegistrationState<SharedProps> | null>(null);\n const isToolbar = useAppLayoutFlagEnabled();\n\n useLayoutEffect(() => {\n if (!isEnabled || forceDeduplicationType === 'suspended' || !isToolbar) {\n return;\n }\n if (forceDeduplicationType === 'off') {\n setRegistration({ type: 'primary', discoveredProps: [] });\n return;\n }\n const unregister = awsuiPluginsInternal.appLayoutWidget.register(forceDeduplicationType, props =>\n setRegistration(props as RegistrationState<SharedProps>)\n );\n return () => {\n unregister();\n setRegistration({ type: 'suspended' });\n };\n }, [forceDeduplicationType, isEnabled, isToolbar]);\n\n useLayoutEffect(() => {\n if (registration?.type === 'secondary') {\n registration.update(props);\n }\n });\n\n useEffect(() => {\n if (registration) {\n reportMultiLayoutMetric(registration);\n }\n }, [registration]);\n\n if (!isToolbar) {\n return {\n registered: true,\n // mergeProps is needed here because the toolbar's behavior depends on reconciliation logic\n // in this function. For example, navigation trigger visibility\n toolbarProps: mergeProps(props, []),\n };\n }\n\n return {\n registered: !!registration?.type,\n toolbarProps: registration?.type === 'primary' ? mergeProps(props, registration.discoveredProps) : null,\n };\n}\n\nfunction reportMultiLayoutMetric(registration: RegistrationState<SharedProps>) {\n if (registration.type === 'primary' && registration.discoveredProps.length > 0) {\n metrics.sendOpsMetricObject('awsui-multi-layout-usage-primary', {\n // temporary workaround for missing typings\n // https://github.com/cloudscape-design/component-toolkit/pull/153\n instancesCount: registration.discoveredProps.length as any,\n });\n } else if (registration.type === 'suspended') {\n metrics.sendOpsMetricObject('awsui-multi-layout-usage-suspended', {});\n }\n}\n"]}
1
+ {"version":3,"file":"multi-layout.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/multi-layout.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAM5D,MAAM,UAAU,iBAAiB,CAC/B,sBAAyC,EACzC,SAAkB,EAClB,KAAkB,EAClB,UAAsB;IAEtB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAwC,IAAI,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAE5C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS,IAAI,sBAAsB,KAAK,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,sBAAsB,KAAK,KAAK,EAAE,CAAC;YACrC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAC/F,eAAe,CAAC,KAAuC,CAAC,CACzD,CAAC;QACF,OAAO,GAAG,EAAE;YACV,UAAU,EAAE,CAAC;YACb,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,sBAAsB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnD,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,MAAK,WAAW,EAAE,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,iBAAiB,GAAG,UAAU,CAAC,6BAA6B,CAAC,CAAC;IACpE,MAAM,oBAAoB,GAAG,iBAAiB,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC;IAChF,IAAI,CAAC,SAAS,IAAI,oBAAoB,EAAE,CAAC;QACvC,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,2FAA2F;YAC3F,+DAA+D;YAC/D,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAA;QAChC,YAAY,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,MAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;KACxG,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,YAA4C;IAC3E,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,mBAAmB,CAAC,kCAAkC,EAAE;YAC9D,2CAA2C;YAC3C,kEAAkE;YAClE,cAAc,EAAE,YAAY,CAAC,eAAe,CAAC,MAAa;SAC3D,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,mBAAmB,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useContext, useEffect, useLayoutEffect, useState } from 'react';\n\nimport { metrics } from '../../../internal/metrics';\nimport { awsuiPluginsInternal } from '../../../internal/plugins/api';\nimport { RegistrationState } from '../../../internal/plugins/controllers/app-layout-widget';\nimport { useAppLayoutFlagEnabled } from '../../utils/feature-flags';\nimport { AppLayoutToolbarPublicContext } from '../contexts';\nimport { MergeProps, SharedProps } from '../state/interfaces';\nimport { ToolbarProps } from '../toolbar';\n\nexport type DeduplicationType = 'primary' | 'secondary' | 'suspended' | 'off';\n\nexport function useMultiAppLayout(\n forceDeduplicationType: DeduplicationType,\n isEnabled: boolean,\n props: SharedProps,\n mergeProps: MergeProps\n): { registered: boolean; toolbarProps: ToolbarProps | null } {\n const [registration, setRegistration] = useState<RegistrationState<SharedProps> | null>(null);\n const isToolbar = useAppLayoutFlagEnabled();\n\n useLayoutEffect(() => {\n if (!isEnabled || forceDeduplicationType === 'suspended' || !isToolbar) {\n return;\n }\n if (forceDeduplicationType === 'off') {\n setRegistration({ type: 'primary', discoveredProps: [] });\n return;\n }\n const unregister = awsuiPluginsInternal.appLayoutWidget.register(forceDeduplicationType, props =>\n setRegistration(props as RegistrationState<SharedProps>)\n );\n return () => {\n unregister();\n setRegistration({ type: 'suspended' });\n };\n }, [forceDeduplicationType, isEnabled, isToolbar]);\n\n useLayoutEffect(() => {\n if (registration?.type === 'secondary') {\n registration.update(props);\n }\n });\n\n useEffect(() => {\n if (registration) {\n reportMultiLayoutMetric(registration);\n }\n }, [registration]);\n\n const isPublicAppLayout = useContext(AppLayoutToolbarPublicContext);\n const isPublicToolbarInSSR = isPublicAppLayout && typeof window === 'undefined';\n if (!isToolbar || isPublicToolbarInSSR) {\n return {\n registered: true,\n // mergeProps is needed here because the toolbar's behavior depends on reconciliation logic\n // in this function. For example, navigation trigger visibility\n toolbarProps: mergeProps(props, []),\n };\n }\n\n return {\n registered: !!registration?.type,\n toolbarProps: registration?.type === 'primary' ? mergeProps(props, registration.discoveredProps) : null,\n };\n}\n\nfunction reportMultiLayoutMetric(registration: RegistrationState<SharedProps>) {\n if (registration.type === 'primary' && registration.discoveredProps.length > 0) {\n metrics.sendOpsMetricObject('awsui-multi-layout-usage-primary', {\n // temporary workaround for missing typings\n // https://github.com/cloudscape-design/component-toolkit/pull/153\n instancesCount: registration.discoveredProps.length as any,\n });\n } else if (registration.type === 'suspended') {\n metrics.sendOpsMetricObject('awsui-multi-layout-usage-suspended', {});\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-parts.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD;;GAEG;AAEH,eAAO,MAAM,sBAAsB,uFASlC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,eAAe,yGAQ3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,+GAEjC,CAAC"}
1
+ {"version":3,"file":"skeleton-parts.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAOjD;;GAEG;AAEH,eAAO,MAAM,sBAAsB,uFAwClC,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,eAAe,yGAW3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,+GAEjC,CAAC"}
@@ -1,20 +1,29 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import React from 'react';
4
+ import clsx from 'clsx';
5
+ import { InternalButton } from '../../../button/internal';
4
6
  import { NotificationsSlot } from './slots';
5
7
  import { ToolbarSkeletonStructure } from './toolbar-container';
8
+ import navStyles from '../navigation/styles.css.js';
6
9
  import styles from './styles.css.js';
7
10
  /**
8
11
  * New widgetized parts
9
12
  */
10
13
  export const BeforeMainSlotSkeleton = React.forwardRef(({ toolbarProps, appLayoutProps }, ref) => {
14
+ const hasNavigation = toolbarProps ? toolbarProps.hasNavigation : !!appLayoutProps.navigation;
11
15
  return (React.createElement(React.Fragment, null,
12
- !!toolbarProps && React.createElement(ToolbarSkeletonStructure, { ref: ref, ownBreadcrumbs: appLayoutProps.breadcrumbs }),
13
- (toolbarProps === null || toolbarProps === void 0 ? void 0 : toolbarProps.navigationOpen) && React.createElement("div", { className: styles.navigation })));
16
+ !!toolbarProps && (React.createElement(ToolbarSkeletonStructure, { ref: ref, ariaLabels: toolbarProps.ariaLabels, hasNavigation: hasNavigation, navigationOpen: toolbarProps.navigationOpen, ownBreadcrumbs: appLayoutProps.breadcrumbs })),
17
+ hasNavigation && (React.createElement("div", { className: clsx(styles.navigation, !(toolbarProps === null || toolbarProps === void 0 ? void 0 : toolbarProps.navigationOpen) && styles['panel-hidden'], !!(toolbarProps === null || toolbarProps === void 0 ? void 0 : toolbarProps.activeDrawerId) && styles['unfocusable-mobile']) },
18
+ React.createElement("div", { className: clsx(navStyles['navigation-container'], (toolbarProps === null || toolbarProps === void 0 ? void 0 : toolbarProps.navigationOpen) && navStyles['is-navigation-open']) },
19
+ React.createElement("nav", { className: navStyles.navigation },
20
+ React.createElement("div", { className: navStyles['hide-navigation'] },
21
+ React.createElement(InternalButton, { iconName: "angle-left", variant: "icon", formAction: "none" })),
22
+ appLayoutProps.navigation))))));
14
23
  });
15
24
  /**
16
25
  * Legacy parts
17
26
  */
18
- export const ToolbarSkeleton = React.forwardRef(({ appLayoutInternals }, ref) => (React.createElement(ToolbarSkeletonStructure, { ref: ref, ownBreadcrumbs: appLayoutInternals.breadcrumbs, discoveredBreadcrumbs: appLayoutInternals.discoveredBreadcrumbs })));
27
+ export const ToolbarSkeleton = React.forwardRef(({ appLayoutInternals }, ref) => (React.createElement(ToolbarSkeletonStructure, { ref: ref, ariaLabels: appLayoutInternals.ariaLabels, expandedDrawerId: appLayoutInternals.expandedDrawerId, navigationOpen: appLayoutInternals.navigationOpen, ownBreadcrumbs: appLayoutInternals.breadcrumbs, discoveredBreadcrumbs: appLayoutInternals.discoveredBreadcrumbs })));
19
28
  export const NotificationsSkeleton = React.forwardRef((props, ref) => React.createElement(NotificationsSlot, { ref: ref }));
20
29
  //# sourceMappingURL=skeleton-parts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-parts.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC;;GAEG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC,UAAU,CACpD,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE;IACxC,OAAO,CACL;QACG,CAAC,CAAC,YAAY,IAAI,oBAAC,wBAAwB,IAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,CAAC,WAAW,GAAI;QACpG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,KAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,UAAU,GAAI,CACrE,CACJ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CAAC,EAAE,kBAAkB,EAAuC,EAAE,GAAG,EAAE,EAAE,CAAC,CACpE,oBAAC,wBAAwB,IACvB,GAAG,EAAE,GAAG,EACR,cAAc,EAAE,kBAAkB,CAAC,WAAW,EAC9C,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB,GAC/D,CACH,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,UAAU,CACnD,CAAC,KAAgD,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAC,iBAAiB,IAAC,GAAG,EAAE,GAAG,GAAI,CAC3F,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { AppLayoutNotificationsImplementationProps } from '../notifications';\nimport { AppLayoutToolbarImplementationProps } from '../toolbar';\nimport { SkeletonPartProps } from './interfaces';\nimport { NotificationsSlot } from './slots';\nimport { ToolbarSkeletonStructure } from './toolbar-container';\n\nimport styles from './styles.css.js';\n\n/**\n * New widgetized parts\n */\n\nexport const BeforeMainSlotSkeleton = React.forwardRef<HTMLElement, SkeletonPartProps>(\n ({ toolbarProps, appLayoutProps }, ref) => {\n return (\n <>\n {!!toolbarProps && <ToolbarSkeletonStructure ref={ref} ownBreadcrumbs={appLayoutProps.breadcrumbs} />}\n {toolbarProps?.navigationOpen && <div className={styles.navigation} />}\n </>\n );\n }\n);\n\n/**\n * Legacy parts\n */\n\nexport const ToolbarSkeleton = React.forwardRef<HTMLElement, AppLayoutToolbarImplementationProps>(\n ({ appLayoutInternals }: AppLayoutToolbarImplementationProps, ref) => (\n <ToolbarSkeletonStructure\n ref={ref}\n ownBreadcrumbs={appLayoutInternals.breadcrumbs}\n discoveredBreadcrumbs={appLayoutInternals.discoveredBreadcrumbs}\n />\n )\n);\n\nexport const NotificationsSkeleton = React.forwardRef<HTMLElement, AppLayoutNotificationsImplementationProps>(\n (props: AppLayoutNotificationsImplementationProps, ref) => <NotificationsSlot ref={ref} />\n);\n"]}
1
+ {"version":3,"file":"skeleton-parts.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC;;GAEG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC,UAAU,CACpD,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE;IACxC,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC;IAC9F,OAAO,CACL;QACG,CAAC,CAAC,YAAY,IAAI,CACjB,oBAAC,wBAAwB,IACvB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,YAAY,CAAC,cAAc,EAC3C,cAAc,EAAE,cAAc,CAAC,WAAW,GAC1C,CACH;QACA,aAAa,IAAI,CAChB,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,UAAU,EACjB,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAA,IAAI,MAAM,CAAC,cAAc,CAAC,EACvD,CAAC,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAA,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAC/D;YAED,6BACE,SAAS,EAAE,IAAI,CACb,SAAS,CAAC,sBAAsB,CAAC,EACjC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,KAAI,SAAS,CAAC,oBAAoB,CAAC,CAChE;gBAED,6BAAK,SAAS,EAAE,SAAS,CAAC,UAAU;oBAClC,6BAAK,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC;wBAC1C,oBAAC,cAAc,IAAC,QAAQ,EAAC,YAAY,EAAC,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM,GAAG,CACrE;oBACL,cAAc,CAAC,UAAU,CACtB,CACF,CACF,CACP,CACA,CACJ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CAAC,EAAE,kBAAkB,EAAuC,EAAE,GAAG,EAAE,EAAE,CAAC,CACpE,oBAAC,wBAAwB,IACvB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,kBAAkB,CAAC,UAAU,EACzC,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB,EACrD,cAAc,EAAE,kBAAkB,CAAC,cAAc,EACjD,cAAc,EAAE,kBAAkB,CAAC,WAAW,EAC9C,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB,GAC/D,CACH,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,UAAU,CACnD,CAAC,KAAgD,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAC,iBAAiB,IAAC,GAAG,EAAE,GAAG,GAAI,CAC3F,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { InternalButton } from '../../../button/internal';\nimport { AppLayoutNotificationsImplementationProps } from '../notifications';\nimport { AppLayoutToolbarImplementationProps } from '../toolbar';\nimport { SkeletonPartProps } from './interfaces';\nimport { NotificationsSlot } from './slots';\nimport { ToolbarSkeletonStructure } from './toolbar-container';\n\nimport navStyles from '../navigation/styles.css.js';\nimport styles from './styles.css.js';\n\n/**\n * New widgetized parts\n */\n\nexport const BeforeMainSlotSkeleton = React.forwardRef<HTMLElement, SkeletonPartProps>(\n ({ toolbarProps, appLayoutProps }, ref) => {\n const hasNavigation = toolbarProps ? toolbarProps.hasNavigation : !!appLayoutProps.navigation;\n return (\n <>\n {!!toolbarProps && (\n <ToolbarSkeletonStructure\n ref={ref}\n ariaLabels={toolbarProps.ariaLabels}\n hasNavigation={hasNavigation}\n navigationOpen={toolbarProps.navigationOpen}\n ownBreadcrumbs={appLayoutProps.breadcrumbs}\n />\n )}\n {hasNavigation && (\n <div\n className={clsx(\n styles.navigation,\n !toolbarProps?.navigationOpen && styles['panel-hidden'],\n !!toolbarProps?.activeDrawerId && styles['unfocusable-mobile']\n )}\n >\n <div\n className={clsx(\n navStyles['navigation-container'],\n toolbarProps?.navigationOpen && navStyles['is-navigation-open']\n )}\n >\n <nav className={navStyles.navigation}>\n <div className={navStyles['hide-navigation']}>\n <InternalButton iconName=\"angle-left\" variant=\"icon\" formAction=\"none\" />\n </div>\n {appLayoutProps.navigation}\n </nav>\n </div>\n </div>\n )}\n </>\n );\n }\n);\n\n/**\n * Legacy parts\n */\n\nexport const ToolbarSkeleton = React.forwardRef<HTMLElement, AppLayoutToolbarImplementationProps>(\n ({ appLayoutInternals }: AppLayoutToolbarImplementationProps, ref) => (\n <ToolbarSkeletonStructure\n ref={ref}\n ariaLabels={appLayoutInternals.ariaLabels}\n expandedDrawerId={appLayoutInternals.expandedDrawerId}\n navigationOpen={appLayoutInternals.navigationOpen}\n ownBreadcrumbs={appLayoutInternals.breadcrumbs}\n discoveredBreadcrumbs={appLayoutInternals.discoveredBreadcrumbs}\n />\n )\n);\n\nexport const NotificationsSkeleton = React.forwardRef<HTMLElement, AppLayoutNotificationsImplementationProps>(\n (props: AppLayoutNotificationsImplementationProps, ref) => <NotificationsSlot ref={ref} />\n);\n"]}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { AppLayoutProps } from '../../../app-layout/interfaces';
2
3
  import { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';
3
4
  interface ToolbarContainerProps {
4
5
  children: React.ReactNode;
@@ -19,6 +20,10 @@ export declare function ToolbarBreadcrumbsSection({
19
20
  includeTestUtils
20
21
  }: ToolbarBreadcrumbsSectionProps): JSX.Element;
21
22
  interface ToolbarSkeletonStructureProps {
23
+ ariaLabels?: AppLayoutProps.Labels;
24
+ expandedDrawerId?: string | null;
25
+ hasNavigation?: boolean;
26
+ navigationOpen?: boolean;
22
27
  ownBreadcrumbs: React.ReactNode;
23
28
  discoveredBreadcrumbs?: BreadcrumbGroupProps | null;
24
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-container.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAM5E,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,qBAAqB,eAMhF;AAED,UAAU,8BAA8B;IACtC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,gBAAwB,GACzB,EAAE,8BAA8B,eAQhC;AAED,UAAU,6BAA6B;IACrC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,wBAAwB,mGAapC,CAAC"}
1
+ {"version":3,"file":"toolbar-container.d.ts","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAO5E,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,qBAAqB,eAMhF;AAED,UAAU,8BAA8B;IACtC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,gBAAwB,GACzB,EAAE,8BAA8B,eAQhC;AAED,UAAU,6BAA6B;IACrC,UAAU,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,qBAAqB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,wBAAwB,mGA8BpC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import React from 'react';
4
4
  import clsx from 'clsx';
5
+ import TriggerButton from '../toolbar/trigger-button';
5
6
  import { BreadcrumbsSlot, ToolbarSlot } from './slots';
6
7
  import testutilStyles from '../../test-classes/styles.css.js';
7
8
  import toolbarStyles from '../toolbar/styles.css.js';
@@ -12,8 +13,16 @@ export function ToolbarBreadcrumbsSection({ ownBreadcrumbs, discoveredBreadcrumb
12
13
  return (React.createElement("div", { className: clsx(toolbarStyles['universal-toolbar-breadcrumbs'], includeTestUtils && testutilStyles.breadcrumbs) },
13
14
  React.createElement(BreadcrumbsSlot, { ownBreadcrumbs: ownBreadcrumbs, discoveredBreadcrumbs: discoveredBreadcrumbs })));
14
15
  }
15
- export const ToolbarSkeletonStructure = React.forwardRef(({ ownBreadcrumbs, discoveredBreadcrumbs }, ref) => (React.createElement(ToolbarSlot, { ref: ref },
16
- React.createElement(ToolbarContainer, null,
17
- React.createElement(ToolbarBreadcrumbsSection, { ownBreadcrumbs: ownBreadcrumbs, discoveredBreadcrumbs: discoveredBreadcrumbs, includeTestUtils: true }),
18
- React.createElement("div", { className: toolbarStyles['universal-toolbar-drawers'] })))));
16
+ export const ToolbarSkeletonStructure = React.forwardRef(({ ariaLabels, expandedDrawerId, hasNavigation, navigationOpen, ownBreadcrumbs, discoveredBreadcrumbs }, ref) => {
17
+ var _a;
18
+ const drawerExpandedMode = !!expandedDrawerId;
19
+ // istanbul ignore next: not interactive during SSR
20
+ const noop = () => { };
21
+ return (React.createElement(ToolbarSlot, { ref: ref },
22
+ React.createElement(ToolbarContainer, null,
23
+ hasNavigation && (React.createElement("nav", { className: toolbarStyles['universal-toolbar-nav'] },
24
+ React.createElement(TriggerButton, { ariaLabel: (_a = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.navigationToggle) !== null && _a !== void 0 ? _a : undefined, ariaExpanded: !drawerExpandedMode && navigationOpen, iconName: "menu", className: testutilStyles['navigation-toggle'], onClick: noop, selected: !drawerExpandedMode && navigationOpen }))),
25
+ React.createElement(ToolbarBreadcrumbsSection, { ownBreadcrumbs: ownBreadcrumbs, discoveredBreadcrumbs: discoveredBreadcrumbs, includeTestUtils: true }),
26
+ React.createElement("div", { className: toolbarStyles['universal-toolbar-drawers'] }))));
27
+ });
19
28
  //# sourceMappingURL=toolbar-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-container.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAOrD,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAyB;IAC/E,OAAO,CACL,6BAAK,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,WAAW,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,IACrG,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,gBAAgB,GAAG,KAAK,GACO;IAC/B,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,EAAE,gBAAgB,IAAI,cAAc,CAAC,WAAW,CAAC;QAE/G,oBAAC,eAAe,IAAC,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,GAAI,CAC7F,CACP,CAAC;AACJ,CAAC;AAOD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,UAAU,CACtD,CAAC,EAAE,cAAc,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClD,oBAAC,WAAW,IAAC,GAAG,EAAE,GAAG;IACnB,oBAAC,gBAAgB;QACf,oBAAC,yBAAyB,IACxB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,IAAI,GACtB;QACF,6BAAK,SAAS,EAAE,aAAa,CAAC,2BAA2B,CAAC,GAAI,CAC7C,CACP,CACf,CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';\nimport { BreadcrumbsSlot, ToolbarSlot } from './slots';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport toolbarStyles from '../toolbar/styles.css.js';\n\ninterface ToolbarContainerProps {\n children: React.ReactNode;\n hasAiDrawer?: boolean;\n}\n\nexport function ToolbarContainer({ children, hasAiDrawer }: ToolbarContainerProps) {\n return (\n <div className={clsx(toolbarStyles['toolbar-container'], hasAiDrawer && toolbarStyles['with-ai-drawer'])}>\n {children}\n </div>\n );\n}\n\ninterface ToolbarBreadcrumbsSectionProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n includeTestUtils?: boolean;\n}\n\nexport function ToolbarBreadcrumbsSection({\n ownBreadcrumbs,\n discoveredBreadcrumbs,\n includeTestUtils = false,\n}: ToolbarBreadcrumbsSectionProps) {\n return (\n <div\n className={clsx(toolbarStyles['universal-toolbar-breadcrumbs'], includeTestUtils && testutilStyles.breadcrumbs)}\n >\n <BreadcrumbsSlot ownBreadcrumbs={ownBreadcrumbs} discoveredBreadcrumbs={discoveredBreadcrumbs} />\n </div>\n );\n}\n\ninterface ToolbarSkeletonStructureProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n}\n\nexport const ToolbarSkeletonStructure = React.forwardRef<HTMLElement, ToolbarSkeletonStructureProps>(\n ({ ownBreadcrumbs, discoveredBreadcrumbs }, ref) => (\n <ToolbarSlot ref={ref}>\n <ToolbarContainer>\n <ToolbarBreadcrumbsSection\n ownBreadcrumbs={ownBreadcrumbs}\n discoveredBreadcrumbs={discoveredBreadcrumbs}\n includeTestUtils={true}\n />\n <div className={toolbarStyles['universal-toolbar-drawers']} />\n </ToolbarContainer>\n </ToolbarSlot>\n )\n);\n"]}
1
+ {"version":3,"file":"toolbar-container.js","sourceRoot":"","sources":["../../../../../src/app-layout/visual-refresh-toolbar/skeleton/toolbar-container.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAOrD,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAyB;IAC/E,OAAO,CACL,6BAAK,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,WAAW,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,IACrG,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,yBAAyB,CAAC,EACxC,cAAc,EACd,qBAAqB,EACrB,gBAAgB,GAAG,KAAK,GACO;IAC/B,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,EAAE,gBAAgB,IAAI,cAAc,CAAC,WAAW,CAAC;QAE/G,oBAAC,eAAe,IAAC,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,GAAI,CAC7F,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,UAAU,CACtD,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,EAAE;;IAC9G,MAAM,kBAAkB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IAC9C,mDAAmD;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,OAAO,CACL,oBAAC,WAAW,IAAC,GAAG,EAAE,GAAG;QACnB,oBAAC,gBAAgB;YACd,aAAa,IAAI,CAChB,6BAAK,SAAS,EAAE,aAAa,CAAC,uBAAuB,CAAC;gBACpD,oBAAC,aAAa,IACZ,SAAS,EAAE,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,mCAAI,SAAS,EACpD,YAAY,EAAE,CAAC,kBAAkB,IAAI,cAAc,EACnD,QAAQ,EAAC,MAAM,EACf,SAAS,EAAE,cAAc,CAAC,mBAAmB,CAAC,EAC9C,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,CAAC,kBAAkB,IAAI,cAAc,GAC/C,CACE,CACP;YACD,oBAAC,yBAAyB,IACxB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,IAAI,GACtB;YACF,6BAAK,SAAS,EAAE,aAAa,CAAC,2BAA2B,CAAC,GAAI,CAC7C,CACP,CACf,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { AppLayoutProps } from '../../../app-layout/interfaces';\nimport { BreadcrumbGroupProps } from '../../../breadcrumb-group/interfaces';\nimport TriggerButton from '../toolbar/trigger-button';\nimport { BreadcrumbsSlot, ToolbarSlot } from './slots';\n\nimport testutilStyles from '../../test-classes/styles.css.js';\nimport toolbarStyles from '../toolbar/styles.css.js';\n\ninterface ToolbarContainerProps {\n children: React.ReactNode;\n hasAiDrawer?: boolean;\n}\n\nexport function ToolbarContainer({ children, hasAiDrawer }: ToolbarContainerProps) {\n return (\n <div className={clsx(toolbarStyles['toolbar-container'], hasAiDrawer && toolbarStyles['with-ai-drawer'])}>\n {children}\n </div>\n );\n}\n\ninterface ToolbarBreadcrumbsSectionProps {\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n includeTestUtils?: boolean;\n}\n\nexport function ToolbarBreadcrumbsSection({\n ownBreadcrumbs,\n discoveredBreadcrumbs,\n includeTestUtils = false,\n}: ToolbarBreadcrumbsSectionProps) {\n return (\n <div\n className={clsx(toolbarStyles['universal-toolbar-breadcrumbs'], includeTestUtils && testutilStyles.breadcrumbs)}\n >\n <BreadcrumbsSlot ownBreadcrumbs={ownBreadcrumbs} discoveredBreadcrumbs={discoveredBreadcrumbs} />\n </div>\n );\n}\n\ninterface ToolbarSkeletonStructureProps {\n ariaLabels?: AppLayoutProps.Labels;\n expandedDrawerId?: string | null;\n hasNavigation?: boolean;\n navigationOpen?: boolean;\n ownBreadcrumbs: React.ReactNode;\n discoveredBreadcrumbs?: BreadcrumbGroupProps | null;\n}\n\nexport const ToolbarSkeletonStructure = React.forwardRef<HTMLElement, ToolbarSkeletonStructureProps>(\n ({ ariaLabels, expandedDrawerId, hasNavigation, navigationOpen, ownBreadcrumbs, discoveredBreadcrumbs }, ref) => {\n const drawerExpandedMode = !!expandedDrawerId;\n // istanbul ignore next: not interactive during SSR\n const noop = () => {};\n return (\n <ToolbarSlot ref={ref}>\n <ToolbarContainer>\n {hasNavigation && (\n <nav className={toolbarStyles['universal-toolbar-nav']}>\n <TriggerButton\n ariaLabel={ariaLabels?.navigationToggle ?? undefined}\n ariaExpanded={!drawerExpandedMode && navigationOpen}\n iconName=\"menu\"\n className={testutilStyles['navigation-toggle']}\n onClick={noop}\n selected={!drawerExpandedMode && navigationOpen}\n />\n </nav>\n )}\n <ToolbarBreadcrumbsSection\n ownBreadcrumbs={ownBreadcrumbs}\n discoveredBreadcrumbs={discoveredBreadcrumbs}\n includeTestUtils={true}\n />\n <div className={toolbarStyles['universal-toolbar-drawers']} />\n </ToolbarContainer>\n </ToolbarSlot>\n );\n }\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"autosuggest-option.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/autosuggest-option.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAgB,MAAM,4BAA4B,CAAC;AAI9E,OAAO,EAAE,aAAa,EAAE,MAAM,gEAAgE,CAAC;AAE/F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIjE,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;IAC7C,WAAW,CAAC,EAAE,gCAAgC,CAAC;CAChD;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;;AAkKD,wBAA+D"}
1
+ {"version":3,"file":"autosuggest-option.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/autosuggest-option.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAgB,MAAM,4BAA4B,CAAC;AAI9E,OAAO,EAAE,aAAa,EAAE,MAAM,gEAAgE,CAAC;AAE/F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIjE,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;IAC7C,WAAW,CAAC,EAAE,gCAAgC,CAAC;CAChD;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;;AAuKD,wBAA+D"}
@@ -47,24 +47,6 @@ const AutosuggestOption = ({ index, virtualIndex, nativeAttributes = {}, highlig
47
47
  const isParent = (option === null || option === void 0 ? void 0 : option.type) === 'parent';
48
48
  const isChild = (option === null || option === void 0 ? void 0 : option.type) === 'child';
49
49
  const { throughIndex, inGroupIndex, groupIndex } = getTestOptionIndexes(option) || {};
50
- let optionContent;
51
- if (useEntered) {
52
- optionContent = option.label;
53
- // we don't want fancy generated content for screenreader for the "Use..." option,
54
- // just the visible text is fine
55
- screenReaderContent = undefined;
56
- }
57
- else if (isParent) {
58
- optionContent = option.label;
59
- }
60
- else {
61
- const a11yProperties = {};
62
- if (nativeAttributes['aria-label']) {
63
- a11yProperties['aria-label'] = nativeAttributes['aria-label'];
64
- }
65
- optionContent = (React.createElement("div", { ...a11yProperties },
66
- React.createElement(OptionComponent, { option: option, highlightedOption: highlighted, highlightText: highlightText })));
67
- }
68
50
  const getAutosuggestItemProps = (option) => {
69
51
  if (option.type === 'parent') {
70
52
  return toAutosuggestOptionGroupItem({
@@ -99,7 +81,25 @@ const AutosuggestOption = ({ index, virtualIndex, nativeAttributes = {}, highlig
99
81
  return renderOption({ item: getAutosuggestItemProps(option), filterText: highlightText });
100
82
  };
101
83
  const renderResult = renderOptionWrapper(option);
102
- return (React.createElement(SelectableItem, { ...baseProps, disableContentStyling: !!renderResult, className: styles.option, ariaSelected: current, highlighted: highlighted, disabled: option.disabled, hasBackground: useEntered, isParent: isParent, isChild: isChild, virtualPosition: virtualPosition, "data-test-index": throughIndex, "data-in-group-index": inGroupIndex, "data-group-index": groupIndex, ref: ref, padBottom: padBottom, screenReaderContent: screenReaderContent, ariaSetsize: ariaSetsize, ariaPosinset: ariaPosinset, highlightType: highlightType.type, value: option.value }, !renderResult ? optionContent : renderResult));
84
+ let optionContent;
85
+ if (useEntered) {
86
+ optionContent = renderResult !== null && renderResult !== void 0 ? renderResult : option.label;
87
+ // we don't want fancy generated content for screenreader for the "Use..." option,
88
+ // just the visible text is fine
89
+ screenReaderContent = undefined;
90
+ }
91
+ else if (isParent) {
92
+ optionContent = renderResult !== null && renderResult !== void 0 ? renderResult : option.label;
93
+ }
94
+ else {
95
+ const a11yProperties = {};
96
+ if (nativeAttributes['aria-label']) {
97
+ a11yProperties['aria-label'] = nativeAttributes['aria-label'];
98
+ }
99
+ optionContent = (React.createElement("div", { ...a11yProperties },
100
+ React.createElement(OptionComponent, { customContent: renderResult, option: option, highlightedOption: highlighted, highlightText: highlightText })));
101
+ }
102
+ return (React.createElement(SelectableItem, { ...baseProps, disableContentStyling: !!renderResult, className: styles.option, ariaSelected: current, highlighted: highlighted, disabled: option.disabled, hasBackground: useEntered, isParent: isParent, isChild: isChild, virtualPosition: virtualPosition, "data-test-index": throughIndex, "data-in-group-index": inGroupIndex, "data-group-index": groupIndex, ref: ref, padBottom: padBottom, screenReaderContent: screenReaderContent, ariaSetsize: ariaSetsize, ariaPosinset: ariaPosinset, highlightType: highlightType.type, value: option.value }, optionContent));
103
103
  };
104
104
  export default React.memo(React.forwardRef(AutosuggestOption));
105
105
  //# sourceMappingURL=autosuggest-option.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autosuggest-option.js","sourceRoot":"","sources":["../../../src/autosuggest/autosuggest-option.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 from 'react';\n\nimport { BaseComponentProps, getBaseProps } from '../internal/base-component';\nimport OptionComponent from '../internal/components/option';\nimport { OptionDefinition, OptionGroup } from '../internal/components/option/interfaces';\nimport { getTestOptionIndexes } from '../internal/components/options-list/utils/test-indexes';\nimport { HighlightType } from '../internal/components/options-list/utils/use-highlight-option';\nimport SelectableItem from '../internal/components/selectable-item';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ninterface AutosuggestOptionProps extends BaseComponentProps {\n index: number;\n virtualIndex?: number;\n nativeAttributes?: React.HTMLAttributes<HTMLDivElement>;\n highlightText: string;\n option: AutosuggestItem;\n highlighted: boolean;\n highlightType: HighlightType;\n current: boolean;\n virtualPosition?: number;\n padBottom?: boolean;\n screenReaderContent?: string;\n ariaSetsize?: number;\n ariaPosinset?: number;\n renderOption?: AutosuggestProps.ItemRenderer;\n parentProps?: AutosuggestRenderItemParentProps;\n}\n\nexport interface AutosuggestRenderItemParentProps {\n index: number;\n virtualIndex?: number;\n option: AutosuggestItem;\n disabled: boolean;\n}\n\nconst toAutosuggestOptionGroupItem = (\n props: AutosuggestRenderItemParentProps\n): AutosuggestProps.OptionGroupRenderItem => {\n return {\n type: 'group',\n index: props.virtualIndex ?? props.index,\n option: props.option.option as OptionGroup,\n disabled: props.disabled,\n };\n};\n\nconst toAutosuggestOptionItem = (props: {\n index: number;\n virtualIndex?: number;\n option: AutosuggestItem;\n disabled: boolean;\n selected: boolean;\n highlighted: boolean;\n parentProps?: AutosuggestRenderItemParentProps;\n}): AutosuggestProps.OptionRenderItem => {\n return {\n type: 'item',\n index: props.virtualIndex ?? props.index,\n option: props.option.option as OptionDefinition,\n selected: props.selected,\n highlighted: props.highlighted,\n disabled: props.disabled,\n parent: props.parentProps\n ? toAutosuggestOptionGroupItem({\n index: props.parentProps.index,\n virtualIndex: props.parentProps.virtualIndex,\n option: props.parentProps.option,\n disabled: props.disabled,\n })\n : null,\n };\n};\n\nconst toAutosuggestUseEnteredItem = (props: {\n option: AutosuggestItem;\n highlighted: boolean;\n}): AutosuggestProps.EnteredTextRenderItem => {\n return {\n type: 'entered-text',\n option: props.option.option as OptionDefinition,\n highlighted: props.highlighted,\n };\n};\n\nconst AutosuggestOption = (\n {\n index,\n virtualIndex,\n nativeAttributes = {},\n highlightText,\n option,\n highlighted,\n highlightType,\n current,\n virtualPosition,\n padBottom,\n screenReaderContent,\n ariaSetsize,\n ariaPosinset,\n renderOption,\n parentProps,\n ...rest\n }: AutosuggestOptionProps,\n ref: React.Ref<HTMLDivElement>\n) => {\n const baseProps = getBaseProps(rest);\n const useEntered = option?.type === 'use-entered';\n const isParent = option?.type === 'parent';\n const isChild = option?.type === 'child';\n const { throughIndex, inGroupIndex, groupIndex } = getTestOptionIndexes(option) || {};\n\n let optionContent;\n if (useEntered) {\n optionContent = option.label;\n // we don't want fancy generated content for screenreader for the \"Use...\" option,\n // just the visible text is fine\n screenReaderContent = undefined;\n } else if (isParent) {\n optionContent = option.label;\n } else {\n const a11yProperties: AutosuggestOptionProps['nativeAttributes'] = {};\n if (nativeAttributes['aria-label']) {\n a11yProperties['aria-label'] = nativeAttributes['aria-label'];\n }\n\n optionContent = (\n <div {...a11yProperties}>\n <OptionComponent option={option} highlightedOption={highlighted} highlightText={highlightText} />\n </div>\n );\n }\n\n const getAutosuggestItemProps = (option: AutosuggestItem) => {\n if (option.type === 'parent') {\n return toAutosuggestOptionGroupItem({\n option: option,\n index: index,\n virtualIndex: virtualIndex,\n disabled: !!option.disabled,\n });\n } else if (option.type === 'use-entered') {\n return toAutosuggestUseEnteredItem({\n option: option,\n highlighted: highlighted,\n });\n } else {\n return toAutosuggestOptionItem({\n option: option,\n index: index,\n virtualIndex: virtualIndex,\n disabled: !!option.disabled,\n highlighted: highlighted,\n selected: current,\n parentProps: parentProps,\n });\n }\n };\n\n const renderOptionWrapper = (option: AutosuggestItem) => {\n if (!renderOption) {\n return null;\n }\n\n return renderOption({ item: getAutosuggestItemProps(option), filterText: highlightText });\n };\n const renderResult = renderOptionWrapper(option);\n\n return (\n <SelectableItem\n {...baseProps}\n disableContentStyling={!!renderResult}\n className={styles.option}\n ariaSelected={current}\n highlighted={highlighted}\n disabled={option.disabled}\n hasBackground={useEntered}\n isParent={isParent}\n isChild={isChild}\n virtualPosition={virtualPosition}\n data-test-index={throughIndex}\n data-in-group-index={inGroupIndex}\n data-group-index={groupIndex}\n ref={ref}\n padBottom={padBottom}\n screenReaderContent={screenReaderContent}\n ariaSetsize={ariaSetsize}\n ariaPosinset={ariaPosinset}\n highlightType={highlightType.type}\n value={option.value}\n >\n {!renderResult ? optionContent : renderResult}\n </SelectableItem>\n );\n};\n\nexport default React.memo(React.forwardRef(AutosuggestOption));\n"]}
1
+ {"version":3,"file":"autosuggest-option.js","sourceRoot":"","sources":["../../../src/autosuggest/autosuggest-option.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 from 'react';\n\nimport { BaseComponentProps, getBaseProps } from '../internal/base-component';\nimport OptionComponent from '../internal/components/option';\nimport { OptionDefinition, OptionGroup } from '../internal/components/option/interfaces';\nimport { getTestOptionIndexes } from '../internal/components/options-list/utils/test-indexes';\nimport { HighlightType } from '../internal/components/options-list/utils/use-highlight-option';\nimport SelectableItem from '../internal/components/selectable-item';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ninterface AutosuggestOptionProps extends BaseComponentProps {\n index: number;\n virtualIndex?: number;\n nativeAttributes?: React.HTMLAttributes<HTMLDivElement>;\n highlightText: string;\n option: AutosuggestItem;\n highlighted: boolean;\n highlightType: HighlightType;\n current: boolean;\n virtualPosition?: number;\n padBottom?: boolean;\n screenReaderContent?: string;\n ariaSetsize?: number;\n ariaPosinset?: number;\n renderOption?: AutosuggestProps.ItemRenderer;\n parentProps?: AutosuggestRenderItemParentProps;\n}\n\nexport interface AutosuggestRenderItemParentProps {\n index: number;\n virtualIndex?: number;\n option: AutosuggestItem;\n disabled: boolean;\n}\n\nconst toAutosuggestOptionGroupItem = (\n props: AutosuggestRenderItemParentProps\n): AutosuggestProps.OptionGroupRenderItem => {\n return {\n type: 'group',\n index: props.virtualIndex ?? props.index,\n option: props.option.option as OptionGroup,\n disabled: props.disabled,\n };\n};\n\nconst toAutosuggestOptionItem = (props: {\n index: number;\n virtualIndex?: number;\n option: AutosuggestItem;\n disabled: boolean;\n selected: boolean;\n highlighted: boolean;\n parentProps?: AutosuggestRenderItemParentProps;\n}): AutosuggestProps.OptionRenderItem => {\n return {\n type: 'item',\n index: props.virtualIndex ?? props.index,\n option: props.option.option as OptionDefinition,\n selected: props.selected,\n highlighted: props.highlighted,\n disabled: props.disabled,\n parent: props.parentProps\n ? toAutosuggestOptionGroupItem({\n index: props.parentProps.index,\n virtualIndex: props.parentProps.virtualIndex,\n option: props.parentProps.option,\n disabled: props.disabled,\n })\n : null,\n };\n};\n\nconst toAutosuggestUseEnteredItem = (props: {\n option: AutosuggestItem;\n highlighted: boolean;\n}): AutosuggestProps.EnteredTextRenderItem => {\n return {\n type: 'entered-text',\n option: props.option.option as OptionDefinition,\n highlighted: props.highlighted,\n };\n};\n\nconst AutosuggestOption = (\n {\n index,\n virtualIndex,\n nativeAttributes = {},\n highlightText,\n option,\n highlighted,\n highlightType,\n current,\n virtualPosition,\n padBottom,\n screenReaderContent,\n ariaSetsize,\n ariaPosinset,\n renderOption,\n parentProps,\n ...rest\n }: AutosuggestOptionProps,\n ref: React.Ref<HTMLDivElement>\n) => {\n const baseProps = getBaseProps(rest);\n const useEntered = option?.type === 'use-entered';\n const isParent = option?.type === 'parent';\n const isChild = option?.type === 'child';\n const { throughIndex, inGroupIndex, groupIndex } = getTestOptionIndexes(option) || {};\n\n const getAutosuggestItemProps = (option: AutosuggestItem) => {\n if (option.type === 'parent') {\n return toAutosuggestOptionGroupItem({\n option: option,\n index: index,\n virtualIndex: virtualIndex,\n disabled: !!option.disabled,\n });\n } else if (option.type === 'use-entered') {\n return toAutosuggestUseEnteredItem({\n option: option,\n highlighted: highlighted,\n });\n } else {\n return toAutosuggestOptionItem({\n option: option,\n index: index,\n virtualIndex: virtualIndex,\n disabled: !!option.disabled,\n highlighted: highlighted,\n selected: current,\n parentProps: parentProps,\n });\n }\n };\n\n const renderOptionWrapper = (option: AutosuggestItem) => {\n if (!renderOption) {\n return null;\n }\n\n return renderOption({ item: getAutosuggestItemProps(option), filterText: highlightText });\n };\n const renderResult = renderOptionWrapper(option);\n\n let optionContent;\n if (useEntered) {\n optionContent = renderResult ?? option.label;\n // we don't want fancy generated content for screenreader for the \"Use...\" option,\n // just the visible text is fine\n screenReaderContent = undefined;\n } else if (isParent) {\n optionContent = renderResult ?? option.label;\n } else {\n const a11yProperties: AutosuggestOptionProps['nativeAttributes'] = {};\n if (nativeAttributes['aria-label']) {\n a11yProperties['aria-label'] = nativeAttributes['aria-label'];\n }\n\n optionContent = (\n <div {...a11yProperties}>\n <OptionComponent\n customContent={renderResult}\n option={option}\n highlightedOption={highlighted}\n highlightText={highlightText}\n />\n </div>\n );\n }\n\n return (\n <SelectableItem\n {...baseProps}\n disableContentStyling={!!renderResult}\n className={styles.option}\n ariaSelected={current}\n highlighted={highlighted}\n disabled={option.disabled}\n hasBackground={useEntered}\n isParent={isParent}\n isChild={isChild}\n virtualPosition={virtualPosition}\n data-test-index={throughIndex}\n data-in-group-index={inGroupIndex}\n data-group-index={groupIndex}\n ref={ref}\n padBottom={padBottom}\n screenReaderContent={screenReaderContent}\n ariaSetsize={ariaSetsize}\n ariaPosinset={ariaPosinset}\n highlightType={highlightType.type}\n value={option.value}\n >\n {optionContent}\n </SelectableItem>\n );\n};\n\nexport default React.memo(React.forwardRef(AutosuggestOption));\n"]}
@@ -2244,5 +2244,5 @@
2244
2244
  }
2245
2245
  }
2246
2246
  :root {
2247
- --awsui-version-info-d28fe347: true;
2247
+ --awsui-version-info-2d19b0ff: true;
2248
2248
  }
@@ -1,6 +1,6 @@
1
1
  export var PACKAGE_SOURCE = "components";
2
- export var PACKAGE_VERSION = "3.0.0 (d28fe347)";
3
- export var GIT_SHA = "d28fe347";
2
+ export var PACKAGE_VERSION = "3.0.0 (2d19b0ff)";
3
+ export var GIT_SHA = "2d19b0ff";
4
4
  export var THEME = "open-source-visual-refresh";
5
5
  export var SYSTEM = "core";
6
6
  export var ALWAYS_VISUAL_REFRESH = true;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "components",
3
- "PACKAGE_VERSION": "3.0.0 (d28fe347)",
4
- "GIT_SHA": "d28fe347",
3
+ "PACKAGE_VERSION": "3.0.0 (2d19b0ff)",
4
+ "GIT_SHA": "2d19b0ff",
5
5
  "THEME": "open-source-visual-refresh",
6
6
  "SYSTEM": "core",
7
7
  "ALWAYS_VISUAL_REFRESH": true
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "d28fe3470b089a530b39d983fffc7521cb5c0952"
2
+ "commit": "2d19b0fff4244b5b6b6fcd4affa414482fadb539"
3
3
  }
package/package.json CHANGED
@@ -164,7 +164,7 @@
164
164
  "./internal/base-component/index.js",
165
165
  "./internal/base-component/styles.css.js"
166
166
  ],
167
- "version": "3.0.1289",
167
+ "version": "3.0.1291",
168
168
  "repository": {
169
169
  "type": "git",
170
170
  "url": "https://github.com/cloudscape-design/components.git"
@@ -20,6 +20,7 @@ export declare const getQueryActions: ({
20
20
  removeAllTokens: () => void;
21
21
  };
22
22
  export declare const getAllowedOperators: (property: InternalFilteringProperty) => ComparisonOperator[];
23
+ export declare const getAllowedFreeTextOperators: (freeText: InternalFreeTextFiltering) => ComparisonOperator[];
23
24
  export declare const parseText: (filteringText: string, filteringProperties: readonly InternalFilteringProperty[], freeTextFiltering: InternalFreeTextFiltering) => ParsedText;
24
25
  interface OptionGroup<T> {
25
26
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/property-filter/controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAyB,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,KAAK,EAGN,MAAM,cAAc,CAAC;AAYtB,KAAK,qBAAqB,GAAG,oBAAoB,GAC/C,IAAI,CAAC,WAAW,EAAE,eAAe,GAAG,qBAAqB,GAAG,iBAAiB,CAAC,CAAC;AAEjF,eAAO,MAAM,eAAe,GAAI,2DAK7B;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC3C,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,iBAAiB,EAAE,OAAO,CAAC;CAC5B;sBAiB0B,aAAa;+BAKvB,MAAM,gBACL,aAAa,GAAG,kBAAkB,kBAChC,aAAa,EAAE;iCAmBG,aAAa;+BARf,MAAM;;CAazC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,UAAU,yBAAyB,KAAG,kBAAkB,EAK3F,CAAC;AAQF,eAAO,MAAM,SAAS,GACpB,eAAe,MAAM,EACrB,qBAAqB,SAAS,yBAAyB,EAAE,EACzD,mBAAmB,yBAAyB,KAC3C,UA+CF,CAAC;AAEF,UAAU,WAAW,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,EAAE,CAAC;CACd;AAmDD,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,EACzD,gBAAgB,EAAE,SAAS,SAAS,EAAE,EACtC,WAAW,EAAE,qBAAqB,EAClC,yBAAyB,EAAE,CAAC,iBAAiB,EAAE,yBAAyB,KAAK,CAAC,oBA0B/E;AAED,eAAO,MAAM,qBAAqB,GAChC,YAAY,UAAU,EACtB,qBAAqB,SAAS,yBAAyB,EAAE,EACzD,kBAAkB,SAAS,uBAAuB,EAAE,EACpD,kBAAkB,SAAS,SAAS,EAAE,EACtC,aAAa,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiEnC,CAAC"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/property-filter/controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAyB,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,KAAK,EAGN,MAAM,cAAc,CAAC;AAYtB,KAAK,qBAAqB,GAAG,oBAAoB,GAC/C,IAAI,CAAC,WAAW,EAAE,eAAe,GAAG,qBAAqB,GAAG,iBAAiB,CAAC,CAAC;AAEjF,eAAO,MAAM,eAAe,GAAI,2DAK7B;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC3C,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,iBAAiB,EAAE,OAAO,CAAC;CAC5B;sBAiB0B,aAAa;+BAKvB,MAAM,gBACL,aAAa,GAAG,kBAAkB,kBAChC,aAAa,EAAE;iCAmBG,aAAa;+BARf,MAAM;;CAazC,CAAC;AAIF,eAAO,MAAM,mBAAmB,GAAI,UAAU,yBAAyB,KAAG,kBAAkB,EAI3F,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,yBAAyB,KAAG,kBAAkB,EAGnG,CAAC;AAQF,eAAO,MAAM,SAAS,GACpB,eAAe,MAAM,EACrB,qBAAqB,SAAS,yBAAyB,EAAE,EACzD,mBAAmB,yBAAyB,KAC3C,UA6CF,CAAC;AAEF,UAAU,WAAW,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,EAAE,CAAC;CACd;AAmDD,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,mBAAmB,EAAE,SAAS,yBAAyB,EAAE,EACzD,gBAAgB,EAAE,SAAS,SAAS,EAAE,EACtC,WAAW,EAAE,qBAAqB,EAClC,yBAAyB,EAAE,CAAC,iBAAiB,EAAE,yBAAyB,KAAK,CAAC,oBA0B/E;AAED,eAAO,MAAM,qBAAqB,GAChC,YAAY,UAAU,EACtB,qBAAqB,SAAS,yBAAyB,EAAE,EACzD,kBAAkB,SAAS,uBAAuB,EAAE,EACpD,kBAAkB,SAAS,SAAS,EAAE,EACtC,aAAa,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiEnC,CAAC"}
@@ -42,12 +42,16 @@ export const getQueryActions = ({ query, onChange, filteringOptions, enableToken
42
42
  };
43
43
  return { addToken, updateToken, updateOperation, removeToken, removeAllTokens };
44
44
  };
45
+ const operatorOrder = ['=', '!=', ':', '!:', '^', '!^', '>=', '<=', '<', '>'];
45
46
  export const getAllowedOperators = (property) => {
46
47
  const { operators = [], defaultOperator } = property;
47
- const operatorOrder = ['=', '!=', ':', '!:', '^', '!^', '>=', '<=', '<', '>'];
48
48
  const operatorSet = new Set([defaultOperator, ...operators]);
49
49
  return operatorOrder.filter(op => operatorSet.has(op));
50
50
  };
51
+ export const getAllowedFreeTextOperators = (freeText) => {
52
+ const operatorSet = new Set(freeText.operators);
53
+ return operatorOrder.filter(op => operatorSet.has(op));
54
+ };
51
55
  /*
52
56
  * parses the value of the filtering input to figure out the current step of entering the token:
53
57
  * - "property": means that a filter on a particular column is being added, with operator already finalized
@@ -59,9 +63,8 @@ export const parseText = (filteringText, filteringProperties, freeTextFiltering)
59
63
  if (!property) {
60
64
  if (!freeTextFiltering.disabled) {
61
65
  // For free text filtering, we allow ! as a shortcut for !:
62
- const freeTextOperators = freeTextFiltering.operators.indexOf('!:') >= 0
63
- ? ['!', ...freeTextFiltering.operators]
64
- : freeTextFiltering.operators;
66
+ let freeTextOperators = getAllowedFreeTextOperators(freeTextFiltering);
67
+ freeTextOperators = freeTextOperators.indexOf('!:') >= 0 ? ['!', ...freeTextOperators] : freeTextOperators;
65
68
  const operator = matchOperator(freeTextOperators, filteringText);
66
69
  if (operator) {
67
70
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/property-filter/controller.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 { AutosuggestProps } from '../autosuggest/interfaces';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { I18nStringsOperators, operatorToDescription } from './i18n-utils';\nimport {\n ComparisonOperator,\n GroupText,\n I18nStrings,\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalQuery,\n InternalToken,\n InternalTokenGroup,\n JoinOperation,\n ParsedText,\n Query,\n Token,\n TokenGroup,\n} from './interfaces';\nimport {\n isInternalToken,\n matchFilteringProperty,\n matchOperator,\n matchOperatorPrefix,\n matchTokenValue,\n removeOperator,\n tokenGroupToTokens,\n trimStart,\n} from './utils';\n\ntype I18nStringsController = I18nStringsOperators &\n Pick<I18nStrings, 'operatorsText' | 'groupPropertiesText' | 'groupValuesText'>;\n\nexport const getQueryActions = ({\n query,\n onChange,\n filteringOptions,\n enableTokenGroups,\n}: {\n query: InternalQuery;\n onChange: NonCancelableEventHandler<Query>;\n filteringOptions: readonly InternalFilteringOption[];\n enableTokenGroups: boolean;\n}) => {\n const setQuery = (query: InternalQuery) => {\n function transformToken(token: InternalToken | InternalTokenGroup): Token | TokenGroup {\n if (isInternalToken(token)) {\n return matchTokenValue(token, filteringOptions);\n }\n return { ...token, tokens: token.tokens.map(transformToken) };\n }\n const tokens = query.tokens.map(transformToken);\n\n if (enableTokenGroups) {\n fireNonCancelableEvent(onChange, { tokens: [], operation: query.operation, tokenGroups: tokens });\n } else {\n fireNonCancelableEvent(onChange, { tokens: tokenGroupToTokens<Token>(tokens), operation: query.operation });\n }\n };\n\n const addToken = (token: InternalToken) => {\n setQuery({ ...query, tokens: [...query.tokens, token] });\n };\n\n const updateToken = (\n updateIndex: number,\n updatedToken: InternalToken | InternalTokenGroup,\n releasedTokens: InternalToken[]\n ) => {\n const nestedTokens = tokenGroupToTokens<InternalToken>([updatedToken]);\n const capturedTokenIndices = nestedTokens.map(token => token.standaloneIndex).filter(index => index !== undefined);\n const tokens = query.tokens\n .map((token, index) => (index === updateIndex ? updatedToken : token))\n .filter((_, index) => index === updateIndex || !capturedTokenIndices.includes(index));\n tokens.push(...releasedTokens);\n setQuery({ ...query, tokens });\n };\n\n const removeToken = (removeIndex: number) => {\n setQuery({ ...query, tokens: query.tokens.filter((_, index) => index !== removeIndex) });\n };\n\n const removeAllTokens = () => {\n setQuery({ ...query, tokens: [] });\n };\n\n const updateOperation = (operation: JoinOperation) => {\n setQuery({ ...query, operation });\n };\n\n return { addToken, updateToken, updateOperation, removeToken, removeAllTokens };\n};\n\nexport const getAllowedOperators = (property: InternalFilteringProperty): ComparisonOperator[] => {\n const { operators = [], defaultOperator } = property;\n const operatorOrder = ['=', '!=', ':', '!:', '^', '!^', '>=', '<=', '<', '>'] as const;\n const operatorSet = new Set([defaultOperator, ...operators]);\n return operatorOrder.filter(op => operatorSet.has(op));\n};\n\n/*\n * parses the value of the filtering input to figure out the current step of entering the token:\n * - \"property\": means that a filter on a particular column is being added, with operator already finalized\n * - \"operator\": means that a filter on a particular column is being added, with operator not yet finalized\n * - \"free-text\": means that a \"free text\" token is being added\n */\nexport const parseText = (\n filteringText: string,\n filteringProperties: readonly InternalFilteringProperty[],\n freeTextFiltering: InternalFreeTextFiltering\n): ParsedText => {\n const property = matchFilteringProperty(filteringProperties, filteringText);\n if (!property) {\n if (!freeTextFiltering.disabled) {\n // For free text filtering, we allow ! as a shortcut for !:\n const freeTextOperators =\n freeTextFiltering.operators.indexOf('!:') >= 0\n ? ['!', ...freeTextFiltering.operators]\n : freeTextFiltering.operators;\n const operator = matchOperator(freeTextOperators, filteringText);\n if (operator) {\n return {\n step: 'free-text',\n operator: operator === '!' ? '!:' : operator,\n value: removeOperator(filteringText, operator),\n };\n }\n }\n\n return {\n step: 'free-text',\n value: filteringText,\n };\n }\n\n const allowedOps = getAllowedOperators(property);\n\n const textWithoutProperty = filteringText.substring(property.propertyLabel.length);\n const operator = matchOperator(allowedOps, trimStart(textWithoutProperty));\n if (operator) {\n return {\n step: 'property',\n property,\n operator,\n value: removeOperator(textWithoutProperty, operator),\n };\n }\n\n const operatorPrefix = matchOperatorPrefix(allowedOps, trimStart(textWithoutProperty));\n if (operatorPrefix !== null) {\n return { step: 'operator', property, operatorPrefix };\n }\n\n return {\n step: 'free-text',\n value: filteringText,\n };\n};\n\ninterface OptionGroup<T> {\n label: string;\n options: T[];\n}\n\nconst getAllValueSuggestions = (\n filteringOptions: readonly InternalFilteringOption[],\n operator: ComparisonOperator | undefined = '=',\n i18nStrings: I18nStringsController,\n customGroupsText: readonly GroupText[]\n) => {\n const defaultGroup: OptionGroup<AutosuggestProps.Option> = {\n label: i18nStrings.groupValuesText ?? '',\n options: [],\n };\n const customGroups: { [K in string]: OptionGroup<AutosuggestProps.Option> } = {};\n filteringOptions.forEach(filteringOption => {\n const property = filteringOption.property;\n // given option refers to a non-existent filtering property\n if (!property) {\n return;\n }\n // this option's filtering property does not support current operator\n if (getAllowedOperators(property).indexOf(operator) === -1) {\n return;\n }\n if (property.propertyGroup && !customGroups[property.propertyGroup]) {\n const label = customGroupsText.reduce<string>(\n (acc, customGroup) => (customGroup.group === property.propertyGroup ? customGroup.values : acc),\n ''\n );\n customGroups[property.propertyGroup] = {\n label,\n options: [],\n };\n }\n const propertyGroup = property.propertyGroup ? customGroups[property.propertyGroup] : defaultGroup;\n propertyGroup.options.push({\n value: property.propertyLabel + ' ' + (operator || '=') + ' ' + filteringOption.value,\n label: filteringOption.label,\n __labelPrefix: property.propertyLabel + ' ' + (operator || '='),\n tags: filteringOption.tags,\n filteringTags: filteringOption.filteringTags,\n });\n });\n return [defaultGroup, ...Object.keys(customGroups).map(group => customGroups[group])];\n};\n\nconst filteringPropertyToAutosuggestOption = (filteringProperty: InternalFilteringProperty) => ({\n value: filteringProperty.propertyLabel,\n label: filteringProperty.propertyLabel,\n keepOpenOnSelect: true,\n});\n\nexport function getPropertySuggestions<T>(\n filteringProperties: readonly InternalFilteringProperty[],\n customGroupsText: readonly GroupText[],\n i18nStrings: I18nStringsController,\n filteringPropertyToOption: (filteringProperty: InternalFilteringProperty) => T\n) {\n const defaultGroup: OptionGroup<T> = {\n label: i18nStrings.groupPropertiesText ?? '',\n options: [],\n };\n const customGroups: { [K in string]: OptionGroup<T> } = {};\n\n filteringProperties.forEach(filteringProperty => {\n const { propertyGroup } = filteringProperty;\n let optionsGroup = defaultGroup;\n if (propertyGroup) {\n if (!customGroups[propertyGroup]) {\n const label = customGroupsText.reduce<string>(\n (acc, customGroup) => (customGroup.group === propertyGroup ? customGroup.properties : acc),\n ''\n );\n customGroups[propertyGroup] = { options: [], label };\n }\n optionsGroup = customGroups[propertyGroup];\n }\n optionsGroup.options.push(filteringPropertyToOption(filteringProperty));\n });\n const defaultGroupArray = defaultGroup.options.length ? [defaultGroup] : [];\n const customGroupsArray = Object.keys(customGroups).map(groupKey => customGroups[groupKey]);\n return [...defaultGroupArray, ...customGroupsArray];\n}\n\nexport const getAutosuggestOptions = (\n parsedText: ParsedText,\n filteringProperties: readonly InternalFilteringProperty[],\n filteringOptions: readonly InternalFilteringOption[],\n customGroupsText: readonly GroupText[],\n i18nStrings: I18nStringsController\n) => {\n switch (parsedText.step) {\n case 'property': {\n const { propertyLabel, groupValuesLabel } = parsedText.property;\n const options = filteringOptions.filter(o => o.property === parsedText.property);\n return {\n filterText: parsedText.value,\n options: [\n {\n options: options.map(({ label, value, tags, filteringTags }) => ({\n value: propertyLabel + ' ' + parsedText.operator + ' ' + value,\n label: label,\n __labelPrefix: propertyLabel + ' ' + parsedText.operator,\n tags: tags,\n filteringTags: filteringTags,\n })),\n label: groupValuesLabel,\n },\n ],\n };\n }\n case 'operator': {\n return {\n filterText: parsedText.property.propertyLabel + ' ' + parsedText.operatorPrefix,\n options: [\n ...getPropertySuggestions(\n filteringProperties,\n customGroupsText,\n i18nStrings,\n filteringPropertyToAutosuggestOption\n ),\n {\n options: getAllowedOperators(parsedText.property).map(value => ({\n value: parsedText.property.propertyLabel + ' ' + value + ' ',\n label: parsedText.property.propertyLabel + ' ' + value,\n description: operatorToDescription(value, i18nStrings),\n keepOpenOnSelect: true,\n })),\n label: i18nStrings.operatorsText,\n },\n ],\n };\n }\n case 'free-text': {\n const needsValueSuggestions = !!parsedText.value;\n const needsPropertySuggestions = !(parsedText.step === 'free-text' && parsedText.operator === '!:');\n return {\n filterText: parsedText.value,\n options: [\n ...(needsPropertySuggestions\n ? getPropertySuggestions(\n filteringProperties,\n customGroupsText,\n i18nStrings,\n filteringPropertyToAutosuggestOption\n )\n : []),\n ...(needsValueSuggestions\n ? getAllValueSuggestions(filteringOptions, parsedText.operator, i18nStrings, customGroupsText)\n : []),\n ],\n };\n }\n }\n};\n"]}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/property-filter/controller.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAGtC,OAAO,EAAE,sBAAsB,EAA6B,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAwB,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAiB3E,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,SAAS,GACV,MAAM,SAAS,CAAC;AAKjB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAMlB,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;QACxC,SAAS,cAAc,CAAC,KAAyC;YAC/D,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEhD,IAAI,iBAAiB,EAAE,CAAC;YACtB,sBAAsB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAQ,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;QACxC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAClB,WAAmB,EACnB,YAAgD,EAChD,cAA+B,EAC/B,EAAE;QACF,MAAM,YAAY,GAAG,kBAAkB,CAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QACvE,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACnH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;aACxB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACrE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAC/B,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAE,EAAE;QAC1C,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,SAAwB,EAAE,EAAE;QACnD,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAmC,EAAwB,EAAE;IAC/F,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IAC7D,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,QAAmC,EAAwB,EAAE;IACvG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,aAAqB,EACrB,mBAAyD,EACzD,iBAA4C,EAChC,EAAE;IACd,MAAM,QAAQ,GAAG,sBAAsB,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,2DAA2D;YAC3D,IAAI,iBAAiB,GAAG,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;YACvE,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC3G,MAAM,QAAQ,GAAG,aAAa,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YACjE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAC5C,KAAK,EAAE,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC;iBAC/C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,aAAa;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,mBAAmB,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC3E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,QAAQ;YACR,KAAK,EAAE,cAAc,CAAC,mBAAmB,EAAE,QAAQ,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACvF,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC,CAAC;AAOF,MAAM,sBAAsB,GAAG,CAC7B,gBAAoD,EACpD,WAA2C,GAAG,EAC9C,WAAkC,EAClC,gBAAsC,EACtC,EAAE;;IACF,MAAM,YAAY,GAAyC;QACzD,KAAK,EAAE,MAAA,WAAW,CAAC,eAAe,mCAAI,EAAE;QACxC,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,YAAY,GAA4D,EAAE,CAAC;IACjF,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;QACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC1C,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,qEAAqE;QACrE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAC/F,EAAE,CACH,CAAC;YACF,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG;gBACrC,KAAK;gBACL,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QACnG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,QAAQ,CAAC,aAAa,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,KAAK;YACrF,KAAK,EAAE,eAAe,CAAC,KAAK;YAC5B,aAAa,EAAE,QAAQ,CAAC,aAAa,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC;YAC/D,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,aAAa,EAAE,eAAe,CAAC,aAAa;SAC7C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,oCAAoC,GAAG,CAAC,iBAA4C,EAAE,EAAE,CAAC,CAAC;IAC9F,KAAK,EAAE,iBAAiB,CAAC,aAAa;IACtC,KAAK,EAAE,iBAAiB,CAAC,aAAa;IACtC,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CACpC,mBAAyD,EACzD,gBAAsC,EACtC,WAAkC,EAClC,yBAA8E;;IAE9E,MAAM,YAAY,GAAmB;QACnC,KAAK,EAAE,MAAA,WAAW,CAAC,mBAAmB,mCAAI,EAAE;QAC5C,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,YAAY,GAAsC,EAAE,CAAC;IAE3D,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;QAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;QAC5C,IAAI,YAAY,GAAG,YAAY,CAAC;QAChC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAC1F,EAAE,CACH,CAAC;gBACF,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACvD,CAAC;YACD,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,UAAsB,EACtB,mBAAyD,EACzD,gBAAoD,EACpD,gBAAsC,EACtC,WAAkC,EAClC,EAAE;IACF,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;YAChE,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjF,OAAO;gBACL,UAAU,EAAE,UAAU,CAAC,KAAK;gBAC5B,OAAO,EAAE;oBACP;wBACE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;4BAC/D,KAAK,EAAE,aAAa,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK;4BAC9D,KAAK,EAAE,KAAK;4BACZ,aAAa,EAAE,aAAa,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ;4BACxD,IAAI,EAAE,IAAI;4BACV,aAAa,EAAE,aAAa;yBAC7B,CAAC,CAAC;wBACH,KAAK,EAAE,gBAAgB;qBACxB;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,OAAO;gBACL,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,GAAG,UAAU,CAAC,cAAc;gBAC/E,OAAO,EAAE;oBACP,GAAG,sBAAsB,CACvB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,oCAAoC,CACrC;oBACD;wBACE,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC9D,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;4BAC5D,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK;4BACtD,WAAW,EAAE,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC;4BACtD,gBAAgB,EAAE,IAAI;yBACvB,CAAC,CAAC;wBACH,KAAK,EAAE,WAAW,CAAC,aAAa;qBACjC;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;YACjD,MAAM,wBAAwB,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;YACpG,OAAO;gBACL,UAAU,EAAE,UAAU,CAAC,KAAK;gBAC5B,OAAO,EAAE;oBACP,GAAG,CAAC,wBAAwB;wBAC1B,CAAC,CAAC,sBAAsB,CACpB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,oCAAoC,CACrC;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,qBAAqB;wBACvB,CAAC,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC;wBAC9F,CAAC,CAAC,EAAE,CAAC;iBACR;aACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AutosuggestProps } from '../autosuggest/interfaces';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { I18nStringsOperators, operatorToDescription } from './i18n-utils';\nimport {\n ComparisonOperator,\n GroupText,\n I18nStrings,\n InternalFilteringOption,\n InternalFilteringProperty,\n InternalFreeTextFiltering,\n InternalQuery,\n InternalToken,\n InternalTokenGroup,\n JoinOperation,\n ParsedText,\n Query,\n Token,\n TokenGroup,\n} from './interfaces';\nimport {\n isInternalToken,\n matchFilteringProperty,\n matchOperator,\n matchOperatorPrefix,\n matchTokenValue,\n removeOperator,\n tokenGroupToTokens,\n trimStart,\n} from './utils';\n\ntype I18nStringsController = I18nStringsOperators &\n Pick<I18nStrings, 'operatorsText' | 'groupPropertiesText' | 'groupValuesText'>;\n\nexport const getQueryActions = ({\n query,\n onChange,\n filteringOptions,\n enableTokenGroups,\n}: {\n query: InternalQuery;\n onChange: NonCancelableEventHandler<Query>;\n filteringOptions: readonly InternalFilteringOption[];\n enableTokenGroups: boolean;\n}) => {\n const setQuery = (query: InternalQuery) => {\n function transformToken(token: InternalToken | InternalTokenGroup): Token | TokenGroup {\n if (isInternalToken(token)) {\n return matchTokenValue(token, filteringOptions);\n }\n return { ...token, tokens: token.tokens.map(transformToken) };\n }\n const tokens = query.tokens.map(transformToken);\n\n if (enableTokenGroups) {\n fireNonCancelableEvent(onChange, { tokens: [], operation: query.operation, tokenGroups: tokens });\n } else {\n fireNonCancelableEvent(onChange, { tokens: tokenGroupToTokens<Token>(tokens), operation: query.operation });\n }\n };\n\n const addToken = (token: InternalToken) => {\n setQuery({ ...query, tokens: [...query.tokens, token] });\n };\n\n const updateToken = (\n updateIndex: number,\n updatedToken: InternalToken | InternalTokenGroup,\n releasedTokens: InternalToken[]\n ) => {\n const nestedTokens = tokenGroupToTokens<InternalToken>([updatedToken]);\n const capturedTokenIndices = nestedTokens.map(token => token.standaloneIndex).filter(index => index !== undefined);\n const tokens = query.tokens\n .map((token, index) => (index === updateIndex ? updatedToken : token))\n .filter((_, index) => index === updateIndex || !capturedTokenIndices.includes(index));\n tokens.push(...releasedTokens);\n setQuery({ ...query, tokens });\n };\n\n const removeToken = (removeIndex: number) => {\n setQuery({ ...query, tokens: query.tokens.filter((_, index) => index !== removeIndex) });\n };\n\n const removeAllTokens = () => {\n setQuery({ ...query, tokens: [] });\n };\n\n const updateOperation = (operation: JoinOperation) => {\n setQuery({ ...query, operation });\n };\n\n return { addToken, updateToken, updateOperation, removeToken, removeAllTokens };\n};\n\nconst operatorOrder = ['=', '!=', ':', '!:', '^', '!^', '>=', '<=', '<', '>'] as const;\n\nexport const getAllowedOperators = (property: InternalFilteringProperty): ComparisonOperator[] => {\n const { operators = [], defaultOperator } = property;\n const operatorSet = new Set([defaultOperator, ...operators]);\n return operatorOrder.filter(op => operatorSet.has(op));\n};\n\nexport const getAllowedFreeTextOperators = (freeText: InternalFreeTextFiltering): ComparisonOperator[] => {\n const operatorSet = new Set(freeText.operators);\n return operatorOrder.filter(op => operatorSet.has(op));\n};\n\n/*\n * parses the value of the filtering input to figure out the current step of entering the token:\n * - \"property\": means that a filter on a particular column is being added, with operator already finalized\n * - \"operator\": means that a filter on a particular column is being added, with operator not yet finalized\n * - \"free-text\": means that a \"free text\" token is being added\n */\nexport const parseText = (\n filteringText: string,\n filteringProperties: readonly InternalFilteringProperty[],\n freeTextFiltering: InternalFreeTextFiltering\n): ParsedText => {\n const property = matchFilteringProperty(filteringProperties, filteringText);\n if (!property) {\n if (!freeTextFiltering.disabled) {\n // For free text filtering, we allow ! as a shortcut for !:\n let freeTextOperators = getAllowedFreeTextOperators(freeTextFiltering);\n freeTextOperators = freeTextOperators.indexOf('!:') >= 0 ? ['!', ...freeTextOperators] : freeTextOperators;\n const operator = matchOperator(freeTextOperators, filteringText);\n if (operator) {\n return {\n step: 'free-text',\n operator: operator === '!' ? '!:' : operator,\n value: removeOperator(filteringText, operator),\n };\n }\n }\n\n return {\n step: 'free-text',\n value: filteringText,\n };\n }\n\n const allowedOps = getAllowedOperators(property);\n\n const textWithoutProperty = filteringText.substring(property.propertyLabel.length);\n const operator = matchOperator(allowedOps, trimStart(textWithoutProperty));\n if (operator) {\n return {\n step: 'property',\n property,\n operator,\n value: removeOperator(textWithoutProperty, operator),\n };\n }\n\n const operatorPrefix = matchOperatorPrefix(allowedOps, trimStart(textWithoutProperty));\n if (operatorPrefix !== null) {\n return { step: 'operator', property, operatorPrefix };\n }\n\n return {\n step: 'free-text',\n value: filteringText,\n };\n};\n\ninterface OptionGroup<T> {\n label: string;\n options: T[];\n}\n\nconst getAllValueSuggestions = (\n filteringOptions: readonly InternalFilteringOption[],\n operator: ComparisonOperator | undefined = '=',\n i18nStrings: I18nStringsController,\n customGroupsText: readonly GroupText[]\n) => {\n const defaultGroup: OptionGroup<AutosuggestProps.Option> = {\n label: i18nStrings.groupValuesText ?? '',\n options: [],\n };\n const customGroups: { [K in string]: OptionGroup<AutosuggestProps.Option> } = {};\n filteringOptions.forEach(filteringOption => {\n const property = filteringOption.property;\n // given option refers to a non-existent filtering property\n if (!property) {\n return;\n }\n // this option's filtering property does not support current operator\n if (getAllowedOperators(property).indexOf(operator) === -1) {\n return;\n }\n if (property.propertyGroup && !customGroups[property.propertyGroup]) {\n const label = customGroupsText.reduce<string>(\n (acc, customGroup) => (customGroup.group === property.propertyGroup ? customGroup.values : acc),\n ''\n );\n customGroups[property.propertyGroup] = {\n label,\n options: [],\n };\n }\n const propertyGroup = property.propertyGroup ? customGroups[property.propertyGroup] : defaultGroup;\n propertyGroup.options.push({\n value: property.propertyLabel + ' ' + (operator || '=') + ' ' + filteringOption.value,\n label: filteringOption.label,\n __labelPrefix: property.propertyLabel + ' ' + (operator || '='),\n tags: filteringOption.tags,\n filteringTags: filteringOption.filteringTags,\n });\n });\n return [defaultGroup, ...Object.keys(customGroups).map(group => customGroups[group])];\n};\n\nconst filteringPropertyToAutosuggestOption = (filteringProperty: InternalFilteringProperty) => ({\n value: filteringProperty.propertyLabel,\n label: filteringProperty.propertyLabel,\n keepOpenOnSelect: true,\n});\n\nexport function getPropertySuggestions<T>(\n filteringProperties: readonly InternalFilteringProperty[],\n customGroupsText: readonly GroupText[],\n i18nStrings: I18nStringsController,\n filteringPropertyToOption: (filteringProperty: InternalFilteringProperty) => T\n) {\n const defaultGroup: OptionGroup<T> = {\n label: i18nStrings.groupPropertiesText ?? '',\n options: [],\n };\n const customGroups: { [K in string]: OptionGroup<T> } = {};\n\n filteringProperties.forEach(filteringProperty => {\n const { propertyGroup } = filteringProperty;\n let optionsGroup = defaultGroup;\n if (propertyGroup) {\n if (!customGroups[propertyGroup]) {\n const label = customGroupsText.reduce<string>(\n (acc, customGroup) => (customGroup.group === propertyGroup ? customGroup.properties : acc),\n ''\n );\n customGroups[propertyGroup] = { options: [], label };\n }\n optionsGroup = customGroups[propertyGroup];\n }\n optionsGroup.options.push(filteringPropertyToOption(filteringProperty));\n });\n const defaultGroupArray = defaultGroup.options.length ? [defaultGroup] : [];\n const customGroupsArray = Object.keys(customGroups).map(groupKey => customGroups[groupKey]);\n return [...defaultGroupArray, ...customGroupsArray];\n}\n\nexport const getAutosuggestOptions = (\n parsedText: ParsedText,\n filteringProperties: readonly InternalFilteringProperty[],\n filteringOptions: readonly InternalFilteringOption[],\n customGroupsText: readonly GroupText[],\n i18nStrings: I18nStringsController\n) => {\n switch (parsedText.step) {\n case 'property': {\n const { propertyLabel, groupValuesLabel } = parsedText.property;\n const options = filteringOptions.filter(o => o.property === parsedText.property);\n return {\n filterText: parsedText.value,\n options: [\n {\n options: options.map(({ label, value, tags, filteringTags }) => ({\n value: propertyLabel + ' ' + parsedText.operator + ' ' + value,\n label: label,\n __labelPrefix: propertyLabel + ' ' + parsedText.operator,\n tags: tags,\n filteringTags: filteringTags,\n })),\n label: groupValuesLabel,\n },\n ],\n };\n }\n case 'operator': {\n return {\n filterText: parsedText.property.propertyLabel + ' ' + parsedText.operatorPrefix,\n options: [\n ...getPropertySuggestions(\n filteringProperties,\n customGroupsText,\n i18nStrings,\n filteringPropertyToAutosuggestOption\n ),\n {\n options: getAllowedOperators(parsedText.property).map(value => ({\n value: parsedText.property.propertyLabel + ' ' + value + ' ',\n label: parsedText.property.propertyLabel + ' ' + value,\n description: operatorToDescription(value, i18nStrings),\n keepOpenOnSelect: true,\n })),\n label: i18nStrings.operatorsText,\n },\n ],\n };\n }\n case 'free-text': {\n const needsValueSuggestions = !!parsedText.value;\n const needsPropertySuggestions = !(parsedText.step === 'free-text' && parsedText.operator === '!:');\n return {\n filterText: parsedText.value,\n options: [\n ...(needsPropertySuggestions\n ? getPropertySuggestions(\n filteringProperties,\n customGroupsText,\n i18nStrings,\n filteringPropertyToAutosuggestOption\n )\n : []),\n ...(needsValueSuggestions\n ? getAllValueSuggestions(filteringOptions, parsedText.operator, i18nStrings, customGroupsText)\n : []),\n ],\n };\n }\n }\n};\n"]}