@hashicorp/design-system-components 7.0.0 → 7.1.0-rc-20261028211913
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/component-catalog.json +12 -1
- package/declarations/components/hds/advanced-table/th-button-sort.d.ts +2 -0
- package/declarations/components/hds/breadcrumb/index.d.ts +2 -0
- package/declarations/components/hds/breadcrumb/truncation.d.ts +2 -0
- package/declarations/components/hds/code-block/copy-button.d.ts +2 -0
- package/declarations/components/hds/code-block/index.d.ts +2 -1
- package/declarations/components/hds/code-editor/index.d.ts +2 -0
- package/declarations/components/hds/dropdown/index.d.ts +1 -0
- package/declarations/components/hds/filter-bar/actions-dropdown.d.ts +1 -1
- package/declarations/components/hds/filter-bar/applied-filters.d.ts +1 -1
- package/declarations/components/hds/filter-bar/filter-group/date.d.ts +6 -1
- package/declarations/components/hds/filter-bar/filter-group/numerical.d.ts +1 -1
- package/declarations/components/hds/filter-bar/index.d.ts +2 -7
- package/declarations/components/hds/form/character-count/index.d.ts +3 -1
- package/declarations/components/hds/form/super-select/multiple/base.d.ts +7 -0
- package/declarations/components/hds/form/super-select/single/base.d.ts +7 -0
- package/declarations/components/hds/pagination/size-selector/index.d.ts +2 -0
- package/declarations/components/hds/popover-primitive/index.d.ts +2 -0
- package/declarations/components/hds/tag/index.d.ts +2 -0
- package/declarations/instance-initializers/load-sprite-empty.d.ts +1 -0
- package/declarations/modifiers/hds-code-editor/linters/json-linter.d.ts +3 -2
- 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-button-expand.js +1 -1
- package/dist/components/hds/advanced-table/th-button-expand.js.map +1 -1
- package/dist/components/hds/advanced-table/th-button-sort.js +16 -2
- package/dist/components/hds/advanced-table/th-button-sort.js.map +1 -1
- package/dist/components/hds/advanced-table/th-context-menu.js +7 -7
- package/dist/components/hds/advanced-table/th-context-menu.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/application-state/header.js +1 -1
- package/dist/components/hds/application-state/header.js.map +1 -1
- package/dist/components/hds/breadcrumb/index.js +10 -2
- package/dist/components/hds/breadcrumb/index.js.map +1 -1
- package/dist/components/hds/breadcrumb/truncation.js +9 -1
- package/dist/components/hds/breadcrumb/truncation.js.map +1 -1
- package/dist/components/hds/code-block/copy-button.js +9 -1
- package/dist/components/hds/code-block/copy-button.js.map +1 -1
- package/dist/components/hds/code-block/index.js +16 -8
- package/dist/components/hds/code-block/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/index.js +8 -1
- package/dist/components/hds/code-editor/index.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 +2 -2
- 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/filter-bar/actions-dropdown.js.map +1 -1
- package/dist/components/hds/filter-bar/applied-filters.js +30 -15
- package/dist/components/hds/filter-bar/applied-filters.js.map +1 -1
- package/dist/components/hds/filter-bar/filter-group/date.js +46 -5
- package/dist/components/hds/filter-bar/filter-group/date.js.map +1 -1
- package/dist/components/hds/filter-bar/filter-group/index.js +1 -1
- package/dist/components/hds/filter-bar/filter-group/index.js.map +1 -1
- package/dist/components/hds/filter-bar/filter-group/numerical.js +1 -1
- package/dist/components/hds/filter-bar/filter-group/numerical.js.map +1 -1
- package/dist/components/hds/filter-bar/index.js +4 -86
- package/dist/components/hds/filter-bar/index.js.map +1 -1
- package/dist/components/hds/form/character-count/index.js +55 -12
- package/dist/components/hds/form/character-count/index.js.map +1 -1
- package/dist/components/hds/form/error/index.js +1 -2
- package/dist/components/hds/form/error/index.js.map +1 -1
- package/dist/components/hds/form/field/index.js +24 -3
- package/dist/components/hds/form/field/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/form/indicator/index.js +1 -1
- package/dist/components/hds/form/indicator/index.js.map +1 -1
- package/dist/components/hds/form/key-value-inputs/delete-row-button.js +3 -2
- package/dist/components/hds/form/key-value-inputs/delete-row-button.js.map +1 -1
- package/dist/components/hds/form/key-value-inputs/field.js +3 -2
- package/dist/components/hds/form/key-value-inputs/field.js.map +1 -1
- package/dist/components/hds/form/super-select/multiple/base.js +42 -5
- package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
- package/dist/components/hds/form/super-select/single/base.js +38 -4
- package/dist/components/hds/form/super-select/single/base.js.map +1 -1
- package/dist/components/hds/pagination/info/index.js +2 -2
- package/dist/components/hds/pagination/info/index.js.map +1 -1
- package/dist/components/hds/pagination/size-selector/index.js +9 -4
- package/dist/components/hds/pagination/size-selector/index.js.map +1 -1
- package/dist/components/hds/popover-primitive/index.js +12 -1
- package/dist/components/hds/popover-primitive/index.js.map +1 -1
- package/dist/components/hds/table/index.js +8 -15
- package/dist/components/hds/table/index.js.map +1 -1
- package/dist/components/hds/table/th-selectable.js +6 -8
- package/dist/components/hds/table/th-selectable.js.map +1 -1
- package/dist/components/hds/tabs/index.js +1 -2
- package/dist/components/hds/tabs/index.js.map +1 -1
- package/dist/components/hds/tabs/panel.js +1 -2
- package/dist/components/hds/tabs/panel.js.map +1 -1
- package/dist/components/hds/tabs/tab.js +1 -3
- package/dist/components/hds/tabs/tab.js.map +1 -1
- package/dist/components/hds/tag/index.js +16 -2
- package/dist/components/hds/tag/index.js.map +1 -1
- package/dist/components/hds/time/single.js +1 -2
- package/dist/components/hds/time/single.js.map +1 -1
- package/dist/components.js +1 -1
- package/dist/{index-DotqHut7.js → index-DyWbi31M.js} +20 -17
- package/dist/index-DyWbi31M.js.map +1 -0
- package/dist/instance-initializers/load-sprite-empty.js +19 -13
- package/dist/instance-initializers/load-sprite-empty.js.map +1 -1
- package/dist/modifiers/hds-code-editor/linters/json-linter.js +21 -4
- package/dist/modifiers/hds-code-editor/linters/json-linter.js.map +1 -1
- package/dist/modifiers/hds-code-editor.js +83 -56
- package/dist/modifiers/hds-code-editor.js.map +1 -1
- package/dist/public/assets/fonts/LICENSE.txt +0 -0
- package/dist/services/hds-icon-registry.js +15 -4
- package/dist/services/hds-icon-registry.js.map +1 -1
- package/dist/styles/@hashicorp/design-system-components-common.css +119 -65
- package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +119 -65
- package/dist/styles/@hashicorp/design-system-components.css.map +1 -1
- package/dist/styles/components/card/container.scss +9 -3
- package/dist/styles/components/form/super-select.scss +22 -5
- package/package.json +3 -4
- package/translations/hds/components/advanced-table/en-us.yaml +5 -0
- package/translations/hds/components/advanced-table/th-selectable/en-us.yaml +1 -0
- package/translations/hds/components/app-footer/legal-links/en-us.yaml +1 -0
- package/translations/hds/components/breadcrumb/en-us.yaml +1 -0
- package/translations/hds/components/breadcrumb/truncation/en-us.yaml +1 -0
- package/translations/hds/components/code-block/en-us.yaml +3 -0
- package/translations/hds/components/code-editor/en-us.yaml +1 -0
- package/translations/hds/components/common/en-us.yaml +2 -2
- package/translations/hds/components/filter-bar/en-us.yaml +13 -2
- package/translations/hds/components/filter-bar/filter-group/date/en-us.yaml +21 -5
- package/translations/hds/components/filter-bar/filters-dropdown/en-us.yaml +0 -4
- package/translations/hds/components/form/character-count/en-us.yaml +6 -0
- package/translations/hds/components/form/common/en-us.yaml +2 -0
- package/translations/hds/components/form/super-select/multiple/en-us.yaml +6 -0
- package/translations/hds/components/form/super-select/single/en-us.yaml +5 -0
- package/translations/hds/components/pagination/info/en-us.yaml +2 -2
- package/translations/hds/components/pagination/size-selector/en-us.yaml +1 -0
- package/translations/hds/components/table/en-us.yaml +5 -1
- package/translations/hds/components/table/th-selectable/en-us.yaml +1 -0
- package/translations/hds/components/tag/en-us.yaml +2 -0
- package/translations/hds/modifiers/hds-code-editor/en-us.yaml +15 -0
- package/dist/index-DotqHut7.js.map +0 -1
- package/translations/hds/components/form/common/en-us.yml +0 -2
- /package/translations/hds/components/form/key-value-inputs/{en-us.yml → en-us.yaml} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"th-context-menu.js","sources":["../../../../src/components/hds/advanced-table/th-context-menu.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 { scheduleOnce } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\nimport { concat, fn } from '@ember/helper';\nimport { gt, eq } from 'ember-truth-helpers';\nimport { on } from '@ember/modifier';\n\nimport HdsDropdown from '../dropdown/index.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\nimport { requestAnimationFrameWaiter } from './utils.ts';\n\nimport type { HdsDropdownSignature } from '../dropdown/index.gts';\nimport type { HdsDropdownToggleIconSignature } from '../dropdown/toggle/icon.gts';\nimport type { HdsAdvancedTableSignature } from './index.gts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.gts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.gts';\nimport type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.gts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\nimport type {\n HdsAdvancedTableNormalizedColumn,\n HdsAdvancedTablePixelString,\n} from './types.ts';\n\ninterface HdsAdvancedTableThContextMenuOption {\n key: string;\n icon?: HdsDropdownToggleIconSignature['Args']['icon'];\n label?: string;\n action?: (dropdownCloseCallback: () => void) => void;\n}\n\nexport interface HdsAdvancedTableThContextMenuSignature {\n Args: {\n column: HdsAdvancedTableNormalizedColumn;\n isFirstColumn: boolean;\n isFirstNonStickyColumn: boolean;\n isLastColumn: boolean;\n hasResizableColumns?: boolean;\n hasReorderableColumns?: boolean;\n isStickyColumn?: boolean;\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onFocusReorderHandle?: () => void;\n onGetRenderedWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => HdsAdvancedTablePixelString | undefined;\n onMoveColumnToTerminalPosition?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n position: 'start' | 'end'\n ) => void;\n onPinFirstColumn?: () => void;\n onRestoreColumnWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => void;\n };\n Element: HdsDropdownSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThContextMenu extends Component<HdsAdvancedTableThContextMenuSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked private _toggleElement:\n | HdsDropdownToggleButtonSignature['Element']\n | null = null;\n\n get _resizeOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isLastColumn } = this.args;\n\n const translatedResetWidthLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.reset-width',\n { default: 'Reset column width' }\n );\n\n let resizeOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reset-column-width',\n label: translatedResetWidthLabel,\n icon: 'rotate-ccw',\n action: this._resetColumnWidth.bind(this),\n },\n ];\n\n if (!isLastColumn) {\n const translatedResizeLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.resize',\n { default: 'Resize column' }\n );\n\n resizeOptions = [\n {\n key: 'resize-column',\n label: translatedResizeLabel,\n icon: 'resize-column',\n action: this._resizeColumn.bind(this),\n },\n ...resizeOptions,\n ];\n }\n\n return resizeOptions;\n }\n\n get _reorderOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isFirstNonStickyColumn, isLastColumn } = this.args;\n\n const translatedMoveColumnLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column',\n { default: 'Move column' }\n );\n\n let reorderOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reorder-column',\n label: translatedMoveColumnLabel,\n icon: 'move-horizontal',\n action: () => this._moveColumn(),\n },\n ];\n\n if (!isFirstNonStickyColumn) {\n const translatedMoveColumnToStartLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-start',\n { default: 'Move column to start' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-start',\n label: translatedMoveColumnToStartLabel,\n icon: 'start',\n action: (close) => this._moveColumnToPosition('start', close),\n },\n ];\n }\n\n if (!isLastColumn) {\n const translatedMoveColumnToEndLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.move-column-to-end',\n { default: 'Move column to end' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-end',\n label: translatedMoveColumnToEndLabel,\n icon: 'end',\n action: (close) => this._moveColumnToPosition('end', close),\n },\n ];\n }\n\n return reorderOptions;\n }\n\n get _stickyColumnOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isStickyColumn } = this.args;\n\n const translatedPinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.pin',\n { default: 'Pin column' }\n );\n const translatedUnpinLabel = this.hdsIntl.t(\n 'hds.advanced-table.th-context-menu.unpin',\n { default: 'Unpin column' }\n );\n\n return [\n {\n key: 'pin-first-column',\n label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,\n icon: isStickyColumn ? 'pin-off' : 'pin',\n action: this._pinFirstColumn.bind(this),\n },\n ];\n }\n\n get _options(): HdsAdvancedTableThContextMenuOption[] {\n const {\n hasReorderableColumns,\n hasResizableColumns,\n isFirstColumn,\n isStickyColumn,\n } = this.args;\n\n let allGroups: HdsAdvancedTableThContextMenuOption[][] = [];\n\n if (hasResizableColumns) {\n allGroups = [...allGroups, this._resizeOptions];\n }\n\n if (hasReorderableColumns && isStickyColumn !== true) {\n allGroups = [...allGroups, this._reorderOptions];\n }\n\n if (isFirstColumn && isStickyColumn !== undefined) {\n allGroups = [...allGroups, this._stickyColumnOptions];\n }\n\n return allGroups.reduce<HdsAdvancedTableThContextMenuOption[]>(\n (options, group, index) => {\n // Add a separator before each group except the first\n if (index > 0) {\n return [...options, { key: 'separator' }, ...group];\n }\n return [...options, ...group];\n },\n []\n );\n }\n\n private _registerDropdownToggleElement = modifier(\n (element: HdsDropdownToggleButtonSignature['Element']) => {\n this._toggleElement = element;\n }\n );\n\n private _resizeColumn() {\n this.args.resizeHandleElement?.focus();\n }\n\n private _resetColumnWidth(dropdownCloseCallback: () => void): void {\n const { column, onColumnResize, onGetRenderedWidth, onRestoreColumnWidth } =\n this.args;\n\n if (\n typeof onRestoreColumnWidth !== 'function' ||\n column.key === undefined\n ) {\n return;\n }\n\n onRestoreColumnWidth(column.key);\n\n if (typeof onColumnResize === 'function') {\n // restoring re-flows every flexible column, so the resulting width is only\n // knowable after the grid has re-laid-out\n requestAnimationFrameWaiter(() => {\n onColumnResize(column.key, onGetRenderedWidth?.(column.key));\n });\n }\n\n dropdownCloseCallback();\n }\n\n private _moveColumn() {\n const { onFocusReorderHandle } = this.args;\n\n if (typeof onFocusReorderHandle === 'function') {\n // eslint-disable-next-line ember/no-runloop\n scheduleOnce('afterRender', this, onFocusReorderHandle);\n }\n }\n\n private _moveColumnToPosition(\n position: 'start' | 'end',\n dropdownCloseCallback?: () => void\n ): void {\n const { column, onMoveColumnToTerminalPosition } = this.args;\n\n onMoveColumnToTerminalPosition?.(column.key, position);\n\n requestAnimationFrameWaiter(() => {\n dropdownCloseCallback?.();\n\n this._toggleElement?.focus();\n });\n }\n\n private _pinFirstColumn(dropdownCloseCallback: () => void): void {\n const { onPinFirstColumn } = this.args;\n\n if (typeof onPinFirstColumn === 'function') {\n onPinFirstColumn();\n }\n\n dropdownCloseCallback();\n }\n\n <template>\n {{#if (gt this._options.length 0)}}\n <HdsDropdown\n class=\"hds-advanced-table__th-context-menu\"\n @enableCollisionDetection={{true}}\n ...attributes\n as |D|\n >\n <D.ToggleIcon\n @icon=\"more-vertical\"\n @text={{hdsT\n \"hds.components.advanced-table.th-context-menu.actions\"\n columnLabel=@column.label\n default=(concat \"Additional actions for \" @column.label)\n }}\n @hasChevron={{false}}\n @size=\"small\"\n @color=\"secondary-muted\"\n {{this._registerDropdownToggleElement}}\n />\n\n {{#each this._options as |option|}}\n {{#if (eq option.key \"separator\")}}\n <D.Separator />\n {{else if option.action}}\n <D.Interactive\n @icon={{option.icon}}\n data-test-context-option-key={{option.key}}\n {{on \"click\" (fn option.action D.close)}}\n >\n {{option.label}}\n </D.Interactive>\n {{/if}}\n {{/each}}\n </HdsDropdown>\n {{/if}}\n </template>\n}\n"],"names":["HdsAdvancedTableThContextMenu","Component","g","prototype","service","i","tracked","_resizeOptions","isLastColumn","args","translatedResetWidthLabel","hdsIntl","t","default","resizeOptions","key","label","icon","action","_resetColumnWidth","bind","translatedResizeLabel","_resizeColumn","_reorderOptions","isFirstNonStickyColumn","translatedMoveColumnLabel","reorderOptions","_moveColumn","translatedMoveColumnToStartLabel","close","_moveColumnToPosition","translatedMoveColumnToEndLabel","_stickyColumnOptions","isStickyColumn","translatedPinLabel","translatedUnpinLabel","_pinFirstColumn","_options","hasReorderableColumns","hasResizableColumns","isFirstColumn","allGroups","undefined","reduce","options","group","index","_registerDropdownToggleElement","modifier","element","_toggleElement","resizeHandleElement","focus","dropdownCloseCallback","column","onColumnResize","onGetRenderedWidth","onRestoreColumnWidth","requestAnimationFrameWaiter","onFocusReorderHandle","scheduleOnce","position","onMoveColumnToTerminalPosition","onPinFirstColumn","setComponentTemplate","precompileTemplate","strictMode","scope","gt","HdsDropdown","hdsT","concat","eq","on","fn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"th-context-menu.js","sources":["../../../../src/components/hds/advanced-table/th-context-menu.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 { scheduleOnce } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\nimport { concat, fn } from '@ember/helper';\nimport { gt, eq } from 'ember-truth-helpers';\nimport { on } from '@ember/modifier';\n\nimport HdsDropdown from '../dropdown/index.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\nimport { requestAnimationFrameWaiter } from './utils.ts';\n\nimport type { HdsDropdownSignature } from '../dropdown/index.gts';\nimport type { HdsDropdownToggleIconSignature } from '../dropdown/toggle/icon.gts';\nimport type { HdsAdvancedTableSignature } from './index.gts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.gts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.gts';\nimport type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.gts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\nimport type {\n HdsAdvancedTableNormalizedColumn,\n HdsAdvancedTablePixelString,\n} from './types.ts';\n\ninterface HdsAdvancedTableThContextMenuOption {\n key: string;\n icon?: HdsDropdownToggleIconSignature['Args']['icon'];\n label?: string;\n action?: (dropdownCloseCallback: () => void) => void;\n}\n\nexport interface HdsAdvancedTableThContextMenuSignature {\n Args: {\n column: HdsAdvancedTableNormalizedColumn;\n isFirstColumn: boolean;\n isFirstNonStickyColumn: boolean;\n isLastColumn: boolean;\n hasResizableColumns?: boolean;\n hasReorderableColumns?: boolean;\n isStickyColumn?: boolean;\n reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onFocusReorderHandle?: () => void;\n onGetRenderedWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => HdsAdvancedTablePixelString | undefined;\n onMoveColumnToTerminalPosition?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key'],\n position: 'start' | 'end'\n ) => void;\n onPinFirstColumn?: () => void;\n onRestoreColumnWidth?: (\n columnKey: HdsAdvancedTableNormalizedColumn['key']\n ) => void;\n };\n Element: HdsDropdownSignature['Element'];\n}\n\nexport default class HdsAdvancedTableThContextMenu extends Component<HdsAdvancedTableThContextMenuSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked private _toggleElement:\n | HdsDropdownToggleButtonSignature['Element']\n | null = null;\n\n get _resizeOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isLastColumn } = this.args;\n\n const translatedResetWidthLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.reset-width',\n { default: 'Reset column width' }\n );\n\n let resizeOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reset-column-width',\n label: translatedResetWidthLabel,\n icon: 'rotate-ccw',\n action: this._resetColumnWidth.bind(this),\n },\n ];\n\n if (!isLastColumn) {\n const translatedResizeLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.resize',\n { default: 'Resize column' }\n );\n\n resizeOptions = [\n {\n key: 'resize-column',\n label: translatedResizeLabel,\n icon: 'resize-column',\n action: this._resizeColumn.bind(this),\n },\n ...resizeOptions,\n ];\n }\n\n return resizeOptions;\n }\n\n get _reorderOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isFirstNonStickyColumn, isLastColumn } = this.args;\n\n const translatedMoveColumnLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.move-column',\n { default: 'Move column' }\n );\n\n let reorderOptions: HdsAdvancedTableThContextMenuOption[] = [\n {\n key: 'reorder-column',\n label: translatedMoveColumnLabel,\n icon: 'move-horizontal',\n action: () => this._moveColumn(),\n },\n ];\n\n if (!isFirstNonStickyColumn) {\n const translatedMoveColumnToStartLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.move-column-to-start',\n { default: 'Move column to start' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-start',\n label: translatedMoveColumnToStartLabel,\n icon: 'start',\n action: (close) => this._moveColumnToPosition('start', close),\n },\n ];\n }\n\n if (!isLastColumn) {\n const translatedMoveColumnToEndLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.move-column-to-end',\n { default: 'Move column to end' }\n );\n reorderOptions = [\n ...reorderOptions,\n {\n key: 'move-column-to-end',\n label: translatedMoveColumnToEndLabel,\n icon: 'end',\n action: (close) => this._moveColumnToPosition('end', close),\n },\n ];\n }\n\n return reorderOptions;\n }\n\n get _stickyColumnOptions(): HdsAdvancedTableThContextMenuOption[] {\n const { isStickyColumn } = this.args;\n\n const translatedPinLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.pin',\n { default: 'Pin column' }\n );\n const translatedUnpinLabel = this.hdsIntl.t(\n 'hds.components.advanced-table.th-context-menu.unpin',\n { default: 'Unpin column' }\n );\n\n return [\n {\n key: 'pin-first-column',\n label: isStickyColumn ? translatedUnpinLabel : translatedPinLabel,\n icon: isStickyColumn ? 'pin-off' : 'pin',\n action: this._pinFirstColumn.bind(this),\n },\n ];\n }\n\n get _options(): HdsAdvancedTableThContextMenuOption[] {\n const {\n hasReorderableColumns,\n hasResizableColumns,\n isFirstColumn,\n isStickyColumn,\n } = this.args;\n\n let allGroups: HdsAdvancedTableThContextMenuOption[][] = [];\n\n if (hasResizableColumns) {\n allGroups = [...allGroups, this._resizeOptions];\n }\n\n if (hasReorderableColumns && isStickyColumn !== true) {\n allGroups = [...allGroups, this._reorderOptions];\n }\n\n if (isFirstColumn && isStickyColumn !== undefined) {\n allGroups = [...allGroups, this._stickyColumnOptions];\n }\n\n return allGroups.reduce<HdsAdvancedTableThContextMenuOption[]>(\n (options, group, index) => {\n // Add a separator before each group except the first\n if (index > 0) {\n return [...options, { key: 'separator' }, ...group];\n }\n return [...options, ...group];\n },\n []\n );\n }\n\n private _registerDropdownToggleElement = modifier(\n (element: HdsDropdownToggleButtonSignature['Element']) => {\n this._toggleElement = element;\n }\n );\n\n private _resizeColumn() {\n this.args.resizeHandleElement?.focus();\n }\n\n private _resetColumnWidth(dropdownCloseCallback: () => void): void {\n const { column, onColumnResize, onGetRenderedWidth, onRestoreColumnWidth } =\n this.args;\n\n if (\n typeof onRestoreColumnWidth !== 'function' ||\n column.key === undefined\n ) {\n return;\n }\n\n onRestoreColumnWidth(column.key);\n\n if (typeof onColumnResize === 'function') {\n // restoring re-flows every flexible column, so the resulting width is only\n // knowable after the grid has re-laid-out\n requestAnimationFrameWaiter(() => {\n onColumnResize(column.key, onGetRenderedWidth?.(column.key));\n });\n }\n\n dropdownCloseCallback();\n }\n\n private _moveColumn() {\n const { onFocusReorderHandle } = this.args;\n\n if (typeof onFocusReorderHandle === 'function') {\n // eslint-disable-next-line ember/no-runloop\n scheduleOnce('afterRender', this, onFocusReorderHandle);\n }\n }\n\n private _moveColumnToPosition(\n position: 'start' | 'end',\n dropdownCloseCallback?: () => void\n ): void {\n const { column, onMoveColumnToTerminalPosition } = this.args;\n\n onMoveColumnToTerminalPosition?.(column.key, position);\n\n requestAnimationFrameWaiter(() => {\n dropdownCloseCallback?.();\n\n this._toggleElement?.focus();\n });\n }\n\n private _pinFirstColumn(dropdownCloseCallback: () => void): void {\n const { onPinFirstColumn } = this.args;\n\n if (typeof onPinFirstColumn === 'function') {\n onPinFirstColumn();\n }\n\n dropdownCloseCallback();\n }\n\n <template>\n {{#if (gt this._options.length 0)}}\n <HdsDropdown\n class=\"hds-advanced-table__th-context-menu\"\n @enableCollisionDetection={{true}}\n ...attributes\n as |D|\n >\n <D.ToggleIcon\n @icon=\"more-vertical\"\n @text={{hdsT\n \"hds.components.advanced-table.th-context-menu.actions\"\n columnLabel=@column.label\n default=(concat \"Additional actions for \" @column.label)\n }}\n @hasChevron={{false}}\n @size=\"small\"\n @color=\"secondary-muted\"\n {{this._registerDropdownToggleElement}}\n />\n\n {{#each this._options as |option|}}\n {{#if (eq option.key \"separator\")}}\n <D.Separator />\n {{else if option.action}}\n <D.Interactive\n @icon={{option.icon}}\n data-test-context-option-key={{option.key}}\n {{on \"click\" (fn option.action D.close)}}\n >\n {{option.label}}\n </D.Interactive>\n {{/if}}\n {{/each}}\n </HdsDropdown>\n {{/if}}\n </template>\n}\n"],"names":["HdsAdvancedTableThContextMenu","Component","g","prototype","service","i","tracked","_resizeOptions","isLastColumn","args","translatedResetWidthLabel","hdsIntl","t","default","resizeOptions","key","label","icon","action","_resetColumnWidth","bind","translatedResizeLabel","_resizeColumn","_reorderOptions","isFirstNonStickyColumn","translatedMoveColumnLabel","reorderOptions","_moveColumn","translatedMoveColumnToStartLabel","close","_moveColumnToPosition","translatedMoveColumnToEndLabel","_stickyColumnOptions","isStickyColumn","translatedPinLabel","translatedUnpinLabel","_pinFirstColumn","_options","hasReorderableColumns","hasResizableColumns","isFirstColumn","allGroups","undefined","reduce","options","group","index","_registerDropdownToggleElement","modifier","element","_toggleElement","resizeHandleElement","focus","dropdownCloseCallback","column","onColumnResize","onGetRenderedWidth","onRestoreColumnWidth","requestAnimationFrameWaiter","onFocusReorderHandle","scheduleOnce","position","onMoveColumnToTerminalPosition","onPinFirstColumn","setComponentTemplate","precompileTemplate","strictMode","scope","gt","HdsDropdown","hdsT","concat","eq","on","fn"],"mappings":"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"}
|
|
@@ -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-DyWbi31M.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-DyWbi31M.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-DyWbi31M.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-DyWbi31M.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-DyWbi31M.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 didInsert from '@ember/render-modifiers
|
|
9
|
+
import { didInsert } from '@ember/render-modifiers';
|
|
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/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
|
+
{"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,6 +1,6 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { guidFor } from '@ember/object/internals';
|
|
3
|
-
import didInsert from '@ember/render-modifiers
|
|
3
|
+
import { didInsert } from '@ember/render-modifiers';
|
|
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 didInsert from '@ember/render-modifiers
|
|
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';\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 didUpdate from '@ember/render-modifiers
|
|
6
|
+
import { didUpdate } from '@ember/render-modifiers';
|
|
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/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
|
+
{"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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"}
|
|
@@ -16,7 +16,7 @@ class HdsApplicationStateHeader extends Component {
|
|
|
16
16
|
return this.args.titleTag ?? HdsApplicationStateTitleTagValues.Div;
|
|
17
17
|
}
|
|
18
18
|
static {
|
|
19
|
-
setComponentTemplate(precompileTemplate("<div class=\"hds-application-state__header\" ...attributes>\n {{#if @errorCode}}\n <HdsTextBody class=\"hds-application-state__error-code\" @tag=\"div\" @size=\"100\" @weight=\"medium\" @color=\"faint\">\n {{hdsT \"hds.application-state.header.error\" default=\"ERROR\"}}\n {{@errorCode}}\n </HdsTextBody>\n {{/if}}\n {{#if @icon}}\n <div class=\"hds-application-state__icon\">\n <HdsIcon @color=\"var(--hds-foreground-color-strong)\" @name={{@icon}} @size=\"24\" @isInline={{true}} />\n </div>\n {{/if}}\n <HdsTextDisplay class=\"hds-application-state__title\" @tag={{this.titleTag}} @size=\"300\" @weight=\"semibold\" @color=\"strong\">\n {{@title}}\n </HdsTextDisplay>\n</div>", {
|
|
19
|
+
setComponentTemplate(precompileTemplate("<div class=\"hds-application-state__header\" ...attributes>\n {{#if @errorCode}}\n <HdsTextBody class=\"hds-application-state__error-code\" @tag=\"div\" @size=\"100\" @weight=\"medium\" @color=\"faint\">\n {{hdsT \"hds.components.application-state.header.error\" default=\"ERROR\"}}\n {{@errorCode}}\n </HdsTextBody>\n {{/if}}\n {{#if @icon}}\n <div class=\"hds-application-state__icon\">\n <HdsIcon @color=\"var(--hds-foreground-color-strong)\" @name={{@icon}} @size=\"24\" @isInline={{true}} />\n </div>\n {{/if}}\n <HdsTextDisplay class=\"hds-application-state__title\" @tag={{this.titleTag}} @size=\"300\" @weight=\"semibold\" @color=\"strong\">\n {{@title}}\n </HdsTextDisplay>\n</div>", {
|
|
20
20
|
strictMode: true,
|
|
21
21
|
scope: () => ({
|
|
22
22
|
HdsTextBody,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sources":["../../../../src/components/hds/application-state/header.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n\nimport { HdsApplicationStateTitleTagValues } from './types.ts';\nimport HdsTextBody from '../text/body.gts';\nimport HdsTextDisplay from '../text/display.gts';\nimport HdsIcon from '../icon/index.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\n\nimport type { HdsIconSignature } from '../icon/index.gts';\nimport type { HdsApplicationStateTitleTags } from './types.ts';\n\nexport interface HdsApplicationStateHeaderSignature {\n Args: {\n title?: string;\n titleTag?: HdsApplicationStateTitleTags;\n errorCode?: string;\n icon?: HdsIconSignature['Args']['name'];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsApplicationStateHeader extends Component<HdsApplicationStateHeaderSignature> {\n get titleTag(): HdsApplicationStateTitleTags {\n return this.args.titleTag ?? HdsApplicationStateTitleTagValues.Div;\n }\n\n <template>\n <div class=\"hds-application-state__header\" ...attributes>\n {{#if @errorCode}}\n <HdsTextBody\n class=\"hds-application-state__error-code\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"medium\"\n @color=\"faint\"\n >\n {{hdsT
|
|
1
|
+
{"version":3,"file":"header.js","sources":["../../../../src/components/hds/application-state/header.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n\nimport { HdsApplicationStateTitleTagValues } from './types.ts';\nimport HdsTextBody from '../text/body.gts';\nimport HdsTextDisplay from '../text/display.gts';\nimport HdsIcon from '../icon/index.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\n\nimport type { HdsIconSignature } from '../icon/index.gts';\nimport type { HdsApplicationStateTitleTags } from './types.ts';\n\nexport interface HdsApplicationStateHeaderSignature {\n Args: {\n title?: string;\n titleTag?: HdsApplicationStateTitleTags;\n errorCode?: string;\n icon?: HdsIconSignature['Args']['name'];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsApplicationStateHeader extends Component<HdsApplicationStateHeaderSignature> {\n get titleTag(): HdsApplicationStateTitleTags {\n return this.args.titleTag ?? HdsApplicationStateTitleTagValues.Div;\n }\n\n <template>\n <div class=\"hds-application-state__header\" ...attributes>\n {{#if @errorCode}}\n <HdsTextBody\n class=\"hds-application-state__error-code\"\n @tag=\"div\"\n @size=\"100\"\n @weight=\"medium\"\n @color=\"faint\"\n >\n {{hdsT\n \"hds.components.application-state.header.error\"\n default=\"ERROR\"\n }}\n {{@errorCode}}\n </HdsTextBody>\n {{/if}}\n {{#if @icon}}\n <div class=\"hds-application-state__icon\">\n <HdsIcon\n @color=\"var(--hds-foreground-color-strong)\"\n @name={{@icon}}\n @size=\"24\"\n @isInline={{true}}\n />\n </div>\n {{/if}}\n <HdsTextDisplay\n class=\"hds-application-state__title\"\n @tag={{this.titleTag}}\n @size=\"300\"\n @weight=\"semibold\"\n @color=\"strong\"\n >\n {{@title}}\n </HdsTextDisplay>\n </div>\n </template>\n}\n"],"names":["HdsApplicationStateHeader","Component","titleTag","args","HdsApplicationStateTitleTagValues","Div","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTextBody","hdsT","HdsIcon","HdsTextDisplay"],"mappings":";;;;;;;;;AAAA;;;AAGC;AAuBc,MAAMA,kCAAkCC,SAAA,CAAU;EAC/D,IAAIC,WAAyC;IAC3C,OAAO,IAAI,CAACC,IAAI,CAACD,QAAQ,IAAIE,kCAAkCC,GAAG;AACpE,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,wtBAAA,EAqCA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,WAAA;cAAAC,UAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
-
import
|
|
2
|
+
import { service } from '@ember/service';
|
|
3
|
+
import { didInsert } from '@ember/render-modifiers';
|
|
3
4
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
4
5
|
import { setComponentTemplate } from '@ember/component';
|
|
6
|
+
import { g, i } from 'decorator-transforms/runtime';
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* Copyright IBM Corp. 2021, 2026
|
|
@@ -9,6 +11,10 @@ import { setComponentTemplate } from '@ember/component';
|
|
|
9
11
|
*/
|
|
10
12
|
const NOOP = () => {};
|
|
11
13
|
class HdsBreadcrumb extends Component {
|
|
14
|
+
static {
|
|
15
|
+
g(this.prototype, "hdsIntl", [service]);
|
|
16
|
+
}
|
|
17
|
+
#hdsIntl = (i(this, "hdsIntl"), void 0);
|
|
12
18
|
get didInsert() {
|
|
13
19
|
const {
|
|
14
20
|
didInsert
|
|
@@ -23,7 +29,9 @@ class HdsBreadcrumb extends Component {
|
|
|
23
29
|
return this.args.itemsCanWrap ?? true;
|
|
24
30
|
}
|
|
25
31
|
get ariaLabel() {
|
|
26
|
-
return this.args.ariaLabel ?? '
|
|
32
|
+
return this.args.ariaLabel ?? this.hdsIntl.t('hds.components.breadcrumb.aria-label', {
|
|
33
|
+
default: 'breadcrumbs'
|
|
34
|
+
});
|
|
27
35
|
}
|
|
28
36
|
get classNames() {
|
|
29
37
|
const classes = ['hds-breadcrumb'];
|
|
@@ -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';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/
|
|
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';\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,17 +1,25 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
2
|
import { hash } from '@ember/helper';
|
|
3
|
+
import { service } from '@ember/service';
|
|
3
4
|
import HdsPopoverPrimitive from '../popover-primitive/index.js';
|
|
4
5
|
import HdsIcon from '../icon/index.js';
|
|
5
6
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
6
7
|
import { setComponentTemplate } from '@ember/component';
|
|
8
|
+
import { g, i } from 'decorator-transforms/runtime';
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* Copyright IBM Corp. 2021, 2026
|
|
10
12
|
* SPDX-License-Identifier: MPL-2.0
|
|
11
13
|
*/
|
|
12
14
|
class HdsBreadcrumbTruncation extends Component {
|
|
15
|
+
static {
|
|
16
|
+
g(this.prototype, "hdsIntl", [service]);
|
|
17
|
+
}
|
|
18
|
+
#hdsIntl = (i(this, "hdsIntl"), void 0);
|
|
13
19
|
get ariaLabel() {
|
|
14
|
-
return this.args.ariaLabel ?? '
|
|
20
|
+
return this.args.ariaLabel ?? this.hdsIntl.t('hds.components.breadcrumb.truncation.aria-label', {
|
|
21
|
+
default: 'show more'
|
|
22
|
+
});
|
|
15
23
|
}
|
|
16
24
|
static {
|
|
17
25
|
setComponentTemplate(precompileTemplate("<li class=\"hds-breadcrumb__item hds-breadcrumb__item--is-truncation\" ...attributes>\n <HdsPopoverPrimitive @enableClickEvents={{true}} as |PP|>\n <div {{PP.setupPrimitiveContainer}}>\n <button type=\"button\" class=\"hds-breadcrumb__truncation-toggle\" aria-label={{this.ariaLabel}} aria-expanded={{if PP.isOpen \"true\" \"false\"}} {{PP.setupPrimitiveToggle}}>\n <HdsIcon @name=\"more-horizontal\" @size=\"16\" />\n </button>\n <div class=\"hds-breadcrumb__truncation-content\" {{PP.setupPrimitivePopover anchoredPositionOptions=(hash placement=\"bottom-start\" offsetOptions=4)}}>\n <ol class=\"hds-breadcrumb__sublist\">\n {{yield}}\n </ol>\n </div>\n </div>\n </HdsPopoverPrimitive>\n</li>", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncation.js","sources":["../../../../src/components/hds/breadcrumb/truncation.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\n\nimport HdsPopoverPrimitive from '../popover-primitive/index.gts';\nimport HdsIcon from '../icon/index.gts';\n\nexport interface HdsBreadcrumbTruncationSignature {\n Args: {\n ariaLabel?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLLIElement;\n}\n\nexport default class HdsBreadcrumbTruncation extends Component<HdsBreadcrumbTruncationSignature> {\n get ariaLabel(): string {\n return this.args.ariaLabel
|
|
1
|
+
{"version":3,"file":"truncation.js","sources":["../../../../src/components/hds/breadcrumb/truncation.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\nimport { service } from '@ember/service';\n\nimport HdsPopoverPrimitive from '../popover-primitive/index.gts';\nimport HdsIcon from '../icon/index.gts';\nimport type HdsIntlService from '../../../services/hds-intl';\n\nexport interface HdsBreadcrumbTruncationSignature {\n Args: {\n ariaLabel?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLLIElement;\n}\n\nexport default class HdsBreadcrumbTruncation extends Component<HdsBreadcrumbTruncationSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n get ariaLabel(): string {\n return (\n this.args.ariaLabel ??\n this.hdsIntl.t('hds.components.breadcrumb.truncation.aria-label', {\n default: 'show more',\n })\n );\n }\n\n <template>\n <li\n class=\"hds-breadcrumb__item hds-breadcrumb__item--is-truncation\"\n ...attributes\n >\n <HdsPopoverPrimitive @enableClickEvents={{true}} as |PP|>\n <div {{PP.setupPrimitiveContainer}}>\n <button\n type=\"button\"\n class=\"hds-breadcrumb__truncation-toggle\"\n aria-label={{this.ariaLabel}}\n aria-expanded={{if PP.isOpen \"true\" \"false\"}}\n {{PP.setupPrimitiveToggle}}\n >\n <HdsIcon @name=\"more-horizontal\" @size=\"16\" />\n </button>\n <div\n class=\"hds-breadcrumb__truncation-content\"\n {{PP.setupPrimitivePopover\n anchoredPositionOptions=(hash\n placement=\"bottom-start\" offsetOptions=4\n )\n }}\n >\n <ol class=\"hds-breadcrumb__sublist\">\n {{yield}}\n </ol>\n </div>\n </div>\n </HdsPopoverPrimitive>\n </li>\n </template>\n}\n"],"names":["HdsBreadcrumbTruncation","Component","g","prototype","service","i","ariaLabel","args","hdsIntl","t","default","setComponentTemplate","precompileTemplate","strictMode","scope","HdsPopoverPrimitive","HdsIcon","hash"],"mappings":";;;;;;;;;AAAA;;;AAGC;AAoBc,MAAMA,gCAAgCC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAC5DC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;EAED,IAAIC,SAAAA,GAAoB;AACtB,IAAA,OACE,IAAI,CAACC,IAAI,CAACD,SAAS,IACnB,IAAI,CAACE,OAAO,CAACC,CAAC,CAAC,iDAAA,EAAmD;AAChEC,MAAAA,OAAA,EAAS;AACX,KAAA,CACF;AACF,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,mvBAAA,EA+BA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,mBAAA;QAAAC,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import Component from '@glimmer/component';
|
|
2
|
+
import { service } from '@ember/service';
|
|
2
3
|
import HdsCopyButton from '../copy/button/index.js';
|
|
3
4
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
4
5
|
import { setComponentTemplate } from '@ember/component';
|
|
6
|
+
import { g, i } from 'decorator-transforms/runtime';
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* Copyright IBM Corp. 2021, 2026
|
|
8
10
|
* SPDX-License-Identifier: MPL-2.0
|
|
9
11
|
*/
|
|
10
12
|
class HdsCodeBlockCopyButton extends Component {
|
|
13
|
+
static {
|
|
14
|
+
g(this.prototype, "hdsIntl", [service]);
|
|
15
|
+
}
|
|
16
|
+
#hdsIntl = (i(this, "hdsIntl"), void 0);
|
|
11
17
|
get text() {
|
|
12
|
-
return this.args.text ? this.args.text : '
|
|
18
|
+
return this.args.text ? this.args.text : this.hdsIntl.t('hds.components.code-block.copy-button', {
|
|
19
|
+
default: 'Copy'
|
|
20
|
+
});
|
|
13
21
|
}
|
|
14
22
|
static {
|
|
15
23
|
setComponentTemplate(precompileTemplate("<HdsCopyButton class=\"hds-code-block__copy-button\" @text={{this.text}} @isIconOnly={{true}} @size=\"small\" @targetToCopy={{@targetToCopy}} @onSuccess={{@onCopy}} @ariaMessageText={{@copySuccessMessageText}} ...attributes />", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-button.js","sources":["../../../../src/components/hds/code-block/copy-button.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n\nimport HdsCopyButton from '../copy/button/index.gts';\n\nimport type { HdsCopyButtonSignature } from '../copy/button/index.gts';\n\nexport interface HdsCodeBlockCopyButtonSignature {\n Args: {\n targetToCopy?: HdsCopyButtonSignature['Args']['targetToCopy'];\n text?: HdsCopyButtonSignature['Args']['text'];\n onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];\n copySuccessMessageText?: HdsCopyButtonSignature['Args']['ariaMessageText'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsCopyButtonSignature['Element'];\n}\n\nexport default class HdsCodeBlockCopyButton extends Component<HdsCodeBlockCopyButtonSignature> {\n get text(): HdsCopyButtonSignature['Args']['text'] {\n return this.args.text
|
|
1
|
+
{"version":3,"file":"copy-button.js","sources":["../../../../src/components/hds/code-block/copy-button.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\nimport HdsCopyButton from '../copy/button/index.gts';\n\nimport type { HdsCopyButtonSignature } from '../copy/button/index.gts';\nimport type HdsIntlService from '../../../services/hds-intl.ts';\n\nexport interface HdsCodeBlockCopyButtonSignature {\n Args: {\n targetToCopy?: HdsCopyButtonSignature['Args']['targetToCopy'];\n text?: HdsCopyButtonSignature['Args']['text'];\n onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];\n copySuccessMessageText?: HdsCopyButtonSignature['Args']['ariaMessageText'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsCopyButtonSignature['Element'];\n}\n\nexport default class HdsCodeBlockCopyButton extends Component<HdsCodeBlockCopyButtonSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n get text(): HdsCopyButtonSignature['Args']['text'] {\n return this.args.text\n ? this.args.text\n : this.hdsIntl.t('hds.components.code-block.copy-button', {\n default: 'Copy',\n });\n }\n\n <template>\n <HdsCopyButton\n class=\"hds-code-block__copy-button\"\n @text={{this.text}}\n @isIconOnly={{true}}\n @size=\"small\"\n @targetToCopy={{@targetToCopy}}\n @onSuccess={{@onCopy}}\n @ariaMessageText={{@copySuccessMessageText}}\n ...attributes\n />\n </template>\n}\n"],"names":["HdsCodeBlockCopyButton","Component","g","prototype","service","i","text","args","hdsIntl","t","default","setComponentTemplate","precompileTemplate","strictMode","scope","HdsCopyButton"],"mappings":";;;;;;;AAAA;;;AAGC;AAuBc,MAAMA,+BAA+BC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAC3DC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;EAED,IAAIC,IAAAA,GAA+C;AACjD,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,IAAI,GACjB,IAAI,CAACC,IAAI,CAACD,IAAI,GACd,IAAI,CAACE,OAAO,CAACC,CAAC,CAAC,uCAAA,EAAyC;AACtDC,MAAAA,OAAA,EAAS;AACX,KAAA,CAAA;AACN,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,oOAAA,EAWA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
|
|
@@ -7,6 +7,7 @@ import { guidFor } from '@ember/object/internals';
|
|
|
7
7
|
import { modifier } from 'ember-modifier';
|
|
8
8
|
import { hash } from '@ember/helper';
|
|
9
9
|
import { on } from '@ember/modifier';
|
|
10
|
+
import { service } from '@ember/service';
|
|
10
11
|
import Prism from 'prismjs';
|
|
11
12
|
import style from 'ember-style-modifier';
|
|
12
13
|
import HdsTHelper from '../../../helpers/hds-t.js';
|
|
@@ -37,6 +38,10 @@ import { g, i } from 'decorator-transforms/runtime';
|
|
|
37
38
|
*/
|
|
38
39
|
const LANGUAGES = Object.values(HdsCodeBlockLanguageValues);
|
|
39
40
|
class HdsCodeBlock extends Component {
|
|
41
|
+
static {
|
|
42
|
+
g(this.prototype, "hdsIntl", [service]);
|
|
43
|
+
}
|
|
44
|
+
#hdsIntl = (i(this, "hdsIntl"), void 0);
|
|
40
45
|
static {
|
|
41
46
|
g(this.prototype, "_prismCode", [tracked], function () {
|
|
42
47
|
return htmlSafe('');
|
|
@@ -139,9 +144,6 @@ class HdsCodeBlock extends Component {
|
|
|
139
144
|
get hasLineWrapping() {
|
|
140
145
|
return this.args.hasLineWrapping ?? false;
|
|
141
146
|
}
|
|
142
|
-
get copyButtonText() {
|
|
143
|
-
return this.args.copyButtonText ? this.args.copyButtonText : 'Copy';
|
|
144
|
-
}
|
|
145
147
|
registerTitleElement = element => {
|
|
146
148
|
this._titleId = element.id;
|
|
147
149
|
};
|
|
@@ -212,16 +214,22 @@ class HdsCodeBlock extends Component {
|
|
|
212
214
|
const NEW_LINE_EXP = /\n(?!$)/g;
|
|
213
215
|
const lines = code.split(NEW_LINE_EXP);
|
|
214
216
|
const numLines = lines.length;
|
|
215
|
-
const lineOffset = this.args.lineNumberStart
|
|
216
|
-
const
|
|
217
|
-
|
|
217
|
+
const lineOffset = (this.args.lineNumberStart ?? 1) - 1;
|
|
218
|
+
const startText = this.hdsIntl.t('hds.components.code-block.highlight-start', {
|
|
219
|
+
default: 'highlight start'
|
|
220
|
+
});
|
|
221
|
+
const endText = this.hdsIntl.t('hds.components.code-block.highlight-end', {
|
|
222
|
+
default: 'highlight end'
|
|
223
|
+
});
|
|
224
|
+
const highlightStart = `<span class="sr-only">${startText}</span>`;
|
|
225
|
+
const highlightEnd = `<span class="sr-only">${endText}</span>`;
|
|
218
226
|
const ranges = this.args.highlightLines?.replace(/\s+/g, '').split(',').filter(Boolean);
|
|
219
227
|
if (ranges && ranges.length > 0) {
|
|
220
228
|
const highlightedLines = [];
|
|
221
229
|
ranges.forEach(currentRange => {
|
|
222
230
|
const range = currentRange.split('-');
|
|
223
231
|
const start = +range[0] - lineOffset;
|
|
224
|
-
let end =
|
|
232
|
+
let end = range[1] ? +range[1] - lineOffset : start;
|
|
225
233
|
end = Math.min(numLines, end);
|
|
226
234
|
highlightedLines.push({
|
|
227
235
|
start: start,
|
|
@@ -266,7 +274,7 @@ class HdsCodeBlock extends Component {
|
|
|
266
274
|
return classes.join(' ');
|
|
267
275
|
}
|
|
268
276
|
static {
|
|
269
|
-
setComponentTemplate(precompileTemplate("<div class={{this.classNames}} ...attributes {{this._setUpCodeObserver}}>\n <div class=\"hds-code-block__header\">\n {{~yield (hash Title=(component HdsCodeBlockTitle didInsertNode=this.registerTitleElement))~}}\n {{~yield (hash Description=(component HdsCodeBlockDescription didInsertNode=this.registerDescriptionElement))~}}\n </div>\n <div class=\"hds-code-block__body\">\n {{!-- content within pre tag is whitespace-sensitive; do not add new lines! --}}\n <pre class=\"hds-code-block__code\" {{style maxHeight=this.maxHeight}} data-line={{@highlightLines}} data-start={{@lineNumberStart}} id={{this._preCodeId}} aria-label={{@ariaLabel}} aria-labelledby={{this.ariaLabelledBy}} aria-describedby={{this.ariaDescribedBy}} tabindex=\"0\"><code {{this._setUpCodeBlockCode}}>\n {{~this._prismCode~}}\n </code></pre>\n\n {{#if @hasCopyButton}}\n <HdsCodeBlockCopyButton @targetToCopy=\"#{{this._preCodeId}}\" aria-describedby={{this._preCodeId}} @text={{
|
|
277
|
+
setComponentTemplate(precompileTemplate("<div class={{this.classNames}} ...attributes {{this._setUpCodeObserver}}>\n <div class=\"hds-code-block__header\">\n {{~yield (hash Title=(component HdsCodeBlockTitle didInsertNode=this.registerTitleElement))~}}\n {{~yield (hash Description=(component HdsCodeBlockDescription didInsertNode=this.registerDescriptionElement))~}}\n </div>\n <div class=\"hds-code-block__body\">\n {{!-- content within pre tag is whitespace-sensitive; do not add new lines! --}}\n <pre class=\"hds-code-block__code\" {{style maxHeight=this.maxHeight}} data-line={{@highlightLines}} data-start={{@lineNumberStart}} id={{this._preCodeId}} aria-label={{@ariaLabel}} aria-labelledby={{this.ariaLabelledBy}} aria-describedby={{this.ariaDescribedBy}} tabindex=\"0\"><code {{this._setUpCodeBlockCode}}>\n {{~this._prismCode~}}\n </code></pre>\n\n {{#if @hasCopyButton}}\n <HdsCodeBlockCopyButton @targetToCopy=\"#{{this._preCodeId}}\" aria-describedby={{this._preCodeId}} @text={{@copyButtonText}} @onCopy={{@onCopy}} @copySuccessMessageText={{@copySuccessMessageText}} />\n {{/if}}\n </div>\n {{#if this.showFooter}}\n <div class=\"hds-code-block__overlay-footer\">\n <HdsButton class=\"hds-code-block__height-toggle-button\" @text={{if this._isExpanded (hdsT \"hds.components.code-block.height-toggle-button.show-less\" default=\"Show less code\") (hdsT \"hds.components.code-block.height-toggle-button.show-more\" default=\"Show more code\")}} @color=\"secondary-muted\" @icon={{if this._isExpanded \"unfold-close\" \"unfold-open\"}} @size=\"small\" {{on \"click\" this.toggleExpanded}} />\n </div>\n {{/if}}\n</div>", {
|
|
270
278
|
strictMode: true,
|
|
271
279
|
scope: () => ({
|
|
272
280
|
hash,
|