@hashicorp/design-system-components 7.1.0-rc-20261104204108 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/README.md +1 -1
- package/dist/components/hds/advanced-table/index.js +2 -1
- package/dist/components/hds/advanced-table/index.js.map +1 -1
- package/dist/components/hds/advanced-table/th-reorder-drop-target.js +1 -1
- package/dist/components/hds/advanced-table/th-resize-handle.js +1 -1
- package/dist/components/hds/advanced-table/th-selectable.js +1 -1
- package/dist/components/hds/advanced-table/th.js +1 -1
- package/dist/components/hds/advanced-table/tr.js +1 -1
- package/dist/components/hds/alert/index.js +1 -1
- package/dist/components/hds/alert/index.js.map +1 -1
- package/dist/components/hds/app-side-nav/list/title.js +1 -1
- package/dist/components/hds/app-side-nav/list/title.js.map +1 -1
- package/dist/components/hds/app-side-nav/portal/target.js +1 -1
- package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
- package/dist/components/hds/breadcrumb/index.js +1 -1
- package/dist/components/hds/breadcrumb/index.js.map +1 -1
- package/dist/components/hds/code-editor/description.js +1 -1
- package/dist/components/hds/code-editor/description.js.map +1 -1
- package/dist/components/hds/code-editor/title.js +1 -1
- package/dist/components/hds/code-editor/title.js.map +1 -1
- package/dist/components/hds/disclosure-primitive/index.js +1 -1
- package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
- package/dist/components/hds/dropdown/index.js +1 -1
- package/dist/components/hds/dropdown/index.js.map +1 -1
- package/dist/components/hds/dropdown/toggle/icon.js +1 -1
- package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
- package/dist/components/hds/form/character-count/index.js +1 -1
- package/dist/components/hds/form/character-count/index.js.map +1 -1
- package/dist/components/hds/form/error/index.js +2 -1
- package/dist/components/hds/form/error/index.js.map +1 -1
- package/dist/components/hds/form/helper-text/index.js +1 -1
- package/dist/components/hds/form/helper-text/index.js.map +1 -1
- package/dist/components/hds/table/th-selectable.js +2 -1
- package/dist/components/hds/table/th-selectable.js.map +1 -1
- package/dist/components/hds/tabs/index.js +2 -1
- package/dist/components/hds/tabs/index.js.map +1 -1
- package/dist/components/hds/tabs/panel.js +2 -1
- package/dist/components/hds/tabs/panel.js.map +1 -1
- package/dist/components/hds/tabs/tab.js +3 -1
- package/dist/components/hds/tabs/tab.js.map +1 -1
- package/dist/components/hds/time/single.js +2 -1
- package/dist/components/hds/time/single.js.map +1 -1
- package/dist/components.js +1 -1
- package/dist/{index-CrH5GQIT.js → index-Cb62sxVs.js} +3 -3
- package/dist/index-Cb62sxVs.js.map +1 -0
- package/dist/services/hds-icon-registry.js +1 -1
- package/dist/styles/@hashicorp/design-system-components-common.css +1 -0
- package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +2 -1
- package/dist/styles/@hashicorp/design-system-components.css.map +1 -1
- package/dist/styles/components/pagination.scss +1 -0
- package/package.json +3 -3
- package/dist/index-CrH5GQIT.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
design-system-components
|
|
2
2
|
==============================================================================
|
|
3
3
|
|
|
4
|
-
A package containing the
|
|
4
|
+
A package containing the components for the Helios Design System.
|
|
5
5
|
|
|
6
6
|
[](https://badge.fury.io/js/%40hashicorp%2Fdesign-system-components)
|
|
7
7
|
|
package/dist/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
design-system-components
|
|
2
2
|
==============================================================================
|
|
3
3
|
|
|
4
|
-
A package containing the
|
|
4
|
+
A package containing the components for the Helios Design System.
|
|
5
5
|
|
|
6
6
|
[](https://badge.fury.io/js/%40hashicorp%2Fdesign-system-components)
|
|
7
7
|
|
|
@@ -12,11 +12,12 @@ import 'ember-style-modifier';
|
|
|
12
12
|
import '@ember/modifier';
|
|
13
13
|
import '@nullvoxpopuli/ember-composable-helpers';
|
|
14
14
|
import './types.js';
|
|
15
|
+
import './utils.js';
|
|
15
16
|
import '../filter-bar/index.js';
|
|
16
17
|
import '../application-state/index.js';
|
|
17
18
|
import '../composite/index.js';
|
|
18
19
|
import './column-manager/index.js';
|
|
19
|
-
export { B as BORDER_WIDTH, f as DEFAULT_DENSITY, g as DEFAULT_VALIGN, h as DENSITIES, V as VALIGNMENTS, H as default } from '../../../index-
|
|
20
|
+
export { B as BORDER_WIDTH, f as DEFAULT_DENSITY, g as DEFAULT_VALIGN, h as DENSITIES, V as VALIGNMENTS, H as default } from '../../../index-Cb62sxVs.js';
|
|
20
21
|
import './body.js';
|
|
21
22
|
import './td.js';
|
|
22
23
|
import '../../../helpers/hds-t.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ import '@ember/object';
|
|
|
4
4
|
import 'ember-modifier';
|
|
5
5
|
import '@ember/modifier';
|
|
6
6
|
import 'ember-style-modifier';
|
|
7
|
-
export { e as default } from '../../../index-
|
|
7
|
+
export { e as default } from '../../../index-Cb62sxVs.js';
|
|
8
8
|
import './utils.js';
|
|
9
9
|
import './types.js';
|
|
10
10
|
import '@ember/template-compilation';
|
|
@@ -6,7 +6,7 @@ import '@ember/modifier';
|
|
|
6
6
|
import 'ember-style-modifier';
|
|
7
7
|
import '@ember/helper';
|
|
8
8
|
import './utils.js';
|
|
9
|
-
export { d as default } from '../../../index-
|
|
9
|
+
export { d as default } from '../../../index-Cb62sxVs.js';
|
|
10
10
|
import './column-manager/width.js';
|
|
11
11
|
import '../../../helpers/hds-t.js';
|
|
12
12
|
import '@ember/template-compilation';
|
|
@@ -6,7 +6,7 @@ import 'ember-modifier';
|
|
|
6
6
|
import '@ember/service';
|
|
7
7
|
import '@ember/modifier';
|
|
8
8
|
import './types.js';
|
|
9
|
-
export { b as default } from '../../../index-
|
|
9
|
+
export { b as default } from '../../../index-Cb62sxVs.js';
|
|
10
10
|
import '../form/checkbox/base.js';
|
|
11
11
|
import './th-button-sort.js';
|
|
12
12
|
import '@ember/template-compilation';
|
|
@@ -18,7 +18,7 @@ import './th-button-sort.js';
|
|
|
18
18
|
import './th-button-tooltip.js';
|
|
19
19
|
import './th-context-menu.js';
|
|
20
20
|
import './th-reorder-handle.js';
|
|
21
|
-
export { A as ALIGNMENTS, D as DEFAULT_ALIGN, a as default } from '../../../index-
|
|
21
|
+
export { A as ALIGNMENTS, D as DEFAULT_ALIGN, a as default } from '../../../index-Cb62sxVs.js';
|
|
22
22
|
import '../../../modifiers/hds-advanced-table-cell/dom-management.js';
|
|
23
23
|
import './types.js';
|
|
24
24
|
import '@ember/template-compilation';
|
|
@@ -3,7 +3,7 @@ import '@ember/debug';
|
|
|
3
3
|
import '@ember/helper';
|
|
4
4
|
import '@glimmer/tracking';
|
|
5
5
|
import 'ember-truth-helpers';
|
|
6
|
-
export { c as default } from '../../../index-
|
|
6
|
+
export { c as default } from '../../../index-Cb62sxVs.js';
|
|
7
7
|
import '@ember/template-compilation';
|
|
8
8
|
import '@ember/component';
|
|
9
9
|
import 'decorator-transforms/runtime';
|
|
@@ -6,7 +6,7 @@ import { eq } from 'ember-truth-helpers';
|
|
|
6
6
|
import { hash } from '@ember/helper';
|
|
7
7
|
import { on } from '@ember/modifier';
|
|
8
8
|
import { service } from '@ember/service';
|
|
9
|
-
import
|
|
9
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
10
10
|
import { HdsAlertColorValues, HdsAlertTypeValues } from './types.js';
|
|
11
11
|
import HdsDismissButton from '../dismiss-button/index.js';
|
|
12
12
|
import HdsIcon from '../icon/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/alert/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert, deprecate } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { eq } from 'ember-truth-helpers';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { service } from '@ember/service';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport { didInsert } from '@ember/render-modifiers';\n\nimport type { WithBoundArgs } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport { HdsAlertColorValues, HdsAlertTypeValues } from './types.ts';\nimport HdsDismissButton from '../dismiss-button/index.gts';\nimport HdsIcon from '../icon/index.gts';\nimport HdsAlertTitle from './title.gts';\nimport HdsAlertDescription from './description.gts';\nimport HdsButton from '../button/index.gts';\nimport HdsLinkStandalone from '../link/standalone.gts';\nimport HdsYield from '../yield/index.gts';\n\nimport type { HdsAlertColors, HdsAlertTypes } from './types.ts';\nimport type { HdsIconSignature } from '../icon/index.gts';\nimport type HdsThemingService from '../../../services/hds-theming.ts';\n\nclass HdsAlertGenericDeprecated extends Component<{ Blocks: { default: [] } }> {\n constructor(owner: Owner, args: Record<string, never>) {\n super(owner, args);\n deprecate(\n 'The \"Generic\" contextual component yielded by \"Hds::Alert\" is deprecated. Use \"GenericContent\" or \"GenericFooter\" instead.',\n false,\n {\n id: 'hds.alert.use-generic-above-or-generic-below',\n until: '7.0.0',\n for: '@hashicorp/design-system-components',\n since: { available: '6.2.1' },\n }\n );\n }\n <template>\n {{! template-lint-disable no-yield-only }}\n {{yield}}\n </template>\n}\n\nexport const TYPES: HdsAlertTypes[] = Object.values(HdsAlertTypeValues);\nexport const DEFAULT_COLOR: HdsAlertColors = HdsAlertColorValues.Neutral;\nexport const COLORS: HdsAlertColors[] = Object.values(HdsAlertColorValues);\n\nexport const MAPPING_COLORS_TO_ICONS = {\n [HdsAlertColorValues.Neutral]: 'info',\n [HdsAlertColorValues.Highlight]: 'info',\n [HdsAlertColorValues.Success]: 'check-circle',\n [HdsAlertColorValues.Warning]: 'alert-triangle',\n [HdsAlertColorValues.Critical]: 'alert-diamond',\n} as const;\n\nexport const MAPPING_COLORS_TO_CARBON_THEME_ICONS = {\n [HdsAlertColorValues.Neutral]: 'info-fill',\n [HdsAlertColorValues.Highlight]: 'info-fill',\n [HdsAlertColorValues.Success]: 'check-circle-fill',\n [HdsAlertColorValues.Warning]: 'alert-circle-fill',\n [HdsAlertColorValues.Critical]: 'error-filled',\n} as const;\n\nconst CONTENT_ELEMENT_SELECTOR = '.hds-alert__content';\nconst TITLE_ELEMENT_SELECTOR = '.hds-alert__title';\nconst DESCRIPTION_ELEMENT_SELECTOR = '.hds-alert__description';\n\nexport interface HdsAlertSignature {\n Args: {\n type: HdsAlertTypes;\n color?: HdsAlertColors;\n icon?: HdsIconSignature['Args']['name'] | false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Blocks: {\n default: [\n {\n Title?: typeof HdsAlertTitle;\n Description?: typeof HdsAlertDescription;\n /**\n * @deprecated Use \"GenericContent\" or \"GenericFooter\" instead.\n */\n Generic?: typeof HdsAlertGenericDeprecated;\n GenericContent?: typeof HdsYield;\n GenericFooter?: typeof HdsYield;\n LinkStandalone?: WithBoundArgs<typeof HdsLinkStandalone, 'size'>;\n Button?: WithBoundArgs<typeof HdsButton, 'size'>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAlert extends Component<HdsAlertSignature> {\n @tracked private _role?: string;\n @tracked private _ariaLabelledBy?: string;\n\n @service declare readonly hdsTheming: HdsThemingService;\n\n constructor(owner: Owner, args: HdsAlertSignature['Args']) {\n super(owner, args);\n\n assert(\n `@type for \"Hds::Alert\" must be one of the following: ${TYPES.join(\n ', '\n )}; received: ${this.args.type}`,\n TYPES.includes(this.args.type)\n );\n }\n\n get color(): HdsAlertColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Alert\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n get icon(): HdsIconSignature['Args']['name'] | false {\n const { icon } = this.args;\n\n // If `icon` isn't passed, use the pre-defined one from `color`\n if (icon === undefined) {\n // Carbon theme uses a different set of icons\n if (this.hdsTheming.isCarbonThemeEnabled) {\n return MAPPING_COLORS_TO_CARBON_THEME_ICONS[this.color];\n } else if (this.args.type === 'compact') {\n // for the \"compact\" type by default we use filled icons\n return `${MAPPING_COLORS_TO_ICONS[this.color]}-fill`;\n } else {\n // for all the other types by default we use outlined icons\n return MAPPING_COLORS_TO_ICONS[this.color];\n }\n // If `icon` is set explicitly to false, user doesn't want any icon in the alert\n } else if (icon === false) {\n assert(\n `@icon for \"Hds::Alert\" with @type \"compact\" is required`,\n this.args.type !== 'compact'\n );\n\n return false;\n } else {\n // If a name for `icon` is passed, set HdsIcon to that name\n return icon;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): ((event: MouseEvent, ...args: any[]) => void) | false {\n const { onDismiss } = this.args;\n\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return false;\n }\n }\n\n get iconSize(): HdsIconSignature['Args']['size'] {\n if (this.args.type === 'compact') {\n return '16';\n } else {\n return '24';\n }\n }\n\n get classNames(): string {\n const classes = ['hds-alert'];\n\n // Add a class based on the @type argument\n classes.push(`hds-alert--type-${this.args.type}`);\n\n // Add a class based on the @color argument\n classes.push(`hds-alert--color-${this.color}`);\n\n return classes.join(' ');\n }\n\n didInsert = (element: HTMLDivElement): void => {\n const actions = element.querySelectorAll(\n `${CONTENT_ELEMENT_SELECTOR} button, ${CONTENT_ELEMENT_SELECTOR} a`\n );\n\n // an Alert which actually alerts users (has role=\"alert\" & aria-live=\"polite\") as opposed to an informational or promo \"alert\"\n const isSemanticAlert: boolean =\n this.color === 'warning' ||\n this.color === 'critical' ||\n this.color === 'success';\n\n if (isSemanticAlert && actions.length) {\n this._role = 'alertdialog';\n } else if (isSemanticAlert) {\n this._role = 'alert';\n }\n\n // `alertdialog` must have an accessible name so we use either the\n // title or the description as label for the alert\n const label =\n element.querySelector(TITLE_ELEMENT_SELECTOR) ||\n element.querySelector(DESCRIPTION_ELEMENT_SELECTOR);\n if (label) {\n const labelId = label.getAttribute('id') || guidFor(element);\n label.setAttribute('id', labelId);\n this._ariaLabelledBy = labelId;\n }\n };\n\n <template>\n <div\n class={{this.classNames}}\n role={{this._role}}\n aria-live={{if this._role \"polite\"}}\n aria-labelledby={{this._ariaLabelledBy}}\n {{didInsert this.didInsert}}\n ...attributes\n >\n {{#if this.icon}}\n <div class=\"hds-alert__icon\">\n <HdsIcon\n @name={{this.icon}}\n @size={{this.iconSize}}\n @stretched={{true}}\n />\n </div>\n {{/if}}\n\n <div class=\"hds-alert__content\">\n <div\n class=\"hds-alert__text\n {{if\n (eq @type 'compact')\n 'hds-typography-body-100'\n 'hds-typography-body-200'\n }}\"\n >\n {{yield (hash Title=HdsAlertTitle)}}\n {{yield (hash Description=HdsAlertDescription)}}\n </div>\n\n {{yield (hash GenericContent=HdsYield)}}\n\n <div class=\"hds-alert__actions\">\n {{yield\n (hash\n Button=(component HdsButton size=\"small\")\n LinkStandalone=(component HdsLinkStandalone size=\"small\")\n )\n }}\n </div>\n\n {{yield (hash Generic=HdsAlertGenericDeprecated)}}\n {{yield (hash GenericFooter=HdsYield)}}\n </div>\n\n {{#if this.onDismiss}}\n <HdsDismissButton\n class=\"hds-alert__dismiss\"\n {{on \"click\" this.onDismiss}}\n />\n {{/if}}\n </div>\n </template>\n}\n"],"names":["HdsAlertGenericDeprecated","Component","constructor","owner","args","deprecate","id","until","for","since","available","setComponentTemplate","precompileTemplate","strictMode","TYPES","Object","values","HdsAlertTypeValues","DEFAULT_COLOR","HdsAlertColorValues","Neutral","COLORS","MAPPING_COLORS_TO_ICONS","Highlight","Success","Warning","Critical","MAPPING_COLORS_TO_CARBON_THEME_ICONS","CONTENT_ELEMENT_SELECTOR","TITLE_ELEMENT_SELECTOR","DESCRIPTION_ELEMENT_SELECTOR","HdsAlert","g","prototype","tracked","i","service","assert","join","type","includes","color","icon","undefined","hdsTheming","isCarbonThemeEnabled","onDismiss","iconSize","classNames","classes","push","didInsert","element","actions","querySelectorAll","isSemanticAlert","length","_role","label","querySelector","labelId","getAttribute","guidFor","setAttribute","_ariaLabelledBy","scope","HdsIcon","eq","hash","HdsAlertTitle","HdsAlertDescription","HdsYield","HdsButton","HdsLinkStandalone","HdsDismissButton","on"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/alert/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert, deprecate } from '@ember/debug';\nimport { guidFor } from '@ember/object/internals';\nimport { tracked } from '@glimmer/tracking';\nimport { eq } from 'ember-truth-helpers';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { service } from '@ember/service';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport type { WithBoundArgs } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport { HdsAlertColorValues, HdsAlertTypeValues } from './types.ts';\nimport HdsDismissButton from '../dismiss-button/index.gts';\nimport HdsIcon from '../icon/index.gts';\nimport HdsAlertTitle from './title.gts';\nimport HdsAlertDescription from './description.gts';\nimport HdsButton from '../button/index.gts';\nimport HdsLinkStandalone from '../link/standalone.gts';\nimport HdsYield from '../yield/index.gts';\n\nimport type { HdsAlertColors, HdsAlertTypes } from './types.ts';\nimport type { HdsIconSignature } from '../icon/index.gts';\nimport type HdsThemingService from '../../../services/hds-theming.ts';\n\nclass HdsAlertGenericDeprecated extends Component<{ Blocks: { default: [] } }> {\n constructor(owner: Owner, args: Record<string, never>) {\n super(owner, args);\n deprecate(\n 'The \"Generic\" contextual component yielded by \"Hds::Alert\" is deprecated. Use \"GenericContent\" or \"GenericFooter\" instead.',\n false,\n {\n id: 'hds.alert.use-generic-above-or-generic-below',\n until: '7.0.0',\n for: '@hashicorp/design-system-components',\n since: { available: '6.2.1' },\n }\n );\n }\n <template>\n {{! template-lint-disable no-yield-only }}\n {{yield}}\n </template>\n}\n\nexport const TYPES: HdsAlertTypes[] = Object.values(HdsAlertTypeValues);\nexport const DEFAULT_COLOR: HdsAlertColors = HdsAlertColorValues.Neutral;\nexport const COLORS: HdsAlertColors[] = Object.values(HdsAlertColorValues);\n\nexport const MAPPING_COLORS_TO_ICONS = {\n [HdsAlertColorValues.Neutral]: 'info',\n [HdsAlertColorValues.Highlight]: 'info',\n [HdsAlertColorValues.Success]: 'check-circle',\n [HdsAlertColorValues.Warning]: 'alert-triangle',\n [HdsAlertColorValues.Critical]: 'alert-diamond',\n} as const;\n\nexport const MAPPING_COLORS_TO_CARBON_THEME_ICONS = {\n [HdsAlertColorValues.Neutral]: 'info-fill',\n [HdsAlertColorValues.Highlight]: 'info-fill',\n [HdsAlertColorValues.Success]: 'check-circle-fill',\n [HdsAlertColorValues.Warning]: 'alert-circle-fill',\n [HdsAlertColorValues.Critical]: 'error-filled',\n} as const;\n\nconst CONTENT_ELEMENT_SELECTOR = '.hds-alert__content';\nconst TITLE_ELEMENT_SELECTOR = '.hds-alert__title';\nconst DESCRIPTION_ELEMENT_SELECTOR = '.hds-alert__description';\n\nexport interface HdsAlertSignature {\n Args: {\n type: HdsAlertTypes;\n color?: HdsAlertColors;\n icon?: HdsIconSignature['Args']['name'] | false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Blocks: {\n default: [\n {\n Title?: typeof HdsAlertTitle;\n Description?: typeof HdsAlertDescription;\n /**\n * @deprecated Use \"GenericContent\" or \"GenericFooter\" instead.\n */\n Generic?: typeof HdsAlertGenericDeprecated;\n GenericContent?: typeof HdsYield;\n GenericFooter?: typeof HdsYield;\n LinkStandalone?: WithBoundArgs<typeof HdsLinkStandalone, 'size'>;\n Button?: WithBoundArgs<typeof HdsButton, 'size'>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAlert extends Component<HdsAlertSignature> {\n @tracked private _role?: string;\n @tracked private _ariaLabelledBy?: string;\n\n @service declare readonly hdsTheming: HdsThemingService;\n\n constructor(owner: Owner, args: HdsAlertSignature['Args']) {\n super(owner, args);\n\n assert(\n `@type for \"Hds::Alert\" must be one of the following: ${TYPES.join(\n ', '\n )}; received: ${this.args.type}`,\n TYPES.includes(this.args.type)\n );\n }\n\n get color(): HdsAlertColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Alert\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n get icon(): HdsIconSignature['Args']['name'] | false {\n const { icon } = this.args;\n\n // If `icon` isn't passed, use the pre-defined one from `color`\n if (icon === undefined) {\n // Carbon theme uses a different set of icons\n if (this.hdsTheming.isCarbonThemeEnabled) {\n return MAPPING_COLORS_TO_CARBON_THEME_ICONS[this.color];\n } else if (this.args.type === 'compact') {\n // for the \"compact\" type by default we use filled icons\n return `${MAPPING_COLORS_TO_ICONS[this.color]}-fill`;\n } else {\n // for all the other types by default we use outlined icons\n return MAPPING_COLORS_TO_ICONS[this.color];\n }\n // If `icon` is set explicitly to false, user doesn't want any icon in the alert\n } else if (icon === false) {\n assert(\n `@icon for \"Hds::Alert\" with @type \"compact\" is required`,\n this.args.type !== 'compact'\n );\n\n return false;\n } else {\n // If a name for `icon` is passed, set HdsIcon to that name\n return icon;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): ((event: MouseEvent, ...args: any[]) => void) | false {\n const { onDismiss } = this.args;\n\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return false;\n }\n }\n\n get iconSize(): HdsIconSignature['Args']['size'] {\n if (this.args.type === 'compact') {\n return '16';\n } else {\n return '24';\n }\n }\n\n get classNames(): string {\n const classes = ['hds-alert'];\n\n // Add a class based on the @type argument\n classes.push(`hds-alert--type-${this.args.type}`);\n\n // Add a class based on the @color argument\n classes.push(`hds-alert--color-${this.color}`);\n\n return classes.join(' ');\n }\n\n didInsert = (element: HTMLDivElement): void => {\n const actions = element.querySelectorAll(\n `${CONTENT_ELEMENT_SELECTOR} button, ${CONTENT_ELEMENT_SELECTOR} a`\n );\n\n // an Alert which actually alerts users (has role=\"alert\" & aria-live=\"polite\") as opposed to an informational or promo \"alert\"\n const isSemanticAlert: boolean =\n this.color === 'warning' ||\n this.color === 'critical' ||\n this.color === 'success';\n\n if (isSemanticAlert && actions.length) {\n this._role = 'alertdialog';\n } else if (isSemanticAlert) {\n this._role = 'alert';\n }\n\n // `alertdialog` must have an accessible name so we use either the\n // title or the description as label for the alert\n const label =\n element.querySelector(TITLE_ELEMENT_SELECTOR) ||\n element.querySelector(DESCRIPTION_ELEMENT_SELECTOR);\n if (label) {\n const labelId = label.getAttribute('id') || guidFor(element);\n label.setAttribute('id', labelId);\n this._ariaLabelledBy = labelId;\n }\n };\n\n <template>\n <div\n class={{this.classNames}}\n role={{this._role}}\n aria-live={{if this._role \"polite\"}}\n aria-labelledby={{this._ariaLabelledBy}}\n {{didInsert this.didInsert}}\n ...attributes\n >\n {{#if this.icon}}\n <div class=\"hds-alert__icon\">\n <HdsIcon\n @name={{this.icon}}\n @size={{this.iconSize}}\n @stretched={{true}}\n />\n </div>\n {{/if}}\n\n <div class=\"hds-alert__content\">\n <div\n class=\"hds-alert__text\n {{if\n (eq @type 'compact')\n 'hds-typography-body-100'\n 'hds-typography-body-200'\n }}\"\n >\n {{yield (hash Title=HdsAlertTitle)}}\n {{yield (hash Description=HdsAlertDescription)}}\n </div>\n\n {{yield (hash GenericContent=HdsYield)}}\n\n <div class=\"hds-alert__actions\">\n {{yield\n (hash\n Button=(component HdsButton size=\"small\")\n LinkStandalone=(component HdsLinkStandalone size=\"small\")\n )\n }}\n </div>\n\n {{yield (hash Generic=HdsAlertGenericDeprecated)}}\n {{yield (hash GenericFooter=HdsYield)}}\n </div>\n\n {{#if this.onDismiss}}\n <HdsDismissButton\n class=\"hds-alert__dismiss\"\n {{on \"click\" this.onDismiss}}\n />\n {{/if}}\n </div>\n </template>\n}\n"],"names":["HdsAlertGenericDeprecated","Component","constructor","owner","args","deprecate","id","until","for","since","available","setComponentTemplate","precompileTemplate","strictMode","TYPES","Object","values","HdsAlertTypeValues","DEFAULT_COLOR","HdsAlertColorValues","Neutral","COLORS","MAPPING_COLORS_TO_ICONS","Highlight","Success","Warning","Critical","MAPPING_COLORS_TO_CARBON_THEME_ICONS","CONTENT_ELEMENT_SELECTOR","TITLE_ELEMENT_SELECTOR","DESCRIPTION_ELEMENT_SELECTOR","HdsAlert","g","prototype","tracked","i","service","assert","join","type","includes","color","icon","undefined","hdsTheming","isCarbonThemeEnabled","onDismiss","iconSize","classNames","classes","push","didInsert","element","actions","querySelectorAll","isSemanticAlert","length","_role","label","querySelector","labelId","getAttribute","guidFor","setAttribute","_ariaLabelledBy","scope","HdsIcon","eq","hash","HdsAlertTitle","HdsAlertDescription","HdsYield","HdsButton","HdsLinkStandalone","HdsDismissButton","on"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { guidFor } from '@ember/object/internals';
|
|
3
|
-
import
|
|
3
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
4
4
|
import HdsAppSideNavListItem from './item.js';
|
|
5
5
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
6
6
|
import { setComponentTemplate } from '@ember/component';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.js","sources":["../../../../../src/components/hds/app-side-nav/list/title.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport
|
|
1
|
+
{"version":3,"file":"title.js","sources":["../../../../../src/components/hds/app-side-nav/list/title.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport HdsAppSideNavListItem from './item.gts';\n\nexport interface HdsAppSideNavListTitleSignature {\n Args: {\n didInsertTitle?: (titleId: string) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNavListTitle extends Component<HdsAppSideNavListTitleSignature> {\n /* Generate a unique ID for each Title */\n private _titleId = 'title-' + guidFor(this);\n\n didInsertTitle = (element: HTMLElement): void => {\n const { didInsertTitle } = this.args;\n\n if (typeof didInsertTitle === 'function') {\n didInsertTitle(element.id);\n }\n };\n\n <template>\n <HdsAppSideNavListItem>\n <div\n class=\"hds-app-side-nav__list-title hds-typography-body-100 hds-font-weight-semibold\"\n id={{this._titleId}}\n {{didInsert this.didInsertTitle}}\n ...attributes\n >{{~yield~}}</div>\n </HdsAppSideNavListItem>\n </template>\n}\n"],"names":["HdsAppSideNavListTitle","Component","_titleId","guidFor","didInsertTitle","element","args","id","setComponentTemplate","precompileTemplate","strictMode","scope","HdsAppSideNavListItem","didInsert"],"mappings":";;;;;;;AAAA;;;AAGC;AAmBc,MAAMA,+BAA+BC,SAAA,CAAU;AAC5D,4CACQC,QAAA,GAAW,QAAA,GAAWC,OAAA,CAAQ,IAAI,CAAA;EAE1CC,cAAA,GAAkBC,OAAS,IAAkB;IAC3C,MAAM;AAAED,MAAAA;KAAgB,GAAG,IAAI,CAACE,IAAI;AAEpC,IAAA,IAAI,OAAOF,mBAAmB,UAAA,EAAY;AACxCA,MAAAA,cAAA,CAAeC,QAAQE,EAAE,CAAA;AAC3B,IAAA;EACF,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,0OAAA,EASA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,qBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -3,7 +3,7 @@ import { service } from '@ember/service';
|
|
|
3
3
|
import { tracked } from '@glimmer/tracking';
|
|
4
4
|
import { macroCondition, isTesting } from '@embroider/macros';
|
|
5
5
|
import PortalTarget from 'ember-stargate/components/portal-target';
|
|
6
|
-
import
|
|
6
|
+
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
|
|
7
7
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
8
8
|
import { setComponentTemplate } from '@ember/component';
|
|
9
9
|
import { g, i } from 'decorator-transforms/runtime';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target.js","sources":["../../../../../src/components/hds/app-side-nav/portal/target.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { macroCondition, isTesting } from '@embroider/macros';\nimport PortalTarget from 'ember-stargate/components/portal-target';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport { didUpdate } from '@ember/render-modifiers';\n\nimport type { Registry as Services } from '@ember/service';\n\nimport type { HdsAppSideNavPortalSignature } from './index.gts';\n\ninterface HdsAppSideNavPortalTargetSignature {\n Args: {\n targetName?: HdsAppSideNavPortalSignature['Args']['targetName'];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNavPortalTarget extends Component<HdsAppSideNavPortalTargetSignature> {\n @service declare readonly router: Services['router'];\n\n @tracked private _numSubnavs = 0;\n @tracked private _lastPanelEl: Element | undefined;\n\n static get prefersReducedMotionOverride(): boolean {\n return macroCondition(isTesting()) ? true : false;\n }\n\n private _prefersReducedMotionMQ = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n );\n\n get prefersReducedMotion(): boolean {\n return (\n HdsAppSideNavPortalTarget.prefersReducedMotionOverride ||\n (this._prefersReducedMotionMQ && this._prefersReducedMotionMQ.matches)\n );\n }\n\n panelsChanged = (portalCount: number): void => {\n this._numSubnavs = portalCount;\n };\n\n didUpdateSubnav = (element: HTMLElement, [count]: [number]): void => {\n this.animateSubnav(element, [count]);\n };\n\n animateSubnav = (element: HTMLElement, [count]: [number]): void => {\n /*\n * Here is ascii art of what the layout looks like for this setup\n *\n\n AppSideNav\n +----------------------+\n | +------------------+ |\n | | (\"header\") | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"body\") | |\n (PortalTarget) | | | |\n +----------------------------------------------+ | |\n | +----------+ +----------+ | +----------+ | | |\n | | (Portal) | | (Portal) | | (Portal) | | | |\n | | | | | | | | | | |\n | | hidden | | hidden | | *active* | | | |\n | | panel | | panel | | | panel | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | +----------+ +----------+ | +----------+ | | |\n +----------------------------------------------+ | |\n | | | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"footer\") | |\n | +------------------+ |\n +----------------------+\n\n *\n * every time `HcAppFrame::SideNav::Portal` renders, it contains a portaled \"panel\"\n * that is rendered into the `hds-app-side-nav__content-panels` (inside the PortalTarget).\n *\n * Rendering or unrendering other `HcAppFrame::SideNav::Portal`s triggers the number of\n * subnavs to change (via `numSubnavs`), so this function runs and slides\n * `hds-app-side-nav__content-panels` left or right using the `element.animate` api.\n *\n * */\n\n const activeIndex = count - 1;\n const targetElement = element;\n const { prefersReducedMotion } = this;\n\n const styles = getComputedStyle(targetElement);\n const columnWidth = styles.getPropertyValue(\n '--hds-var-app-side-nav-width-expanded'\n );\n const slideDuration = prefersReducedMotion ? 0 : 150;\n let fadeDuration = prefersReducedMotion ? 0 : 175;\n let fadeDelay = prefersReducedMotion ? 0 : 50;\n\n // slide entire parent panel\n const start = styles.transform;\n const end = `translateX(-${activeIndex * parseInt(columnWidth, 10)}px)`;\n const anim = targetElement.animate(\n [{ transform: start }, { transform: end }],\n {\n duration: slideDuration,\n easing: 'cubic-bezier(0.65, 0, 0.35, 1)',\n fill: 'forwards',\n }\n );\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n anim.finished.then((): void => {\n // uncomment this if we need/want to scroll the element to the top\n // targetElement.scrollIntoView(true);\n if (activeIndex > 0) {\n const allPrev = Array.from(targetElement.children).slice(\n 0,\n activeIndex\n ) as HTMLElement[];\n for (const ele of allPrev) {\n ele.ariaHidden = 'true';\n ele.style.setProperty('visibility', 'hidden');\n ele.style.setProperty('opacity', '0');\n }\n }\n // Notice: we don't add the styles by default because it writes a `style` attribute to the element and it causes an additional re-render\n if (macroCondition(isTesting())) {\n // Check the visibility of the element before attempting to commitStyles.\n if (targetElement.offsetParent !== null) {\n anim.commitStyles();\n }\n }\n });\n\n // fade in next panel\n const nextPanelEl = targetElement.children[activeIndex] as HTMLElement;\n\n // get reference to last child panel\n const lastPanelEl = targetElement.children[\n targetElement.children.length - 1\n ] as HTMLElement;\n\n if (nextPanelEl) {\n nextPanelEl.ariaHidden = 'false';\n nextPanelEl.style.setProperty('visibility', 'visible');\n // this eliminates a flicker if there's only one subnav rendering or if we\n // already just rendered this panel.\n if (this._lastPanelEl) {\n if (activeIndex === 0 || nextPanelEl.isSameNode(this._lastPanelEl)) {\n fadeDelay = 0;\n fadeDuration = 0;\n }\n }\n\n // remember the last panel\n this._lastPanelEl = lastPanelEl;\n\n nextPanelEl.animate([{ opacity: '0' }, { opacity: '1' }], {\n delay: fadeDelay,\n duration: fadeDuration,\n fill: 'forwards',\n });\n }\n };\n\n <template>\n <div class=\"hds-app-side-nav__content\" ...attributes>\n <PortalTarget\n @multiple={{true}}\n @onChange={{this.panelsChanged}}\n @name={{if @targetName @targetName \"hds-app-side-nav-portal-target\"}}\n class=\"hds-app-side-nav__content-panels\"\n {{didUpdate this.didUpdateSubnav this._numSubnavs}}\n />\n </div>\n </template>\n}\n"],"names":["HdsAppSideNavPortalTarget","Component","g","prototype","service","i","tracked","prefersReducedMotionOverride","macroCondition","isTesting","_prefersReducedMotionMQ","window","matchMedia","prefersReducedMotion","matches","panelsChanged","portalCount","_numSubnavs","didUpdateSubnav","element","count","animateSubnav","activeIndex","targetElement","styles","getComputedStyle","columnWidth","getPropertyValue","slideDuration","fadeDuration","fadeDelay","start","transform","end","parseInt","anim","animate","duration","easing","fill","finished","then","allPrev","Array","from","children","slice","ele","ariaHidden","style","setProperty","offsetParent","commitStyles","nextPanelEl","lastPanelEl","length","_lastPanelEl","isSameNode","opacity","delay","setComponentTemplate","precompileTemplate","strictMode","scope","PortalTarget","didUpdate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"target.js","sources":["../../../../../src/components/hds/app-side-nav/portal/target.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { macroCondition, isTesting } from '@embroider/macros';\nimport PortalTarget from 'ember-stargate/components/portal-target';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\n\nimport type { Registry as Services } from '@ember/service';\n\nimport type { HdsAppSideNavPortalSignature } from './index.gts';\n\ninterface HdsAppSideNavPortalTargetSignature {\n Args: {\n targetName?: HdsAppSideNavPortalSignature['Args']['targetName'];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAppSideNavPortalTarget extends Component<HdsAppSideNavPortalTargetSignature> {\n @service declare readonly router: Services['router'];\n\n @tracked private _numSubnavs = 0;\n @tracked private _lastPanelEl: Element | undefined;\n\n static get prefersReducedMotionOverride(): boolean {\n return macroCondition(isTesting()) ? true : false;\n }\n\n private _prefersReducedMotionMQ = window.matchMedia(\n '(prefers-reduced-motion: reduce)'\n );\n\n get prefersReducedMotion(): boolean {\n return (\n HdsAppSideNavPortalTarget.prefersReducedMotionOverride ||\n (this._prefersReducedMotionMQ && this._prefersReducedMotionMQ.matches)\n );\n }\n\n panelsChanged = (portalCount: number): void => {\n this._numSubnavs = portalCount;\n };\n\n didUpdateSubnav = (element: HTMLElement, [count]: [number]): void => {\n this.animateSubnav(element, [count]);\n };\n\n animateSubnav = (element: HTMLElement, [count]: [number]): void => {\n /*\n * Here is ascii art of what the layout looks like for this setup\n *\n\n AppSideNav\n +----------------------+\n | +------------------+ |\n | | (\"header\") | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"body\") | |\n (PortalTarget) | | | |\n +----------------------------------------------+ | |\n | +----------+ +----------+ | +----------+ | | |\n | | (Portal) | | (Portal) | | (Portal) | | | |\n | | | | | | | | | | |\n | | hidden | | hidden | | *active* | | | |\n | | panel | | panel | | | panel | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | | | | | | | | | | |\n | | | | | | | | | |\n | +----------+ +----------+ | +----------+ | | |\n +----------------------------------------------+ | |\n | | | |\n | +------------------+ |\n | |\n | +------------------+ |\n | | (\"footer\") | |\n | +------------------+ |\n +----------------------+\n\n *\n * every time `HcAppFrame::SideNav::Portal` renders, it contains a portaled \"panel\"\n * that is rendered into the `hds-app-side-nav__content-panels` (inside the PortalTarget).\n *\n * Rendering or unrendering other `HcAppFrame::SideNav::Portal`s triggers the number of\n * subnavs to change (via `numSubnavs`), so this function runs and slides\n * `hds-app-side-nav__content-panels` left or right using the `element.animate` api.\n *\n * */\n\n const activeIndex = count - 1;\n const targetElement = element;\n const { prefersReducedMotion } = this;\n\n const styles = getComputedStyle(targetElement);\n const columnWidth = styles.getPropertyValue(\n '--hds-var-app-side-nav-width-expanded'\n );\n const slideDuration = prefersReducedMotion ? 0 : 150;\n let fadeDuration = prefersReducedMotion ? 0 : 175;\n let fadeDelay = prefersReducedMotion ? 0 : 50;\n\n // slide entire parent panel\n const start = styles.transform;\n const end = `translateX(-${activeIndex * parseInt(columnWidth, 10)}px)`;\n const anim = targetElement.animate(\n [{ transform: start }, { transform: end }],\n {\n duration: slideDuration,\n easing: 'cubic-bezier(0.65, 0, 0.35, 1)',\n fill: 'forwards',\n }\n );\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n anim.finished.then((): void => {\n // uncomment this if we need/want to scroll the element to the top\n // targetElement.scrollIntoView(true);\n if (activeIndex > 0) {\n const allPrev = Array.from(targetElement.children).slice(\n 0,\n activeIndex\n ) as HTMLElement[];\n for (const ele of allPrev) {\n ele.ariaHidden = 'true';\n ele.style.setProperty('visibility', 'hidden');\n ele.style.setProperty('opacity', '0');\n }\n }\n // Notice: we don't add the styles by default because it writes a `style` attribute to the element and it causes an additional re-render\n if (macroCondition(isTesting())) {\n // Check the visibility of the element before attempting to commitStyles.\n if (targetElement.offsetParent !== null) {\n anim.commitStyles();\n }\n }\n });\n\n // fade in next panel\n const nextPanelEl = targetElement.children[activeIndex] as HTMLElement;\n\n // get reference to last child panel\n const lastPanelEl = targetElement.children[\n targetElement.children.length - 1\n ] as HTMLElement;\n\n if (nextPanelEl) {\n nextPanelEl.ariaHidden = 'false';\n nextPanelEl.style.setProperty('visibility', 'visible');\n // this eliminates a flicker if there's only one subnav rendering or if we\n // already just rendered this panel.\n if (this._lastPanelEl) {\n if (activeIndex === 0 || nextPanelEl.isSameNode(this._lastPanelEl)) {\n fadeDelay = 0;\n fadeDuration = 0;\n }\n }\n\n // remember the last panel\n this._lastPanelEl = lastPanelEl;\n\n nextPanelEl.animate([{ opacity: '0' }, { opacity: '1' }], {\n delay: fadeDelay,\n duration: fadeDuration,\n fill: 'forwards',\n });\n }\n };\n\n <template>\n <div class=\"hds-app-side-nav__content\" ...attributes>\n <PortalTarget\n @multiple={{true}}\n @onChange={{this.panelsChanged}}\n @name={{if @targetName @targetName \"hds-app-side-nav-portal-target\"}}\n class=\"hds-app-side-nav__content-panels\"\n {{didUpdate this.didUpdateSubnav this._numSubnavs}}\n />\n </div>\n </template>\n}\n"],"names":["HdsAppSideNavPortalTarget","Component","g","prototype","service","i","tracked","prefersReducedMotionOverride","macroCondition","isTesting","_prefersReducedMotionMQ","window","matchMedia","prefersReducedMotion","matches","panelsChanged","portalCount","_numSubnavs","didUpdateSubnav","element","count","animateSubnav","activeIndex","targetElement","styles","getComputedStyle","columnWidth","getPropertyValue","slideDuration","fadeDuration","fadeDelay","start","transform","end","parseInt","anim","animate","duration","easing","fill","finished","then","allPrev","Array","from","children","slice","ele","ariaHidden","style","setProperty","offsetParent","commitStyles","nextPanelEl","lastPanelEl","length","_lastPanelEl","isSameNode","opacity","delay","setComponentTemplate","precompileTemplate","strictMode","scope","PortalTarget","didUpdate"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { service } from '@ember/service';
|
|
3
|
-
import
|
|
3
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
4
4
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
5
5
|
import { setComponentTemplate } from '@ember/component';
|
|
6
6
|
import { g, i } from 'decorator-transforms/runtime';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/breadcrumb/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/breadcrumb/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport type HdsIntlService from '../../../services/hds-intl';\n\nexport interface HdsBreadcrumbSignature {\n Args: {\n ariaLabel?: string;\n itemsCanWrap?: boolean;\n didInsert?: () => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLElement;\n}\n\nconst NOOP = () => {};\n\nexport default class HdsBreadcrumb extends Component<HdsBreadcrumbSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n get didInsert(): () => void {\n const { didInsert } = this.args;\n\n if (typeof didInsert === 'function') {\n return didInsert;\n } else {\n return NOOP;\n }\n }\n\n get itemsCanWrap(): boolean {\n return this.args.itemsCanWrap ?? true;\n }\n\n get ariaLabel(): string {\n return (\n this.args.ariaLabel ??\n this.hdsIntl.t('hds.components.breadcrumb.aria-label', {\n default: 'breadcrumbs',\n })\n );\n }\n\n get classNames(): string {\n const classes = ['hds-breadcrumb'];\n\n // add a class based on the @itemsCanWrap argument\n if (this.itemsCanWrap) {\n classes.push('hds-breadcrumb--items-can-wrap');\n }\n\n return classes.join(' ');\n }\n\n <template>\n <nav class={{this.classNames}} aria-label={{this.ariaLabel}} ...attributes>\n <ol class=\"hds-breadcrumb__list\" {{didInsert this.didInsert}}>\n {{yield}}\n </ol>\n </nav>\n </template>\n}\n"],"names":["NOOP","HdsBreadcrumb","Component","g","prototype","service","i","didInsert","args","itemsCanWrap","ariaLabel","hdsIntl","t","default","classNames","classes","push","join","setComponentTemplate","precompileTemplate","strictMode","scope"],"mappings":";;;;;;;AAAA;;;AAGC;AAoBD,MAAMA,OAAOA,MAAA,CAAO,CAAA;AAEL,MAAMC,sBAAsBC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAClDC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;EAED,IAAIC,SAAAA,GAAwB;IAC1B,MAAM;AAAEA,MAAAA;KAAW,GAAG,IAAI,CAACC,IAAI;AAE/B,IAAA,IAAI,OAAOD,cAAc,UAAA,EAAY;AACnC,MAAA,OAAOA,SAAA;AACT,IAAA,CAAA,MAAO;AACL,MAAA,OAAOP,IAAA;AACT,IAAA;AACF,EAAA;EAEA,IAAIS,YAAAA,GAAwB;AAC1B,IAAA,OAAO,IAAI,CAACD,IAAI,CAACC,YAAY,IAAI,IAAA;AACnC,EAAA;EAEA,IAAIC,SAAAA,GAAoB;AACtB,IAAA,OACE,IAAI,CAACF,IAAI,CAACE,SAAS,IACnB,IAAI,CAACC,OAAO,CAACC,CAAC,CAAC,sCAAA,EAAwC;AACrDC,MAAAA,OAAA,EAAS;AACX,KAAA,CACF;AACF,EAAA;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,MAAMC,OAAA,GAAU,CAAC,gBAAA,CAAiB;AAElC;IACA,IAAI,IAAI,CAACN,YAAY,EAAE;AACrBM,MAAAA,OAAA,CAAQC,IAAI,CAAC,gCAAA,CAAA;AACf,IAAA;AAEA,IAAA,OAAOD,OAAA,CAAQE,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,iLAAA,EAMA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAd,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
-
import
|
|
2
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
3
3
|
import HdsTextBody from '../text/body.js';
|
|
4
4
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
5
5
|
import { setComponentTemplate } from '@ember/component';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description.js","sources":["../../../../src/components/hds/code-editor/description.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport
|
|
1
|
+
{"version":3,"file":"description.js","sources":["../../../../src/components/hds/code-editor/description.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport HdsTextBody from '../text/body.gts';\n\nimport type { HdsTextBodySignature } from '../text/body.gts';\n\ntype HdsCodeEditorDescriptionElement = HdsTextBodySignature['Element'];\nexport interface HdsCodeEditorDescriptionSignature {\n Args: {\n editorId: string;\n onInsert: (element: HdsCodeEditorDescriptionElement) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HdsCodeEditorDescriptionElement;\n}\n\nexport default class HdsCodeEditorDescription extends Component<HdsCodeEditorDescriptionSignature> {\n private _id = `${this.args.editorId}-description`;\n\n <template>\n <HdsTextBody\n id={{this._id}}\n class=\"hds-code-editor__description\"\n @tag=\"p\"\n @size=\"100\"\n {{didInsert @onInsert}}\n ...attributes\n >\n {{yield}}\n </HdsTextBody>\n </template>\n}\n"],"names":["HdsCodeEditorDescription","Component","_id","args","editorId","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTextBody","didInsert"],"mappings":";;;;;;AAAA;;;AAGC;AAsBc,MAAMA,iCAAiCC,SAAA,CAAU;AACtDC,EAAAA,GAAA,GAAM,CAAA,EAAG,IAAI,CAACC,IAAI,CAACC,QAAQ,CAAA,YAAA,CAAc;AAEjD,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,kKAAA,EAWA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,WAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
-
import
|
|
2
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
3
3
|
import HdsTextBody from '../text/body.js';
|
|
4
4
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
5
5
|
import { setComponentTemplate } from '@ember/component';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.js","sources":["../../../../src/components/hds/code-editor/title.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport
|
|
1
|
+
{"version":3,"file":"title.js","sources":["../../../../src/components/hds/code-editor/title.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport HdsTextBody from '../text/body.gts';\n\nimport type { HdsTextBodySignature } from '../text/body.gts';\n\ntype HdsCodeEditorTitleElement = HdsTextBodySignature['Element'];\n\nexport interface HdsCodeEditorTitleSignature {\n Args: {\n editorId: string;\n tag?: HdsTextBodySignature['Args']['tag'];\n onInsert: (element: HdsCodeEditorTitleElement) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HdsCodeEditorTitleElement;\n}\n\nexport default class HdsCodeEditorTitle extends Component<HdsCodeEditorTitleSignature> {\n private _id = `${this.args.editorId}-title`;\n\n get tag(): HdsTextBodySignature['Args']['tag'] {\n return this.args.tag ?? 'h2';\n }\n\n <template>\n <HdsTextBody\n id={{this._id}}\n class=\"hds-code-editor__title\"\n @tag={{this.tag}}\n @size=\"200\"\n @weight=\"semibold\"\n {{didInsert @onInsert}}\n ...attributes\n >\n {{yield}}\n </HdsTextBody>\n </template>\n}\n"],"names":["HdsCodeEditorTitle","Component","_id","args","editorId","tag","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTextBody","didInsert"],"mappings":";;;;;;AAAA;;;AAGC;AAwBc,MAAMA,2BAA2BC,SAAA,CAAU;AAChDC,EAAAA,GAAA,GAAM,CAAA,EAAG,IAAI,CAACC,IAAI,CAACC,QAAQ,CAAA,MAAA,CAAQ;EAE3C,IAAIC,GAAAA,GAA2C;AAC7C,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,GAAG,IAAI,IAAA;AAC1B,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,wLAAA,EAYA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,WAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -3,7 +3,7 @@ import { tracked } from '@glimmer/tracking';
|
|
|
3
3
|
import { schedule } from '@ember/runloop';
|
|
4
4
|
import { guidFor } from '@ember/object/internals';
|
|
5
5
|
import { hash } from '@ember/helper';
|
|
6
|
-
import
|
|
6
|
+
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
|
|
7
7
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
8
8
|
import { setComponentTemplate } from '@ember/component';
|
|
9
9
|
import { g, i } from 'decorator-transforms/runtime';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/disclosure-primitive/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { schedule } from '@ember/runloop';\nimport { guidFor } from '@ember/object/internals';\nimport { hash } from '@ember/helper';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/disclosure-primitive/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { schedule } from '@ember/runloop';\nimport { guidFor } from '@ember/object/internals';\nimport { hash } from '@ember/helper';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\n\nexport interface HdsDisclosurePrimitiveSignature {\n Args: {\n isOpen?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClose?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClickToggle?: (...args: any[]) => void;\n };\n Blocks: {\n toggle: [\n {\n contentId: string;\n isOpen: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClickToggle: (...args: any[]) => void;\n },\n ];\n content: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n close: (...args: any[]) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsDisclosurePrimitive extends Component<HdsDisclosurePrimitiveSignature> {\n @tracked private _isOpen = false;\n @tracked private _isControlled = this.args.isOpen !== undefined;\n private _contentId = 'content-' + guidFor(this);\n\n get isOpen(): boolean {\n if (this._isControlled) {\n // if the state is controlled from outside, the argument overrides the internal state\n return this.args.isOpen ?? this._isOpen;\n } else {\n // if the state changes internally, the internal state overrides the argument\n return this._isOpen;\n }\n }\n\n set isOpen(value) {\n this._isOpen = value || false;\n }\n\n onClickToggle = (): void => {\n this.isOpen = !this.isOpen;\n this._isControlled = false;\n // we call the \"onClickToggle\" callback if it exists and it's a function\n if (\n this.args.onClickToggle &&\n typeof this.args.onClickToggle === 'function'\n ) {\n this.args.onClickToggle(this.isOpen);\n }\n };\n\n onStateChange = () => {\n if (this.args.isOpen !== undefined) {\n this.isOpen = this.args.isOpen;\n }\n this._isControlled = true;\n };\n\n close = (): void => {\n // we schedule this afterRender to avoid an error in tests caused by updating `isOpen` multiple times in the same computation\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.isOpen = false;\n // we call the \"onClose\" callback if it exists (and is a function)\n if (this.args.onClose && typeof this.args.onClose === 'function') {\n this.args.onClose();\n }\n });\n };\n\n <template>\n <div\n class=\"hds-disclosure-primitive\"\n {{didUpdate this.onStateChange @isOpen}}\n ...attributes\n >\n <div class=\"hds-disclosure-primitive__toggle\">\n {{yield\n (hash\n onClickToggle=this.onClickToggle\n isOpen=this.isOpen\n contentId=this._contentId\n )\n to=\"toggle\"\n }}\n </div>\n <div class=\"hds-disclosure-primitive__content\" id={{this._contentId}}>\n {{#if this.isOpen}}\n {{yield (hash close=this.close) to=\"content\"}}\n {{/if}}\n </div>\n </div>\n </template>\n}\n"],"names":["HdsDisclosurePrimitive","Component","g","prototype","tracked","i","args","isOpen","undefined","_contentId","guidFor","_isControlled","_isOpen","value","onClickToggle","onStateChange","close","schedule","onClose","setComponentTemplate","precompileTemplate","strictMode","scope","didUpdate","hash"],"mappings":";;;;;;;;;;AAAA;;;AAGC;AAqCc,MAAMA,+BAA+BC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAC3DC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0B,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CAC1BC,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAgC,IAAI,CAACE,IAAI,CAACC,MAAM,KAAKC,SAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,cAAA,IAAAH,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAA,MAAA;AAC9CI,EAAAA,UAAA,GAAa,UAAA,GAAaC,OAAA,CAAQ,IAAI,CAAA;EAE9C,IAAIH,MAAAA,GAAkB;IACpB,IAAI,IAAI,CAACI,aAAa,EAAE;AACtB;MACA,OAAO,IAAI,CAACL,IAAI,CAACC,MAAM,IAAI,IAAI,CAACK,OAAO;AACzC,IAAA,CAAA,MAAO;AACL;MACA,OAAO,IAAI,CAACA,OAAO;AACrB,IAAA;AACF,EAAA;EAEA,IAAIL,MAAAA,CAAOM,KAAK,EAAE;AAChB,IAAA,IAAI,CAACD,OAAO,GAAGC,KAAA,IAAS,KAAA;AAC1B,EAAA;EAEAC,aAAA,GAAgBA,MAAQ;AACtB,IAAA,IAAI,CAACP,MAAM,GAAG,CAAC,IAAI,CAACA,MAAM;IAC1B,IAAI,CAACI,aAAa,GAAG,KAAA;AACrB;AACA,IAAA,IACE,IAAI,CAACL,IAAI,CAACQ,aAAa,IACvB,OAAO,IAAI,CAACR,IAAI,CAACQ,aAAa,KAAK,UAAA,EACnC;MACA,IAAI,CAACR,IAAI,CAACQ,aAAa,CAAC,IAAI,CAACP,MAAM,CAAA;AACrC,IAAA;EACF,CAAA;EAEAQ,aAAA,GAAgBA,MAAA;AACd,IAAA,IAAI,IAAI,CAACT,IAAI,CAACC,MAAM,KAAKC,SAAA,EAAW;AAClC,MAAA,IAAI,CAACD,MAAM,GAAG,IAAI,CAACD,IAAI,CAACC,MAAM;AAChC,IAAA;IACA,IAAI,CAACI,aAAa,GAAG,IAAA;EACvB,CAAA;EAEAK,KAAA,GAAQA,MAAQ;AACd;AACA;IACAC,QAAA,CAAS,aAAA,EAAe,MAAQ;MAC9B,IAAI,CAACV,MAAM,GAAG,KAAA;AACd;AACA,MAAA,IAAI,IAAI,CAACD,IAAI,CAACY,OAAO,IAAI,OAAO,IAAI,CAACZ,IAAI,CAACY,OAAO,KAAK,UAAA,EAAY;AAChE,QAAA,IAAI,CAACZ,IAAI,CAACY,OAAO,EAAA;AACnB,MAAA;AACF,IAAA,CAAA,CAAA;EACF,CAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,6cAAA,EAsBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -3,7 +3,7 @@ import { assert } from '@ember/debug';
|
|
|
3
3
|
import { hash } from '@ember/helper';
|
|
4
4
|
import { or } from 'ember-truth-helpers';
|
|
5
5
|
import style from 'ember-style-modifier';
|
|
6
|
-
import
|
|
6
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
7
7
|
import { HdsDropdownPositionValues, HdsDropdownPositionToPlacementValues } from './types.js';
|
|
8
8
|
import HdsPopoverPrimitive from '../popover-primitive/index.js';
|
|
9
9
|
import HdsDropdownToggleButton from './toggle/button.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/dropdown/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { or } from 'ember-truth-helpers';\nimport style from 'ember-style-modifier';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport { didInsert } from '@ember/render-modifiers';\n\nimport type { WithBoundArgs } from '@glint/template';\n\nimport {\n HdsDropdownPositionToPlacementValues,\n HdsDropdownPositionValues,\n} from './types.ts';\nimport HdsPopoverPrimitive from '../popover-primitive/index.gts';\nimport HdsDropdownToggleButton from './toggle/button.gts';\nimport HdsDropdownToggleIcon from './toggle/icon.gts';\nimport HdsDropdownHeader from './header.gts';\nimport HdsDropdownListItemCheckbox from './list-item/checkbox.gts';\nimport HdsDropdownListItemCheckmark from './list-item/checkmark.gts';\nimport HdsDropdownListItemCopyItem from './list-item/copy-item.gts';\nimport HdsDropdownListItemDescription from './list-item/description.gts';\nimport HdsDropdownListItemGeneric from './list-item/generic.gts';\nimport HdsDropdownListItemInteractive from './list-item/interactive.gts';\nimport HdsDropdownListItemRadio from './list-item/radio.gts';\nimport HdsDropdownListItemSeparator from './list-item/separator.gts';\nimport HdsDropdownListItemTitle from './list-item/title.gts';\nimport HdsDropdownFooter from './footer.gts';\n\nimport type { HdsPopoverPrimitiveSignature } from '../popover-primitive/index.gts';\nimport type { HdsDropdownPositions } from './types.ts';\nimport type { HdsAnchoredPositionOptions } from '../../../modifiers/hds-anchored-position.ts';\n\nexport const DEFAULT_POSITION = HdsDropdownPositionValues.BottomRight;\nexport const POSITIONS: HdsDropdownPositions[] = Object.values(\n HdsDropdownPositionValues\n);\n\nexport interface HdsDropdownSignature {\n Args: {\n height?: string;\n isInline?: boolean;\n isOpen?: HdsPopoverPrimitiveSignature['Args']['isOpen'];\n listPosition?: HdsDropdownPositions;\n width?: string;\n enableCollisionDetection?: HdsAnchoredPositionOptions['enableCollisionDetection'];\n preserveContentInDom?: boolean;\n matchToggleWidth?: boolean;\n onOpen?: HdsPopoverPrimitiveSignature['Args']['onOpen'];\n onClose?: HdsPopoverPrimitiveSignature['Args']['onClose'];\n onFocusOut?: HdsPopoverPrimitiveSignature['Args']['onFocusOut'];\n boundary?: HdsAnchoredPositionOptions['boundary'];\n };\n Blocks: {\n default: [\n {\n Footer?: typeof HdsDropdownFooter;\n Header?: typeof HdsDropdownHeader;\n Checkbox?: typeof HdsDropdownListItemCheckbox;\n Checkmark?: typeof HdsDropdownListItemCheckmark;\n CopyItem?: typeof HdsDropdownListItemCopyItem;\n Description?: typeof HdsDropdownListItemDescription;\n Generic?: typeof HdsDropdownListItemGeneric;\n Interactive?: typeof HdsDropdownListItemInteractive;\n Radio?: typeof HdsDropdownListItemRadio;\n Separator?: typeof HdsDropdownListItemSeparator;\n Title?: typeof HdsDropdownListItemTitle;\n ToggleButton?: WithBoundArgs<\n typeof HdsDropdownToggleButton,\n 'isOpen' | 'setupPrimitiveToggle'\n >;\n ToggleIcon?: WithBoundArgs<\n typeof HdsDropdownToggleIcon,\n 'isOpen' | 'setupPrimitiveToggle'\n >;\n close: (event?: Event) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsDropdown extends Component<HdsDropdownSignature> {\n get listPosition(): HdsDropdownPositions {\n const { listPosition = DEFAULT_POSITION } = this.args;\n\n assert(\n `@listPosition for \"Hds::Dropdown::Index\" must be one of the following: ${POSITIONS.join(\n ', '\n )}; received: ${listPosition}`,\n POSITIONS.includes(listPosition)\n );\n\n return listPosition;\n }\n\n get enableCollisionDetection(): HdsAnchoredPositionOptions['enableCollisionDetection'] {\n return this.args.enableCollisionDetection ?? false;\n }\n\n get matchToggleWidth(): HdsAnchoredPositionOptions['matchToggleWidth'] {\n return this.args.matchToggleWidth ?? false;\n }\n\n get anchoredPositionOptions(): {\n placement: HdsAnchoredPositionOptions['placement'];\n offsetOptions: HdsAnchoredPositionOptions['offsetOptions'];\n enableCollisionDetection: HdsAnchoredPositionOptions['enableCollisionDetection'];\n matchToggleWidth: HdsAnchoredPositionOptions['matchToggleWidth'];\n boundary: HdsAnchoredPositionOptions['boundary'];\n } {\n // custom options specific for the `RichTooltip` component\n // for details see the `hds-anchored-position` modifier\n return {\n placement: HdsDropdownPositionToPlacementValues[this.listPosition],\n offsetOptions: 4,\n enableCollisionDetection: this.enableCollisionDetection ? 'flip' : false,\n matchToggleWidth: this.matchToggleWidth,\n boundary: this.args.boundary,\n };\n }\n\n get classNames(): string {\n const classes = ['hds-dropdown'];\n\n // add a class based on the @isInline argument\n if (this.args.isInline) {\n classes.push('hds-dropdown--is-inline');\n }\n\n return classes.join(' ');\n }\n\n get classNamesContent(): string {\n const classes = ['hds-dropdown__content'];\n\n // add a class based on the @listPosition argument\n // TODO: we preserved these classes to avoid introducing breaking changes for consumers who rely on these classes for tests, but we aim to remove them in the next major release\n // context: https://github.com/hashicorp/design-system/pull/2309#discussion_r1706941892\n classes.push(`hds-dropdown__content--position-${this.listPosition}`);\n\n // add a class based on the @width or @matchToggleWidth arguments\n if (this.args.width || this.args.matchToggleWidth) {\n classes.push('hds-dropdown__content--fixed-width');\n }\n\n return classes.join(' ');\n }\n\n didInsertList = (element: HTMLUListElement): void => {\n const checkmarkItems = element.querySelectorAll(`[role=\"option\"]`);\n if (checkmarkItems.length) {\n const toggleButtonId = element\n .closest('.hds-dropdown')\n ?.querySelector('.hds-dropdown-toggle-button')\n ?.getAttribute('id');\n\n element.setAttribute('role', 'listbox');\n\n if (toggleButtonId) {\n element.setAttribute('aria-labelledby', toggleButtonId);\n }\n }\n };\n\n <template>\n <HdsPopoverPrimitive\n @isOpen={{@isOpen}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @onFocusOut={{@onFocusOut}}\n @boundary={{@boundary}}\n @enableClickEvents={{true}}\n as |PP|\n >\n <div\n class={{this.classNames}}\n ...attributes\n {{PP.setupPrimitiveContainer}}\n >\n {{yield\n (hash\n ToggleButton=(component\n HdsDropdownToggleButton\n isOpen=PP.isOpen\n setupPrimitiveToggle=PP.setupPrimitiveToggle\n )\n ToggleIcon=(component\n HdsDropdownToggleIcon\n isOpen=PP.isOpen\n setupPrimitiveToggle=PP.setupPrimitiveToggle\n )\n close=PP.hidePopover\n )\n }}\n <div\n tabindex=\"-1\"\n class={{this.classNamesContent}}\n {{style width=@width max-height=@height}}\n {{PP.setupPrimitivePopover\n anchoredPositionOptions=this.anchoredPositionOptions\n }}\n >\n {{#if (or PP.isOpen @preserveContentInDom)}}\n {{yield (hash Header=HdsDropdownHeader close=PP.hidePopover)}}\n <ul class=\"hds-dropdown__list\" {{didInsert this.didInsertList}}>\n {{yield\n (hash\n close=PP.hidePopover\n Checkbox=HdsDropdownListItemCheckbox\n Checkmark=HdsDropdownListItemCheckmark\n CopyItem=HdsDropdownListItemCopyItem\n Description=HdsDropdownListItemDescription\n Generic=HdsDropdownListItemGeneric\n Interactive=HdsDropdownListItemInteractive\n Radio=HdsDropdownListItemRadio\n Separator=HdsDropdownListItemSeparator\n Title=HdsDropdownListItemTitle\n )\n }}\n </ul>\n {{yield (hash close=PP.hidePopover Footer=HdsDropdownFooter)}}\n {{/if}}\n </div>\n </div>\n </HdsPopoverPrimitive>\n </template>\n}\n"],"names":["DEFAULT_POSITION","HdsDropdownPositionValues","BottomRight","POSITIONS","Object","values","HdsDropdown","Component","listPosition","args","assert","join","includes","enableCollisionDetection","matchToggleWidth","anchoredPositionOptions","placement","HdsDropdownPositionToPlacementValues","offsetOptions","boundary","classNames","classes","isInline","push","classNamesContent","width","didInsertList","element","checkmarkItems","querySelectorAll","length","toggleButtonId","closest","querySelector","getAttribute","setAttribute","setComponentTemplate","precompileTemplate","strictMode","scope","HdsPopoverPrimitive","hash","HdsDropdownToggleButton","HdsDropdownToggleIcon","style","or","HdsDropdownHeader","didInsert","HdsDropdownListItemCheckbox","HdsDropdownListItemCheckmark","HdsDropdownListItemCopyItem","HdsDropdownListItemDescription","HdsDropdownListItemGeneric","HdsDropdownListItemInteractive","HdsDropdownListItemRadio","HdsDropdownListItemSeparator","HdsDropdownListItemTitle","HdsDropdownFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/dropdown/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { hash } from '@ember/helper';\nimport { or } from 'ember-truth-helpers';\nimport style from 'ember-style-modifier';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport type { WithBoundArgs } from '@glint/template';\n\nimport {\n HdsDropdownPositionToPlacementValues,\n HdsDropdownPositionValues,\n} from './types.ts';\nimport HdsPopoverPrimitive from '../popover-primitive/index.gts';\nimport HdsDropdownToggleButton from './toggle/button.gts';\nimport HdsDropdownToggleIcon from './toggle/icon.gts';\nimport HdsDropdownHeader from './header.gts';\nimport HdsDropdownListItemCheckbox from './list-item/checkbox.gts';\nimport HdsDropdownListItemCheckmark from './list-item/checkmark.gts';\nimport HdsDropdownListItemCopyItem from './list-item/copy-item.gts';\nimport HdsDropdownListItemDescription from './list-item/description.gts';\nimport HdsDropdownListItemGeneric from './list-item/generic.gts';\nimport HdsDropdownListItemInteractive from './list-item/interactive.gts';\nimport HdsDropdownListItemRadio from './list-item/radio.gts';\nimport HdsDropdownListItemSeparator from './list-item/separator.gts';\nimport HdsDropdownListItemTitle from './list-item/title.gts';\nimport HdsDropdownFooter from './footer.gts';\n\nimport type { HdsPopoverPrimitiveSignature } from '../popover-primitive/index.gts';\nimport type { HdsDropdownPositions } from './types.ts';\nimport type { HdsAnchoredPositionOptions } from '../../../modifiers/hds-anchored-position.ts';\n\nexport const DEFAULT_POSITION = HdsDropdownPositionValues.BottomRight;\nexport const POSITIONS: HdsDropdownPositions[] = Object.values(\n HdsDropdownPositionValues\n);\n\nexport interface HdsDropdownSignature {\n Args: {\n height?: string;\n isInline?: boolean;\n isOpen?: HdsPopoverPrimitiveSignature['Args']['isOpen'];\n listPosition?: HdsDropdownPositions;\n width?: string;\n enableCollisionDetection?: HdsAnchoredPositionOptions['enableCollisionDetection'];\n preserveContentInDom?: boolean;\n matchToggleWidth?: boolean;\n onOpen?: HdsPopoverPrimitiveSignature['Args']['onOpen'];\n onClose?: HdsPopoverPrimitiveSignature['Args']['onClose'];\n onFocusOut?: HdsPopoverPrimitiveSignature['Args']['onFocusOut'];\n boundary?: HdsAnchoredPositionOptions['boundary'];\n };\n Blocks: {\n default: [\n {\n Footer?: typeof HdsDropdownFooter;\n Header?: typeof HdsDropdownHeader;\n Checkbox?: typeof HdsDropdownListItemCheckbox;\n Checkmark?: typeof HdsDropdownListItemCheckmark;\n CopyItem?: typeof HdsDropdownListItemCopyItem;\n Description?: typeof HdsDropdownListItemDescription;\n Generic?: typeof HdsDropdownListItemGeneric;\n Interactive?: typeof HdsDropdownListItemInteractive;\n Radio?: typeof HdsDropdownListItemRadio;\n Separator?: typeof HdsDropdownListItemSeparator;\n Title?: typeof HdsDropdownListItemTitle;\n ToggleButton?: WithBoundArgs<\n typeof HdsDropdownToggleButton,\n 'isOpen' | 'setupPrimitiveToggle'\n >;\n ToggleIcon?: WithBoundArgs<\n typeof HdsDropdownToggleIcon,\n 'isOpen' | 'setupPrimitiveToggle'\n >;\n close: (event?: Event) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsDropdown extends Component<HdsDropdownSignature> {\n get listPosition(): HdsDropdownPositions {\n const { listPosition = DEFAULT_POSITION } = this.args;\n\n assert(\n `@listPosition for \"Hds::Dropdown::Index\" must be one of the following: ${POSITIONS.join(\n ', '\n )}; received: ${listPosition}`,\n POSITIONS.includes(listPosition)\n );\n\n return listPosition;\n }\n\n get enableCollisionDetection(): HdsAnchoredPositionOptions['enableCollisionDetection'] {\n return this.args.enableCollisionDetection ?? false;\n }\n\n get matchToggleWidth(): HdsAnchoredPositionOptions['matchToggleWidth'] {\n return this.args.matchToggleWidth ?? false;\n }\n\n get anchoredPositionOptions(): {\n placement: HdsAnchoredPositionOptions['placement'];\n offsetOptions: HdsAnchoredPositionOptions['offsetOptions'];\n enableCollisionDetection: HdsAnchoredPositionOptions['enableCollisionDetection'];\n matchToggleWidth: HdsAnchoredPositionOptions['matchToggleWidth'];\n boundary: HdsAnchoredPositionOptions['boundary'];\n } {\n // custom options specific for the `RichTooltip` component\n // for details see the `hds-anchored-position` modifier\n return {\n placement: HdsDropdownPositionToPlacementValues[this.listPosition],\n offsetOptions: 4,\n enableCollisionDetection: this.enableCollisionDetection ? 'flip' : false,\n matchToggleWidth: this.matchToggleWidth,\n boundary: this.args.boundary,\n };\n }\n\n get classNames(): string {\n const classes = ['hds-dropdown'];\n\n // add a class based on the @isInline argument\n if (this.args.isInline) {\n classes.push('hds-dropdown--is-inline');\n }\n\n return classes.join(' ');\n }\n\n get classNamesContent(): string {\n const classes = ['hds-dropdown__content'];\n\n // add a class based on the @listPosition argument\n // TODO: we preserved these classes to avoid introducing breaking changes for consumers who rely on these classes for tests, but we aim to remove them in the next major release\n // context: https://github.com/hashicorp/design-system/pull/2309#discussion_r1706941892\n classes.push(`hds-dropdown__content--position-${this.listPosition}`);\n\n // add a class based on the @width or @matchToggleWidth arguments\n if (this.args.width || this.args.matchToggleWidth) {\n classes.push('hds-dropdown__content--fixed-width');\n }\n\n return classes.join(' ');\n }\n\n didInsertList = (element: HTMLUListElement): void => {\n const checkmarkItems = element.querySelectorAll(`[role=\"option\"]`);\n if (checkmarkItems.length) {\n const toggleButtonId = element\n .closest('.hds-dropdown')\n ?.querySelector('.hds-dropdown-toggle-button')\n ?.getAttribute('id');\n\n element.setAttribute('role', 'listbox');\n\n if (toggleButtonId) {\n element.setAttribute('aria-labelledby', toggleButtonId);\n }\n }\n };\n\n <template>\n <HdsPopoverPrimitive\n @isOpen={{@isOpen}}\n @onOpen={{@onOpen}}\n @onClose={{@onClose}}\n @onFocusOut={{@onFocusOut}}\n @boundary={{@boundary}}\n @enableClickEvents={{true}}\n as |PP|\n >\n <div\n class={{this.classNames}}\n ...attributes\n {{PP.setupPrimitiveContainer}}\n >\n {{yield\n (hash\n ToggleButton=(component\n HdsDropdownToggleButton\n isOpen=PP.isOpen\n setupPrimitiveToggle=PP.setupPrimitiveToggle\n )\n ToggleIcon=(component\n HdsDropdownToggleIcon\n isOpen=PP.isOpen\n setupPrimitiveToggle=PP.setupPrimitiveToggle\n )\n close=PP.hidePopover\n )\n }}\n <div\n tabindex=\"-1\"\n class={{this.classNamesContent}}\n {{style width=@width max-height=@height}}\n {{PP.setupPrimitivePopover\n anchoredPositionOptions=this.anchoredPositionOptions\n }}\n >\n {{#if (or PP.isOpen @preserveContentInDom)}}\n {{yield (hash Header=HdsDropdownHeader close=PP.hidePopover)}}\n <ul class=\"hds-dropdown__list\" {{didInsert this.didInsertList}}>\n {{yield\n (hash\n close=PP.hidePopover\n Checkbox=HdsDropdownListItemCheckbox\n Checkmark=HdsDropdownListItemCheckmark\n CopyItem=HdsDropdownListItemCopyItem\n Description=HdsDropdownListItemDescription\n Generic=HdsDropdownListItemGeneric\n Interactive=HdsDropdownListItemInteractive\n Radio=HdsDropdownListItemRadio\n Separator=HdsDropdownListItemSeparator\n Title=HdsDropdownListItemTitle\n )\n }}\n </ul>\n {{yield (hash close=PP.hidePopover Footer=HdsDropdownFooter)}}\n {{/if}}\n </div>\n </div>\n </HdsPopoverPrimitive>\n </template>\n}\n"],"names":["DEFAULT_POSITION","HdsDropdownPositionValues","BottomRight","POSITIONS","Object","values","HdsDropdown","Component","listPosition","args","assert","join","includes","enableCollisionDetection","matchToggleWidth","anchoredPositionOptions","placement","HdsDropdownPositionToPlacementValues","offsetOptions","boundary","classNames","classes","isInline","push","classNamesContent","width","didInsertList","element","checkmarkItems","querySelectorAll","length","toggleButtonId","closest","querySelector","getAttribute","setAttribute","setComponentTemplate","precompileTemplate","strictMode","scope","HdsPopoverPrimitive","hash","HdsDropdownToggleButton","HdsDropdownToggleIcon","style","or","HdsDropdownHeader","didInsert","HdsDropdownListItemCheckbox","HdsDropdownListItemCheckmark","HdsDropdownListItemCopyItem","HdsDropdownListItemDescription","HdsDropdownListItemGeneric","HdsDropdownListItemInteractive","HdsDropdownListItemRadio","HdsDropdownListItemSeparator","HdsDropdownListItemTitle","HdsDropdownFooter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;AAGC;AAmCM,MAAMA,gBAAA,GAAmBC,yBAAA,CAA0BC;AACnD,MAAMC,SAAW,GAAyBC,MAAA,CAAOC,MAAM,CAC5DJ,yBAAA;AA+Ca,MAAMK,oBAAoBC,SAAA,CAAU;EACjD,IAAIC,eAAqC;IACvC,MAAM;AAAEA,MAAAA,YAAA,GAAeR;KAAkB,GAAG,IAAI,CAACS,IAAI;AAErDC,IAAAA,MAAA,CACE,CAAA,uEAAA,EAA0EP,SAAA,CAAUQ,IAAI,CACtF,IAAA,CAAA,CAAA,YAAA,EACcH,YAAA,CAAA,CAAc,EAC9BL,SAAA,CAAUS,QAAQ,CAACJ,YAAA,CAAA,CAAA;AAGrB,IAAA,OAAOA,YAAA;AACT,EAAA;EAEA,IAAIK,wBAAAA,GAAmF;AACrF,IAAA,OAAO,IAAI,CAACJ,IAAI,CAACI,wBAAwB,IAAI,KAAA;AAC/C,EAAA;EAEA,IAAIC,gBAAAA,GAAmE;AACrE,IAAA,OAAO,IAAI,CAACL,IAAI,CAACK,gBAAgB,IAAI,KAAA;AACvC,EAAA;EAEA,IAAIC,uBAAAA,GAMF;AACA;AACA;IACA,OAAO;AACLC,MAAAA,SAAA,EAAWC,oCAAoC,CAAC,IAAI,CAACT,YAAY,CAAC;AAClEU,MAAAA,aAAA,EAAe,CAAA;AACfL,MAAAA,wBAAA,EAA0B,IAAI,CAACA,wBAAwB,GAAG,MAAA,GAAS,KAAA;MACnEC,gBAAA,EAAkB,IAAI,CAACA,gBAAgB;AACvCK,MAAAA,QAAA,EAAU,IAAI,CAACV,IAAI,CAACU;KACtB;AACF,EAAA;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,MAAMC,OAAA,GAAU,CAAC,cAAA,CAAe;AAEhC;AACA,IAAA,IAAI,IAAI,CAACZ,IAAI,CAACa,QAAQ,EAAE;AACtBD,MAAAA,OAAA,CAAQE,IAAI,CAAC,yBAAA,CAAA;AACf,IAAA;AAEA,IAAA,OAAOF,OAAA,CAAQV,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;EAEA,IAAIa,iBAAAA,GAA4B;AAC9B,IAAA,MAAMH,OAAA,GAAU,CAAC,uBAAA,CAAwB;AAEzC;AACA;AACA;IACAA,OAAA,CAAQE,IAAI,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAACf,YAAY,EAAE,CAAA;AAEnE;IACA,IAAI,IAAI,CAACC,IAAI,CAACgB,KAAK,IAAI,IAAI,CAAChB,IAAI,CAACK,gBAAgB,EAAE;AACjDO,MAAAA,OAAA,CAAQE,IAAI,CAAC,oCAAA,CAAA;AACf,IAAA;AAEA,IAAA,OAAOF,OAAA,CAAQV,IAAI,CAAC,GAAA,CAAA;AACtB,EAAA;EAEAe,aAAA,GAAiBC,OAAS,IAAuB;AAC/C,IAAA,MAAMC,iBAAiBD,OAAA,CAAQE,gBAAgB,CAAC,iBAAiB,CAAA;IACjE,IAAID,cAAA,CAAeE,MAAM,EAAE;AACzB,MAAA,MAAMC,iBAAiBJ,OAAA,CACpBK,OAAO,CAAC,eAAA,CAAA,EACPC,aAAA,CAAc,gCACdC,YAAA,CAAa,IAAA,CAAA;AAEjBP,MAAAA,OAAA,CAAQQ,YAAY,CAAC,MAAA,EAAQ,SAAA,CAAA;AAE7B,MAAA,IAAIJ,cAAA,EAAgB;AAClBJ,QAAAA,OAAA,CAAQQ,YAAY,CAAC,iBAAA,EAAmBJ,cAAA,CAAA;AAC1C,MAAA;AACF,IAAA;EACF,CAAA;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CAAA,s5CAAA,EA6DA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,mBAAA;QAAAC,IAAA;QAAAC,uBAAA;QAAAC,qBAAA;QAAAC,KAAA;QAAAC,EAAA;QAAAC,iBAAA;QAAAC,SAAA;QAAAC,2BAAA;QAAAC,4BAAA;QAAAC,2BAAA;QAAAC,8BAAA;QAAAC,0BAAA;QAAAC,8BAAA;QAAAC,wBAAA;QAAAC,4BAAA;QAAAC,wBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -3,7 +3,7 @@ import { action } from '@ember/object';
|
|
|
3
3
|
import { assert } from '@ember/debug';
|
|
4
4
|
import { tracked } from '@glimmer/tracking';
|
|
5
5
|
import { on } from '@ember/modifier';
|
|
6
|
-
import
|
|
6
|
+
import didUpdate from '@ember/render-modifiers/modifiers/did-update';
|
|
7
7
|
import HdsIcon from '../../icon/index.js';
|
|
8
8
|
import HdsDropdownToggleChevron from './chevron.js';
|
|
9
9
|
import { HdsDropdownToggleIconColorValues, HdsDropdownToggleIconSizeValues, HdsDropdownToggleIconAllowedIconValues } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","sources":["../../../../../src/components/hds/dropdown/toggle/icon.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport
|
|
1
|
+
{"version":3,"file":"icon.js","sources":["../../../../../src/components/hds/dropdown/toggle/icon.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { on } from '@ember/modifier';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didUpdate from '@ember/render-modifiers/modifiers/did-update';\n\nimport type { ModifierLike } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport HdsIcon from '../../icon/index.gts';\nimport HdsDropdownToggleChevron from './chevron.gts';\nimport {\n HdsDropdownToggleIconSizeValues,\n HdsDropdownToggleIconAllowedIconValues,\n HdsDropdownToggleIconColorValues,\n} from './types.ts';\n\nimport type { HdsIconSignature } from '../../icon/index.gts';\nimport type {\n HdsDropdownToggleIconSizes,\n HdsDropdownToggleIconColors,\n} from './types.ts';\nimport type { SetupPrimitiveToggleModifier } from '../../popover-primitive/index.gts';\n\nexport const DEFAULT_SIZE = HdsDropdownToggleIconSizeValues.Medium;\nexport const DEFAULT_COLOR = HdsDropdownToggleIconColorValues.Secondary;\nexport const SIZES: HdsDropdownToggleIconSizes[] = Object.values(\n HdsDropdownToggleIconSizeValues\n);\nexport const COLORS: HdsDropdownToggleIconColors[] = Object.values(\n HdsDropdownToggleIconColorValues\n);\n\nexport const ALLOWED_ICON_LIST: HdsIconSignature['Args']['name'][] =\n Object.values(HdsDropdownToggleIconAllowedIconValues);\n\nexport interface HdsDropdownToggleIconSignature {\n Args: {\n hasChevron?: boolean;\n icon?: HdsIconSignature['Args']['name'];\n imageSrc?: string;\n isOpen?: boolean;\n color?: HdsDropdownToggleIconColors;\n size?: HdsDropdownToggleIconSizes;\n text: string;\n setupPrimitiveToggle?: ModifierLike<SetupPrimitiveToggleModifier>;\n };\n Element: HTMLButtonElement;\n}\n\nexport default class HdsDropdownToggleIcon extends Component<HdsDropdownToggleIconSignature> {\n @tracked private _hasImage = true;\n\n constructor(owner: Owner, args: HdsDropdownToggleIconSignature['Args']) {\n super(owner, args);\n if (!(this.args.icon || this.args.imageSrc)) {\n assert(\n '@icon or @imageSrc must be defined for \"Hds::Dropdown::Toggle::Icon\"'\n );\n }\n }\n\n @action\n onDidUpdateImageSrc(): void {\n this._hasImage = true;\n }\n\n @action\n onImageLoadError(): void {\n this._hasImage = false;\n }\n\n get text(): string {\n const { text } = this.args;\n\n assert(\n '@text for \"Hds::Dropdown::Toggle::Icon\" must have a valid value',\n text !== undefined\n );\n\n return text;\n }\n\n get color(): HdsDropdownToggleIconColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Dropdown::Toggle::Icon\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n get size(): HdsDropdownToggleIconSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Dropdown::Toggle::Icon\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n get iconSize(): HdsIconSignature['Args']['size'] {\n if (this.args.size === 'medium' && !this.hasChevron) {\n // in this special case we use a larger SVG\n return '24';\n } else {\n // this is the default size (notice: for the \"small\" variant with chevron, we set the actual size to `12px` via CSS)\n return '16';\n }\n }\n\n get hasChevron(): boolean {\n if (\n this.args.icon &&\n !ALLOWED_ICON_LIST.includes(this.args.icon) &&\n this.args.hasChevron === false\n ) {\n assert(\n `@hasChevron for \"Hds::Dropdown::Toggle::Icon\" must be true unless the icon is one of the following: ${ALLOWED_ICON_LIST.join(\n ', '\n )}; received: ${this.args.icon}`\n );\n }\n\n return this.args.hasChevron ?? true;\n }\n\n get classNames(): string {\n const classes = ['hds-dropdown-toggle-icon'];\n\n // add a class based on the @size argument\n classes.push(`hds-dropdown-toggle-icon--size-${this.size}`);\n\n // add a class based on the @color argument\n classes.push(`hds-dropdown-toggle-icon--color-${this.color}`);\n\n // add a class based on the @isOpen argument\n if (this.args.isOpen) {\n classes.push('hds-dropdown-toggle-icon--is-open');\n }\n\n // add a class based on the @hasChevron argument\n if (this.hasChevron) {\n classes.push('hds-dropdown-toggle-icon--has-chevron');\n }\n\n return classes.join(' ');\n }\n\n <template>\n <button\n class={{this.classNames}}\n aria-label={{this.text}}\n ...attributes\n aria-expanded={{if @isOpen \"true\" \"false\"}}\n {{@setupPrimitiveToggle}}\n {{didUpdate this.onDidUpdateImageSrc @imageSrc}}\n type=\"button\"\n >\n <div class=\"hds-dropdown-toggle-icon__wrapper\">\n {{#if @imageSrc}}\n {{#if this._hasImage}}\n <img\n src={{@imageSrc}}\n alt=\"\"\n role=\"presentation\"\n {{on \"error\" this.onImageLoadError}}\n />\n {{else}}\n <HdsIcon @name=\"user\" @size={{this.iconSize}} />\n {{/if}}\n {{else if @icon}}\n <HdsIcon @name={{@icon}} @size={{this.iconSize}} />\n {{/if}}\n </div>\n {{#if this.hasChevron}}\n <HdsDropdownToggleChevron />\n {{/if}}\n </button>\n </template>\n}\n"],"names":["DEFAULT_SIZE","HdsDropdownToggleIconSizeValues","Medium","DEFAULT_COLOR","HdsDropdownToggleIconColorValues","Secondary","SIZES","Object","values","COLORS","ALLOWED_ICON_LIST","HdsDropdownToggleIconAllowedIconValues","HdsDropdownToggleIcon","Component","g","prototype","tracked","i","constructor","owner","args","icon","imageSrc","assert","onDidUpdateImageSrc","_hasImage","n","action","onImageLoadError","text","undefined","color","join","includes","size","iconSize","hasChevron","classNames","classes","push","isOpen","setComponentTemplate","precompileTemplate","strictMode","scope","didUpdate","on","HdsIcon","HdsDropdownToggleChevron"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { hash } from '@ember/helper';
|
|
3
3
|
import { service } from '@ember/service';
|
|
4
|
-
import
|
|
4
|
+
import didInsert from '@ember/render-modifiers/modifiers/did-insert';
|
|
5
5
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
6
6
|
import { setComponentTemplate } from '@ember/component';
|
|
7
7
|
import { g, i } from 'decorator-transforms/runtime';
|