@hashicorp/design-system-components 4.23.1 → 4.24.0-rc-20250923215537
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/declarations/components/hds/advanced-table/index.d.ts +13 -3
- package/declarations/components/hds/advanced-table/models/column.d.ts +9 -2
- package/declarations/components/hds/advanced-table/models/row.d.ts +5 -1
- package/declarations/components/hds/advanced-table/models/table.d.ts +13 -2
- package/declarations/components/hds/advanced-table/td.d.ts +1 -1
- package/declarations/components/hds/advanced-table/th-context-menu.d.ts +16 -7
- package/declarations/components/hds/advanced-table/th-reorder-drop-target.d.ts +32 -0
- package/declarations/components/hds/advanced-table/th-reorder-handle.d.ts +24 -0
- package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +2 -1
- package/declarations/components/hds/advanced-table/th-sort.d.ts +11 -3
- package/declarations/components/hds/advanced-table/th.d.ts +11 -4
- package/declarations/components/hds/advanced-table/tr.d.ts +7 -1
- package/declarations/components/hds/advanced-table/types.d.ts +15 -0
- package/declarations/components/hds/advanced-table/utils.d.ts +5 -0
- package/declarations/components/hds/dropdown/toggle/icon.d.ts +1 -1
- package/declarations/components/hds/flyout/index.d.ts +4 -1
- package/declarations/components/hds/form/index.d.ts +1 -1
- package/declarations/components/hds/form/key-value-inputs/index.d.ts +4 -4
- package/declarations/components/hds/form/radio-card/index.d.ts +2 -2
- package/declarations/components/hds/modal/index.d.ts +4 -2
- package/declarations/components/hds/popover-primitive/index.d.ts +3 -0
- package/declarations/components/hds/separator/index.d.ts +1 -1
- package/declarations/components/hds/stepper/list/step.d.ts +1 -1
- package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
- package/declarations/components/hds/table/index.d.ts +5 -5
- package/declarations/components/hds/table/td.d.ts +1 -1
- package/declarations/components/hds/table/th-sort.d.ts +1 -1
- package/declarations/components/hds/table/th.d.ts +1 -1
- package/declarations/template-registry.d.ts +6 -0
- package/dist/_app_/components/hds/advanced-table/th-reorder-drop-target.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-reorder-handle.js +1 -0
- package/dist/_app_/components/hds/advanced-table/utils.js +1 -0
- package/dist/components/hds/advanced-table/index.js +77 -17
- package/dist/components/hds/advanced-table/index.js.map +1 -1
- package/dist/components/hds/advanced-table/models/column.js +58 -13
- package/dist/components/hds/advanced-table/models/column.js.map +1 -1
- package/dist/components/hds/advanced-table/models/row.js +38 -3
- package/dist/components/hds/advanced-table/models/row.js.map +1 -1
- package/dist/components/hds/advanced-table/models/table.js +146 -2
- package/dist/components/hds/advanced-table/models/table.js.map +1 -1
- package/dist/components/hds/advanced-table/td.js.map +1 -1
- package/dist/components/hds/advanced-table/th-context-menu.js +124 -50
- package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
- package/dist/components/hds/advanced-table/th-reorder-drop-target.js +133 -0
- package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -0
- package/dist/components/hds/advanced-table/th-reorder-handle.js +104 -0
- package/dist/components/hds/advanced-table/th-reorder-handle.js.map +1 -0
- package/dist/components/hds/advanced-table/th-resize-handle.js +44 -21
- package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
- package/dist/components/hds/advanced-table/th-sort.js +20 -8
- package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
- package/dist/components/hds/advanced-table/th.js +19 -7
- package/dist/components/hds/advanced-table/th.js.map +1 -1
- package/dist/components/hds/advanced-table/tr.js +1 -1
- package/dist/components/hds/advanced-table/tr.js.map +1 -1
- package/dist/components/hds/advanced-table/types.js +6 -1
- package/dist/components/hds/advanced-table/types.js.map +1 -1
- package/dist/components/hds/advanced-table/utils.js +23 -0
- package/dist/components/hds/advanced-table/utils.js.map +1 -0
- package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
- package/dist/components/hds/flyout/index.js +29 -6
- package/dist/components/hds/flyout/index.js.map +1 -1
- package/dist/components/hds/form/index.js.map +1 -1
- package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
- package/dist/components/hds/form/radio-card/index.js.map +1 -1
- package/dist/components/hds/modal/index.js +51 -37
- package/dist/components/hds/modal/index.js.map +1 -1
- package/dist/components/hds/popover-primitive/index.js +51 -35
- package/dist/components/hds/popover-primitive/index.js.map +1 -1
- package/dist/components/hds/separator/index.js.map +1 -1
- package/dist/components/hds/stepper/list/step.js.map +1 -1
- package/dist/components/hds/table/index.js.map +1 -1
- package/dist/components/hds/table/td.js.map +1 -1
- package/dist/components/hds/table/th-sort.js.map +1 -1
- package/dist/components/hds/table/th.js.map +1 -1
- package/dist/components.js +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +196 -62
- package/dist/styles/components/advanced-table.scss +155 -6
- package/dist/styles/mixins/_focus-ring.scss +43 -0
- package/package.json +5 -2
- package/translations/hds/components/advanced-table/en-us.yaml +1 -0
- package/translations/hds/components/advanced-table/th-context-menu/en-us.yaml +3 -0
- package/translations/hds/components/advanced-table/th-reorder-handle/en-us.yaml +2 -0
|
@@ -12,7 +12,7 @@ import { precompileTemplate } from '@ember/template-compilation';
|
|
|
12
12
|
import { g, i, n } from 'decorator-transforms/runtime';
|
|
13
13
|
import { setComponentTemplate } from '@ember/component';
|
|
14
14
|
|
|
15
|
-
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div\n class={{this.classNames}}\n role={{this.role}}\n aria-rowspan={{@rowspan}}\n aria-colspan={{@colspan}}\n aria-describedby={{@parentId}}\n {{style grid-row=this.rowspan grid-column=this.colspan padding-left=this.paddingLeft}}\n {{hds-advanced-table-cell\n handleEnableFocusTrap=this.enableFocusTrap\n shouldTrapFocus=this._shouldTrapFocus\n setCellElement=this.setElement\n }}\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\n {{focus-trap\n isActive=this._shouldTrapFocus\n focusTrapOptions=(hash\n onDeactivate=this.onFocusTrapDeactivate initialFocus=this.getInitialFocus clickOutsideDeactivates=true\n )\n }}\n ...attributes\n>\n <Hds::Layout::Flex @justify=\"space-between\" @align=\"center\" @gap=\"8\">\n {{#if @column.isVisuallyHidden}}\n <span class=\"sr-only\">{{yield}}</span>\n {{else}}\n {{#if @tooltip}}\n {{#if @isExpandable}}\n <Hds::AdvancedTable::ThButtonExpand\n @labelId={{this._labelId}}\n @onToggle={{@onClickToggle}}\n @isExpanded={{@isExpanded}}\n @isExpandAll={{@hasExpandAllButton}}\n {{this._manageExpandButton}}\n />\n {{/if}}\n <div class=\"hds-advanced-table__th-content\">\n <span\n id={{this._labelId}}\n class=\"hds-advanced-table__th-content-text hds-typography-body-200 hds-font-weight-semibold\"\n >\n {{yield}}\n </span>\n <Hds::AdvancedTable::ThButtonTooltip @tooltip={{@tooltip}} @labelId={{this._labelId}} />\n </div>\n {{else}}\n {{#if @isExpandable}}\n <Hds::AdvancedTable::ThButtonExpand\n @labelId={{this._labelId}}\n @onToggle={{@onClickToggle}}\n @isExpanded={{@isExpanded}}\n @isExpandAll={{@hasExpandAllButton}}\n {{this._manageExpandButton}}\n />\n {{/if}}\n <div class=\"hds-advanced-table__th-content\">\n <span\n class=\"hds-advanced-table__th-content-text hds-typography-body-200 hds-font-weight-semibold\"\n id={{this._labelId}}\n >{{yield}}</span>\n </div>\n {{/if}}\n {{/if}}\n\n {{#if @column}}\n
|
|
15
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div\n class={{this.classNames}}\n role={{this.role}}\n aria-rowspan={{@rowspan}}\n aria-colspan={{@colspan}}\n aria-describedby={{@parentId}}\n {{style grid-row=this.rowspan grid-column=this.colspan padding-left=this.paddingLeft}}\n {{hds-advanced-table-cell\n handleEnableFocusTrap=this.enableFocusTrap\n shouldTrapFocus=this._shouldTrapFocus\n setCellElement=this.setElement\n }}\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\n {{focus-trap\n isActive=this._shouldTrapFocus\n focusTrapOptions=(hash\n onDeactivate=this.onFocusTrapDeactivate initialFocus=this.getInitialFocus clickOutsideDeactivates=true\n )\n }}\n ...attributes\n>\n <Hds::Layout::Flex @justify=\"space-between\" @align=\"center\" @gap=\"8\">\n {{#if @column.isVisuallyHidden}}\n <span class=\"sr-only\">{{yield}}</span>\n {{else}}\n {{#if @tooltip}}\n {{#if @isExpandable}}\n <Hds::AdvancedTable::ThButtonExpand\n @labelId={{this._labelId}}\n @onToggle={{@onClickToggle}}\n @isExpanded={{@isExpanded}}\n @isExpandAll={{@hasExpandAllButton}}\n {{this._manageExpandButton}}\n />\n {{/if}}\n <div class=\"hds-advanced-table__th-content\">\n <span\n id={{this._labelId}}\n class=\"hds-advanced-table__th-content-text hds-typography-body-200 hds-font-weight-semibold\"\n >\n {{yield}}\n </span>\n <Hds::AdvancedTable::ThButtonTooltip @tooltip={{@tooltip}} @labelId={{this._labelId}} />\n </div>\n {{else}}\n {{#if @isExpandable}}\n <Hds::AdvancedTable::ThButtonExpand\n @labelId={{this._labelId}}\n @onToggle={{@onClickToggle}}\n @isExpanded={{@isExpanded}}\n @isExpandAll={{@hasExpandAllButton}}\n {{this._manageExpandButton}}\n />\n {{/if}}\n <div class=\"hds-advanced-table__th-content\">\n <span\n class=\"hds-advanced-table__th-content-text hds-typography-body-200 hds-font-weight-semibold\"\n id={{this._labelId}}\n >{{yield}}</span>\n </div>\n {{/if}}\n {{/if}}\n\n {{#if @column}}\n <Hds::AdvancedTable::ThContextMenu\n @column={{@column}}\n @hasReorderableColumns={{@hasReorderableColumns}}\n @hasResizableColumns={{@hasResizableColumns}}\n @isStickyColumn={{@isStickyColumn}}\n @reorderHandleElement={{this._reorderHandleElement}}\n @resizeHandleElement={{this._resizeHandleElement}}\n @onColumnResize={{@onColumnResize}}\n @onPinFirstColumn={{@onPinFirstColumn}}\n />\n\n {{#if (and @hasReorderableColumns (not @isStickyColumn))}}\n <Hds::AdvancedTable::ThReorderHandle\n @column={{@column}}\n @tableHeight={{@tableHeight}}\n @onReorderDragStart={{this.handleDragStart}}\n @onReorderDragEnd={{@onReorderDragEnd}}\n {{this._registerReorderHandleElement}}\n />\n {{/if}}\n\n {{#if (and @hasResizableColumns (not @column.isLast) (not @column.table.hasColumnBeingDragged))}}\n <Hds::AdvancedTable::ThResizeHandle\n @column={{@column}}\n @tableHeight={{@tableHeight}}\n @onColumnResize={{@onColumnResize}}\n {{this._registerResizeHandleElement}}\n />\n {{/if}}\n {{/if}}\n </Hds::Layout::Flex>\n\n {{#if @column}}\n {{#if (and @column.table.hasColumnBeingDragged (not @isStickyColumn))}}\n <Hds::AdvancedTable::ThReorderDropTarget\n @column={{@column}}\n @hasSelectableRows={{@hasSelectableRows}}\n @tableHeight={{@tableHeight}}\n @onReorderDrop={{@onReorderDrop}}\n />\n {{/if}}\n {{/if}}\n</div>");
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Copyright (c) HashiCorp, Inc.
|
|
@@ -30,6 +30,10 @@ class HdsAdvancedTableTh extends Component {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
#_shouldTrapFocus = (i(this, "_shouldTrapFocus"), void 0);
|
|
33
|
+
static {
|
|
34
|
+
g(this.prototype, "_reorderHandleElement", [tracked]);
|
|
35
|
+
}
|
|
36
|
+
#_reorderHandleElement = (i(this, "_reorderHandleElement"), void 0);
|
|
33
37
|
static {
|
|
34
38
|
g(this.prototype, "_resizeHandleElement", [tracked]);
|
|
35
39
|
}
|
|
@@ -93,14 +97,16 @@ class HdsAdvancedTableTh extends Component {
|
|
|
93
97
|
if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {
|
|
94
98
|
classes.push('hds-advanced-table__th--is-sticky-column-pinned');
|
|
95
99
|
}
|
|
100
|
+
if (this.args.column?.isBeingDragged) {
|
|
101
|
+
classes.push('hds-advanced-table__th--is-being-dragged');
|
|
102
|
+
}
|
|
96
103
|
return classes.join(' ');
|
|
97
104
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return (hasResizableColumns || isStickyColumn !== undefined) ?? false;
|
|
105
|
+
handleDragStart(column) {
|
|
106
|
+
this.args.onReorderDragStart?.(column);
|
|
107
|
+
}
|
|
108
|
+
static {
|
|
109
|
+
n(this.prototype, "handleDragStart", [action]);
|
|
104
110
|
}
|
|
105
111
|
onFocusTrapDeactivate() {
|
|
106
112
|
this._shouldTrapFocus = false;
|
|
@@ -124,10 +130,16 @@ class HdsAdvancedTableTh extends Component {
|
|
|
124
130
|
}
|
|
125
131
|
setElement(element) {
|
|
126
132
|
this._element = element;
|
|
133
|
+
if (this.args.column !== undefined) {
|
|
134
|
+
this.args.column.thElement = element;
|
|
135
|
+
}
|
|
127
136
|
}
|
|
128
137
|
static {
|
|
129
138
|
n(this.prototype, "setElement", [action]);
|
|
130
139
|
}
|
|
140
|
+
_registerReorderHandleElement = modifier(element => {
|
|
141
|
+
this._reorderHandleElement = element;
|
|
142
|
+
});
|
|
131
143
|
_registerResizeHandleElement = modifier(element => {
|
|
132
144
|
this._resizeHandleElement = element;
|
|
133
145
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"th.js","sources":["../../../../src/components/hds/advanced-table/th.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { focusable, type FocusableElement } from 'tabbable';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableColumn from './models/column.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';\n\nimport type Owner from '@ember/owner';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableScope,\n HdsAdvancedTableExpandState,\n} from './types.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\n\nexport const ALIGNMENTS: string[] = Object.values(\n HdsAdvancedTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;\n\nexport interface HdsAdvancedTableThSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n column?: HdsAdvancedTableColumn;\n colspan?: number;\n depth?: number;\n hasExpandAllButton?: boolean;\n hasResizableColumns?: boolean;\n isExpanded?: HdsAdvancedTableExpandState;\n isExpandable?: boolean;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n isVisuallyHidden?: boolean;\n newLabel?: string;\n parentId?: string;\n rowspan?: number;\n scope?: HdsAdvancedTableScope;\n tooltip?: string;\n tableHeight?: number;\n didInsertExpandButton?: (button: HTMLButtonElement) => void;\n onClickToggle?: () => void;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n willDestroyExpandButton?: (button: HTMLButtonElement) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableTh extends Component<HdsAdvancedTableThSignature> {\n private _labelId = this.args.newLabel ? this.args.newLabel : guidFor(this);\n private _element!: HTMLDivElement;\n\n @tracked private _shouldTrapFocus = false;\n @tracked\n private _resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n\n constructor(owner: Owner, args: HdsAdvancedTableThSignature['Args']) {\n super(owner, args);\n\n const { rowspan, colspan, isStickyColumn } = args;\n\n if (isStickyColumn) {\n assert(\n 'Cannot have custom rowspan or colspan if there are nested rows.',\n rowspan === undefined || colspan === undefined\n );\n }\n }\n\n get scope(): HdsAdvancedTableScope {\n const { scope = 'col' } = this.args;\n return scope;\n }\n\n get role(): string {\n if (this.scope === 'col') return 'columnheader';\n else return 'rowheader';\n }\n\n get align(): HdsAdvancedTableHorizontalAlignment {\n const { align = DEFAULT_ALIGN } = this.args;\n\n assert(\n `@align for \"Hds::Table::Th\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n\n return align;\n }\n\n // rowspan and colspan have to return 'auto' if not defined because otherwise the style modifier sets grid-area: undefined on the cell, which breaks the grid styles\n get rowspan(): string {\n if (this.args.rowspan) {\n return `span ${this.args.rowspan}`;\n }\n return 'auto';\n }\n\n get colspan(): string | undefined {\n if (this.args.colspan) {\n return `span ${this.args.colspan}`;\n }\n return 'auto';\n }\n\n get paddingLeft(): string | undefined {\n if (this.args.depth) {\n return `calc(${this.args.depth} * 32px + 16px)`;\n }\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (this.args.isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n return classes.join(' ');\n }\n\n get showContextMenu(): boolean {\n const { hasResizableColumns, isStickyColumn } = this.args;\n\n return (hasResizableColumns || isStickyColumn !== undefined) ?? false;\n }\n\n @action onFocusTrapDeactivate(): void {\n this._shouldTrapFocus = false;\n onFocusTrapDeactivate(this._element);\n }\n\n @action enableFocusTrap(): void {\n this._shouldTrapFocus = true;\n }\n\n @action getInitialFocus(): FocusableElement | undefined {\n const cellFocusableElements = focusable(this._element);\n return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n }\n\n private _registerResizeHandleElement = modifier(\n (element: HdsAdvancedTableThResizeHandleSignature['Element']) => {\n this._resizeHandleElement = element;\n }\n );\n\n private _manageExpandButton = modifier((button: HTMLButtonElement) => {\n const { didInsertExpandButton, willDestroyExpandButton } = this.args;\n if (typeof didInsertExpandButton === 'function') {\n didInsertExpandButton(button);\n }\n\n return () => {\n if (typeof willDestroyExpandButton === 'function') {\n willDestroyExpandButton(button);\n }\n };\n });\n}\n"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableTh","Component","_labelId","args","newLabel","guidFor","_element","g","prototype","tracked","i","void 0","constructor","owner","rowspan","colspan","isStickyColumn","assert","undefined","scope","role","align","join","includes","paddingLeft","depth","classNames","classes","push","isStickyColumnPinned","showContextMenu","hasResizableColumns","onFocusTrapDeactivate","_shouldTrapFocus","n","action","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","_registerResizeHandleElement","modifier","_resizeHandleElement","_manageExpandButton","button","didInsertExpandButton","willDestroyExpandButton","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"th.js","sources":["../../../../src/components/hds/advanced-table/th.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { focusable, type FocusableElement } from 'tabbable';\nimport { modifier } from 'ember-modifier';\nimport HdsAdvancedTableColumn from './models/column.ts';\nimport { onFocusTrapDeactivate } from '../../../modifiers/hds-advanced-table-cell/dom-management.ts';\nimport { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';\n\nimport type Owner from '@ember/owner';\nimport type {\n HdsAdvancedTableHorizontalAlignment,\n HdsAdvancedTableScope,\n HdsAdvancedTableExpandState,\n HdsAdvancedTableColumnReorderSide,\n} from './types.ts';\nimport type { HdsAdvancedTableThReorderHandleSignature } from './th-reorder-handle.ts';\nimport type { HdsAdvancedTableThResizeHandleSignature } from './th-resize-handle.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\n\nexport const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[] = Object.values(\n HdsAdvancedTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;\n\nexport interface HdsAdvancedTableThSignature {\n Args: {\n align?: HdsAdvancedTableHorizontalAlignment;\n column?: HdsAdvancedTableColumn;\n colspan?: number;\n depth?: number;\n hasExpandAllButton?: boolean;\n hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];\n hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];\n isExpanded?: HdsAdvancedTableExpandState;\n isExpandable?: boolean;\n isStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n isVisuallyHidden?: boolean;\n newLabel?: string;\n parentId?: string;\n rowspan?: number;\n scope?: HdsAdvancedTableScope;\n tooltip?: string;\n tableHeight?: number;\n didInsertExpandButton?: (button: HTMLButtonElement) => void;\n onClickToggle?: () => void;\n onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];\n onPinFirstColumn?: () => void;\n onReorderDragEnd?: () => void;\n onReorderDragStart?: (column: HdsAdvancedTableColumn) => void;\n onReorderDrop?: (\n column: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ) => void;\n willDestroyExpandButton?: (button: HTMLButtonElement) => void;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsAdvancedTableTh extends Component<HdsAdvancedTableThSignature> {\n private _labelId = this.args.newLabel ? this.args.newLabel : guidFor(this);\n private _element!: HTMLDivElement;\n\n @tracked private _shouldTrapFocus = false;\n @tracked\n private _reorderHandleElement?: HdsAdvancedTableThReorderHandleSignature['Element'];\n @tracked\n private _resizeHandleElement?: HdsAdvancedTableThResizeHandleSignature['Element'];\n\n constructor(owner: Owner, args: HdsAdvancedTableThSignature['Args']) {\n super(owner, args);\n\n const { rowspan, colspan, isStickyColumn } = args;\n\n if (isStickyColumn) {\n assert(\n 'Cannot have custom rowspan or colspan if there are nested rows.',\n rowspan === undefined || colspan === undefined\n );\n }\n }\n\n get scope(): HdsAdvancedTableScope {\n const { scope = 'col' } = this.args;\n return scope;\n }\n\n get role(): string {\n if (this.scope === 'col') return 'columnheader';\n else return 'rowheader';\n }\n\n get align(): HdsAdvancedTableHorizontalAlignment {\n const { align = DEFAULT_ALIGN } = this.args;\n\n assert(\n `@align for \"Hds::Table::Th\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n\n return align;\n }\n\n // rowspan and colspan have to return 'auto' if not defined because otherwise the style modifier sets grid-area: undefined on the cell, which breaks the grid styles\n get rowspan(): string {\n if (this.args.rowspan) {\n return `span ${this.args.rowspan}`;\n }\n return 'auto';\n }\n\n get colspan(): string | undefined {\n if (this.args.colspan) {\n return `span ${this.args.colspan}`;\n }\n return 'auto';\n }\n\n get paddingLeft(): string | undefined {\n if (this.args.depth) {\n return `calc(${this.args.depth} * 32px + 16px)`;\n }\n }\n\n get classNames(): string {\n const classes = ['hds-advanced-table__th'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-advanced-table__th--align-${this.align}`);\n }\n\n if (this.args.isStickyColumn) {\n classes.push('hds-advanced-table__th--is-sticky-column');\n }\n\n if (this.args.isStickyColumn && this.args.isStickyColumnPinned) {\n classes.push('hds-advanced-table__th--is-sticky-column-pinned');\n }\n\n if (this.args.column?.isBeingDragged) {\n classes.push('hds-advanced-table__th--is-being-dragged');\n }\n\n return classes.join(' ');\n }\n\n @action\n handleDragStart(column: HdsAdvancedTableColumn): void {\n this.args.onReorderDragStart?.(column);\n }\n\n @action onFocusTrapDeactivate(): void {\n this._shouldTrapFocus = false;\n onFocusTrapDeactivate(this._element);\n }\n\n @action enableFocusTrap(): void {\n this._shouldTrapFocus = true;\n }\n\n @action getInitialFocus(): FocusableElement | undefined {\n const cellFocusableElements = focusable(this._element);\n return cellFocusableElements[0];\n }\n\n @action setElement(element: HTMLDivElement): void {\n this._element = element;\n\n if (this.args.column !== undefined) {\n this.args.column.thElement = element;\n }\n }\n\n private _registerReorderHandleElement = modifier(\n (element: HdsAdvancedTableThReorderHandleSignature['Element']) => {\n this._reorderHandleElement = element;\n }\n );\n\n private _registerResizeHandleElement = modifier(\n (element: HdsAdvancedTableThResizeHandleSignature['Element']) => {\n this._resizeHandleElement = element;\n }\n );\n\n private _manageExpandButton = modifier((button: HTMLButtonElement) => {\n const { didInsertExpandButton, willDestroyExpandButton } = this.args;\n if (typeof didInsertExpandButton === 'function') {\n didInsertExpandButton(button);\n }\n\n return () => {\n if (typeof willDestroyExpandButton === 'function') {\n willDestroyExpandButton(button);\n }\n };\n });\n}\n"],"names":["ALIGNMENTS","Object","values","HdsAdvancedTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsAdvancedTableTh","Component","_labelId","args","newLabel","guidFor","_element","g","prototype","tracked","i","void 0","constructor","owner","rowspan","colspan","isStickyColumn","assert","undefined","scope","role","align","join","includes","paddingLeft","depth","classNames","classes","push","isStickyColumnPinned","column","isBeingDragged","handleDragStart","onReorderDragStart","n","action","onFocusTrapDeactivate","_shouldTrapFocus","enableFocusTrap","getInitialFocus","cellFocusableElements","focusable","setElement","element","thElement","_registerReorderHandleElement","modifier","_reorderHandleElement","_registerResizeHandleElement","_resizeHandleElement","_manageExpandButton","button","didInsertExpandButton","willDestroyExpandButton","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { assert } from '@ember/debug';
|
|
|
3
3
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
4
4
|
import { setComponentTemplate } from '@ember/component';
|
|
5
5
|
|
|
6
|
-
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class={{this.classNames}} role=\"row\" ...attributes>\n {{#if @isSelectable}}\n <Hds::AdvancedTable::ThSelectable\n role={{if (eq @selectionScope \"row\") \"gridcell\" \"columnheader\"}}\n @isSelected={{@isSelected}}\n @selectionScope={{@selectionScope}}\n @selectionKey={{this.selectionKey}}\n @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}}\n @sortBySelectedOrder={{@sortBySelectedOrder}}\n @didInsert={{@didInsert}}\n @willDestroy={{@willDestroy}}\n @onClickSortBySelected={{@onClickSortBySelected}}\n @onSelectionChange={{@onSelectionChange}}\n @isStickyColumn={{@hasStickyColumn}}\n @isStickyColumnPinned={{@isStickyColumnPinned}}\n />\n {{/if}}\n\n {{yield}}\n</div>");
|
|
6
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class={{this.classNames}} role=\"row\" ...attributes>\n {{#if @isSelectable}}\n <Hds::AdvancedTable::ThSelectable\n role={{if (eq @selectionScope \"row\") \"gridcell\" \"columnheader\"}}\n @isSelected={{@isSelected}}\n @selectionScope={{@selectionScope}}\n @selectionKey={{this.selectionKey}}\n @selectionAriaLabelSuffix={{@selectionAriaLabelSuffix}}\n @sortBySelectedOrder={{@sortBySelectedOrder}}\n @didInsert={{@didInsert}}\n @willDestroy={{@willDestroy}}\n @onClickSortBySelected={{@onClickSortBySelected}}\n @onSelectionChange={{@onSelectionChange}}\n @isStickyColumn={{@hasStickyColumn}}\n @isStickyColumnPinned={{@isStickyColumnPinned}}\n />\n {{/if}}\n\n {{yield (hash orderedCells=@data.orderedCells)}}\n</div>");
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Copyright (c) HashiCorp, Inc.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tr.js","sources":["../../../../src/components/hds/advanced-table/tr.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\n// import { HdsAdvancedTableScopeValues } from './types.ts';\nimport type {\n HdsAdvancedTableScope,\n HdsAdvancedTableThSortOrder,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThSelectableSignature } from './th-selectable.ts';\n\nexport interface BaseHdsAdvancedTableTrSignature {\n Args: {\n selectableColumnKey?: HdsAdvancedTableSignature['Args']['selectableColumnKey'];\n isLastRow?: boolean;\n isSelectable?: boolean;\n isSelected?: boolean;\n isParentRow?: boolean;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsAdvancedTableScope;\n sortBySelectedOrder?: HdsAdvancedTableThSortOrder;\n depth?: number;\n didInsert?: (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n onSelectionChange?: (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n willDestroy?: () => void;\n onClickSortBySelected?: HdsAdvancedTableThSelectableSignature['Args']['onClickSortBySelected'];\n displayRow?: boolean;\n hasStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n };\n Blocks: {\n default?: [];\n };\n Element: HTMLDivElement;\n}\n\n/*\n * NOTE: There is currently an issue with `WithBoundArgs` or Glint that causes a typing error where @selectionKey is set as always required.\n *\n * Until this is fixed, we are holding off on doing a union with the SelectableHdsAdvancedTableTrArgs\n */\n\n// Extended interface for selectable rows\n// export interface SelectableHdsAdvancedTableTrArgs\n// extends BaseHdsAdvancedTableTrSignature {\n// Args: BaseHdsAdvancedTableTrSignature['Args'] & {\n// isSelectable: true;\n// selectionScope?: HdsAdvancedTableScopeValues.Row;\n// selectionKey: string; // Now required for selectable rows\n// };\n// }\n\n// Union type to combine both possible states\nexport type HdsAdvancedTableTrSignature = BaseHdsAdvancedTableTrSignature;\n// | SelectableHdsAdvancedTableTrArgs;\n\nexport default class HdsAdvancedTableTr extends Component<HdsAdvancedTableTrSignature> {\n get selectionKey(): string | undefined {\n if (this.args.isSelectable && this.args.selectionScope === 'row') {\n assert(\n `@selectionKey must be defined on Table::Tr or B.Tr when @isSelectable is true`,\n this.args.selectionKey\n );\n return this.args.selectionKey;\n }\n return undefined;\n }\n\n get classNames(): string {\n const { depth, isLastRow, isParentRow, displayRow } = this.args;\n const classes = ['hds-advanced-table__tr'];\n\n if (depth && depth > 0) {\n classes.push('hds-advanced-table__tr--nested');\n }\n\n if (isParentRow) {\n classes.push('hds-advanced-table__tr--parent-row');\n }\n\n if (displayRow === false) {\n classes.push('hds-advanced-table__tr--hidden');\n }\n\n if (isLastRow) {\n classes.push('hds-advanced-table__tr--last-row');\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["HdsAdvancedTableTr","Component","selectionKey","args","isSelectable","selectionScope","assert","undefined","classNames","depth","isLastRow","isParentRow","displayRow","classes","push","join","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"file":"tr.js","sources":["../../../../src/components/hds/advanced-table/tr.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\n\n// import { HdsAdvancedTableScopeValues } from './types.ts';\nimport type {\n HdsAdvancedTableScope,\n HdsAdvancedTableThSortOrder,\n} from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\nimport type { HdsAdvancedTableSignature } from './index.ts';\nimport type { HdsAdvancedTableThSelectableSignature } from './th-selectable.ts';\nimport type HdsAdvancedTableRow from './models/row.ts';\n\nexport interface BaseHdsAdvancedTableTrSignature {\n Args: {\n selectableColumnKey?: HdsAdvancedTableSignature['Args']['selectableColumnKey'];\n isLastRow?: boolean;\n isSelectable?: boolean;\n isSelected?: boolean;\n isParentRow?: boolean;\n data?: HdsAdvancedTableRow;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsAdvancedTableScope;\n sortBySelectedOrder?: HdsAdvancedTableThSortOrder;\n depth?: number;\n didInsert?: (\n checkbox: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n onSelectionChange?: (\n checkbox?: HdsFormCheckboxBaseSignature['Element'],\n selectionKey?: string\n ) => void;\n willDestroy?: () => void;\n onClickSortBySelected?: HdsAdvancedTableThSelectableSignature['Args']['onClickSortBySelected'];\n displayRow?: boolean;\n hasStickyColumn?: boolean;\n isStickyColumnPinned?: boolean;\n };\n Blocks: {\n default?: [\n {\n orderedCells?: HdsAdvancedTableRow['cells'];\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\n/*\n * NOTE: There is currently an issue with `WithBoundArgs` or Glint that causes a typing error where @selectionKey is set as always required.\n *\n * Until this is fixed, we are holding off on doing a union with the SelectableHdsAdvancedTableTrArgs\n */\n\n// Extended interface for selectable rows\n// export interface SelectableHdsAdvancedTableTrArgs\n// extends BaseHdsAdvancedTableTrSignature {\n// Args: BaseHdsAdvancedTableTrSignature['Args'] & {\n// isSelectable: true;\n// selectionScope?: HdsAdvancedTableScopeValues.Row;\n// selectionKey: string; // Now required for selectable rows\n// };\n// }\n\n// Union type to combine both possible states\nexport type HdsAdvancedTableTrSignature = BaseHdsAdvancedTableTrSignature;\n// | SelectableHdsAdvancedTableTrArgs;\n\nexport default class HdsAdvancedTableTr extends Component<HdsAdvancedTableTrSignature> {\n get selectionKey(): string | undefined {\n if (this.args.isSelectable && this.args.selectionScope === 'row') {\n assert(\n `@selectionKey must be defined on Table::Tr or B.Tr when @isSelectable is true`,\n this.args.selectionKey\n );\n return this.args.selectionKey;\n }\n return undefined;\n }\n\n get classNames(): string {\n const { depth, isLastRow, isParentRow, displayRow } = this.args;\n const classes = ['hds-advanced-table__tr'];\n\n if (depth && depth > 0) {\n classes.push('hds-advanced-table__tr--nested');\n }\n\n if (isParentRow) {\n classes.push('hds-advanced-table__tr--parent-row');\n }\n\n if (displayRow === false) {\n classes.push('hds-advanced-table__tr--hidden');\n }\n\n if (isLastRow) {\n classes.push('hds-advanced-table__tr--last-row');\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["HdsAdvancedTableTr","Component","selectionKey","args","isSelectable","selectionScope","assert","undefined","classNames","depth","isLastRow","isParentRow","displayRow","classes","push","join","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAsEA;;AAEe,MAAMA,kBAAkB,SAASC,SAAS,CAA8B;EACrF,IAAIC,YAAYA,GAAuB;AACrC,IAAA,IAAI,IAAI,CAACC,IAAI,CAACC,YAAY,IAAI,IAAI,CAACD,IAAI,CAACE,cAAc,KAAK,KAAK,EAAE;MAChEC,MAAM,CACJ,+EAA+E,EAC/E,IAAI,CAACH,IAAI,CAACD,YACZ,CAAC;AACD,MAAA,OAAO,IAAI,CAACC,IAAI,CAACD,YAAY;AAC/B,IAAA;AACA,IAAA,OAAOK,SAAS;AAClB,EAAA;EAEA,IAAIC,UAAUA,GAAW;IACvB,MAAM;MAAEC,KAAK;MAAEC,SAAS;MAAEC,WAAW;AAAEC,MAAAA;KAAY,GAAG,IAAI,CAACT,IAAI;AAC/D,IAAA,MAAMU,OAAO,GAAG,CAAC,wBAAwB,CAAC;AAE1C,IAAA,IAAIJ,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;AACtBI,MAAAA,OAAO,CAACC,IAAI,CAAC,gCAAgC,CAAC;AAChD,IAAA;AAEA,IAAA,IAAIH,WAAW,EAAE;AACfE,MAAAA,OAAO,CAACC,IAAI,CAAC,oCAAoC,CAAC;AACpD,IAAA;IAEA,IAAIF,UAAU,KAAK,KAAK,EAAE;AACxBC,MAAAA,OAAO,CAACC,IAAI,CAAC,gCAAgC,CAAC;AAChD,IAAA;AAEA,IAAA,IAAIJ,SAAS,EAAE;AACbG,MAAAA,OAAO,CAACC,IAAI,CAAC,kCAAkC,CAAC;AAClD,IAAA;AAEA,IAAA,OAAOD,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;AACF;AAACC,oBAAA,CAAAC,QAAA,EAlCoBjB,kBAAkB,CAAA;;;;"}
|
|
@@ -51,6 +51,11 @@ let HdsAdvancedTableVerticalAlignmentValues = /*#__PURE__*/function (HdsAdvanced
|
|
|
51
51
|
HdsAdvancedTableVerticalAlignmentValues["Top"] = "top";
|
|
52
52
|
return HdsAdvancedTableVerticalAlignmentValues;
|
|
53
53
|
}({});
|
|
54
|
+
let HdsAdvancedTableColumnReorderSideValues = /*#__PURE__*/function (HdsAdvancedTableColumnReorderSideValues) {
|
|
55
|
+
HdsAdvancedTableColumnReorderSideValues["Left"] = "left";
|
|
56
|
+
HdsAdvancedTableColumnReorderSideValues["Right"] = "right";
|
|
57
|
+
return HdsAdvancedTableColumnReorderSideValues;
|
|
58
|
+
}({});
|
|
54
59
|
|
|
55
|
-
export { HdsAdvancedTableDensityValues, HdsAdvancedTableHorizontalAlignmentValues, HdsAdvancedTableScopeValues, HdsAdvancedTableThExpandIconValues, HdsAdvancedTableThSortOrderIconValues, HdsAdvancedTableThSortOrderLabelValues, HdsAdvancedTableThSortOrderValues, HdsAdvancedTableVerticalAlignmentValues };
|
|
60
|
+
export { HdsAdvancedTableColumnReorderSideValues, HdsAdvancedTableDensityValues, HdsAdvancedTableHorizontalAlignmentValues, HdsAdvancedTableScopeValues, HdsAdvancedTableThExpandIconValues, HdsAdvancedTableThSortOrderIconValues, HdsAdvancedTableThSortOrderLabelValues, HdsAdvancedTableThSortOrderValues, HdsAdvancedTableVerticalAlignmentValues };
|
|
56
61
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/components/hds/advanced-table/types.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\n\nexport enum HdsAdvancedTableDensityValues {\n Default = 'default',\n Medium = 'medium',\n Short = 'short',\n Tall = 'tall',\n}\nexport type HdsAdvancedTableDensities = `${HdsAdvancedTableDensityValues}`;\n\nexport enum HdsAdvancedTableHorizontalAlignmentValues {\n Center = 'center',\n Left = 'left',\n Right = 'right',\n}\nexport type HdsAdvancedTableHorizontalAlignment =\n `${HdsAdvancedTableHorizontalAlignmentValues}`;\n\nexport enum HdsAdvancedTableScopeValues {\n Col = 'col',\n Row = 'row',\n}\nexport type HdsAdvancedTableScope = `${HdsAdvancedTableScopeValues}`;\n\nexport enum HdsAdvancedTableThExpandIconValues {\n ChevronUp = 'chevron-up',\n ChevronDown = 'chevron-down',\n UnfoldOpen = 'unfold-open',\n UnfoldClose = 'unfold-close',\n}\nexport type HdsAdvancedTableThSortExpandIcons =\n `${HdsAdvancedTableThExpandIconValues}`;\n\nexport enum HdsAdvancedTableThSortOrderIconValues {\n ArrowDown = 'arrow-down',\n ArrowUp = 'arrow-up',\n SwapVertical = 'swap-vertical',\n}\nexport type HdsAdvancedTableThSortOrderIcons =\n `${HdsAdvancedTableThSortOrderIconValues}`;\n\nexport enum HdsAdvancedTableThSortOrderLabelValues {\n Asc = 'ascending',\n Desc = 'descending',\n None = 'none',\n}\nexport type HdsAdvancedTableThSortOrderLabels =\n `${HdsAdvancedTableThSortOrderLabelValues}`;\n\nexport enum HdsAdvancedTableThSortOrderValues {\n Asc = 'asc',\n Desc = 'desc',\n}\nexport type HdsAdvancedTableThSortOrder =\n `${HdsAdvancedTableThSortOrderValues}`;\n\nexport enum HdsAdvancedTableVerticalAlignmentValues {\n Baseline = 'baseline',\n Middle = 'middle',\n Top = 'top',\n}\nexport type HdsAdvancedTableVerticalAlignment =\n `${HdsAdvancedTableVerticalAlignmentValues}`;\n\nexport type HdsAdvancedTableSelectableRow = {\n checkbox: HdsFormCheckboxBaseSignature['Element'];\n selectionKey: string;\n};\n\nexport type HdsAdvancedTableExpandState = boolean;\n\ninterface BaseHdsAdvancedTableColumn {\n align?: HdsAdvancedTableHorizontalAlignment;\n isVisuallyHidden?: boolean;\n label: string;\n sortingFunction?: HdsAdvancedTableSortingFunction<unknown>;\n tooltip?: string;\n width?: string;\n minWidth?: `${number}px`;\n maxWidth?: `${number}px`;\n}\n\ninterface SortableHdsAdvancedTableColumn extends BaseHdsAdvancedTableColumn {\n isSortable: true;\n key: string;\n}\n\ninterface NonSortableHdsAdvancedTableColumn extends BaseHdsAdvancedTableColumn {\n isSortable?: false;\n key?: string;\n isExpandable?: boolean;\n}\n\nexport type HdsAdvancedTableColumn =\n | SortableHdsAdvancedTableColumn\n | NonSortableHdsAdvancedTableColumn;\n\nexport type HdsAdvancedTableSortingFunction<T> = (a: T, b: T) => number;\n\nexport interface HdsAdvancedTableOnSelectionChangeSignature {\n selectionKey?: string;\n selectionCheckboxElement?: HdsFormCheckboxBaseSignature['Element'];\n selectedRowsKeys: string[];\n selectableRowsStates: {\n selectionKey: string;\n isSelected?: boolean;\n }[];\n}\n\nexport type HdsAdvancedTableModel = Array<Record<string, unknown>>;\n"],"names":["HdsAdvancedTableDensityValues","HdsAdvancedTableHorizontalAlignmentValues","HdsAdvancedTableScopeValues","HdsAdvancedTableThExpandIconValues","HdsAdvancedTableThSortOrderIconValues","HdsAdvancedTableThSortOrderLabelValues","HdsAdvancedTableThSortOrderValues","HdsAdvancedTableVerticalAlignmentValues"],"mappings":"AAAA;AACA;AACA;AACA;;AAIA,IAAYA,6BAA6B,0BAA7BA,6BAA6B,EAAA;EAA7BA,6BAA6B,CAAA,SAAA,CAAA,GAAA,SAAA;EAA7BA,6BAA6B,CAAA,QAAA,CAAA,GAAA,QAAA;EAA7BA,6BAA6B,CAAA,OAAA,CAAA,GAAA,OAAA;EAA7BA,6BAA6B,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAA7BA,6BAA6B;AAAA,CAAA,CAAA,EAAA;AAQzC,IAAYC,yCAAyC,0BAAzCA,yCAAyC,EAAA;EAAzCA,yCAAyC,CAAA,QAAA,CAAA,GAAA,QAAA;EAAzCA,yCAAyC,CAAA,MAAA,CAAA,GAAA,MAAA;EAAzCA,yCAAyC,CAAA,OAAA,CAAA,GAAA,OAAA;AAAA,EAAA,OAAzCA,yCAAyC;AAAA,CAAA,CAAA,EAAA;AAQrD,IAAYC,2BAA2B,0BAA3BA,2BAA2B,EAAA;EAA3BA,2BAA2B,CAAA,KAAA,CAAA,GAAA,KAAA;EAA3BA,2BAA2B,CAAA,KAAA,CAAA,GAAA,KAAA;AAAA,EAAA,OAA3BA,2BAA2B;AAAA,CAAA,CAAA,EAAA;AAMvC,IAAYC,kCAAkC,0BAAlCA,kCAAkC,EAAA;EAAlCA,kCAAkC,CAAA,WAAA,CAAA,GAAA,YAAA;EAAlCA,kCAAkC,CAAA,aAAA,CAAA,GAAA,cAAA;EAAlCA,kCAAkC,CAAA,YAAA,CAAA,GAAA,aAAA;EAAlCA,kCAAkC,CAAA,aAAA,CAAA,GAAA,cAAA;AAAA,EAAA,OAAlCA,kCAAkC;AAAA,CAAA,CAAA,EAAA;AAS9C,IAAYC,qCAAqC,0BAArCA,qCAAqC,EAAA;EAArCA,qCAAqC,CAAA,WAAA,CAAA,GAAA,YAAA;EAArCA,qCAAqC,CAAA,SAAA,CAAA,GAAA,UAAA;EAArCA,qCAAqC,CAAA,cAAA,CAAA,GAAA,eAAA;AAAA,EAAA,OAArCA,qCAAqC;AAAA,CAAA,CAAA,EAAA;AAQjD,IAAYC,sCAAsC,0BAAtCA,sCAAsC,EAAA;EAAtCA,sCAAsC,CAAA,KAAA,CAAA,GAAA,WAAA;EAAtCA,sCAAsC,CAAA,MAAA,CAAA,GAAA,YAAA;EAAtCA,sCAAsC,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAAtCA,sCAAsC;AAAA,CAAA,CAAA,EAAA;AAQlD,IAAYC,iCAAiC,0BAAjCA,iCAAiC,EAAA;EAAjCA,iCAAiC,CAAA,KAAA,CAAA,GAAA,KAAA;EAAjCA,iCAAiC,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAAjCA,iCAAiC;AAAA,CAAA,CAAA,EAAA;AAO7C,IAAYC,uCAAuC,0BAAvCA,uCAAuC,EAAA;EAAvCA,uCAAuC,CAAA,UAAA,CAAA,GAAA,UAAA;EAAvCA,uCAAuC,CAAA,QAAA,CAAA,GAAA,QAAA;EAAvCA,uCAAuC,CAAA,KAAA,CAAA,GAAA,KAAA;AAAA,EAAA,OAAvCA,uCAAuC;AAAA,CAAA,CAAA,EAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/hds/advanced-table/types.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base.ts';\n\nexport enum HdsAdvancedTableDensityValues {\n Default = 'default',\n Medium = 'medium',\n Short = 'short',\n Tall = 'tall',\n}\nexport type HdsAdvancedTableDensities = `${HdsAdvancedTableDensityValues}`;\n\nexport enum HdsAdvancedTableHorizontalAlignmentValues {\n Center = 'center',\n Left = 'left',\n Right = 'right',\n}\nexport type HdsAdvancedTableHorizontalAlignment =\n `${HdsAdvancedTableHorizontalAlignmentValues}`;\n\nexport enum HdsAdvancedTableScopeValues {\n Col = 'col',\n Row = 'row',\n}\nexport type HdsAdvancedTableScope = `${HdsAdvancedTableScopeValues}`;\n\nexport enum HdsAdvancedTableThExpandIconValues {\n ChevronUp = 'chevron-up',\n ChevronDown = 'chevron-down',\n UnfoldOpen = 'unfold-open',\n UnfoldClose = 'unfold-close',\n}\nexport type HdsAdvancedTableThSortExpandIcons =\n `${HdsAdvancedTableThExpandIconValues}`;\n\nexport enum HdsAdvancedTableThSortOrderIconValues {\n ArrowDown = 'arrow-down',\n ArrowUp = 'arrow-up',\n SwapVertical = 'swap-vertical',\n}\nexport type HdsAdvancedTableThSortOrderIcons =\n `${HdsAdvancedTableThSortOrderIconValues}`;\n\nexport enum HdsAdvancedTableThSortOrderLabelValues {\n Asc = 'ascending',\n Desc = 'descending',\n None = 'none',\n}\nexport type HdsAdvancedTableThSortOrderLabels =\n `${HdsAdvancedTableThSortOrderLabelValues}`;\n\nexport enum HdsAdvancedTableThSortOrderValues {\n Asc = 'asc',\n Desc = 'desc',\n}\nexport type HdsAdvancedTableThSortOrder =\n `${HdsAdvancedTableThSortOrderValues}`;\n\nexport enum HdsAdvancedTableVerticalAlignmentValues {\n Baseline = 'baseline',\n Middle = 'middle',\n Top = 'top',\n}\nexport type HdsAdvancedTableVerticalAlignment =\n `${HdsAdvancedTableVerticalAlignmentValues}`;\n\nexport type HdsAdvancedTableSelectableRow = {\n checkbox: HdsFormCheckboxBaseSignature['Element'];\n selectionKey: string;\n};\n\nexport type HdsAdvancedTableExpandState = boolean;\n\ninterface BaseHdsAdvancedTableColumn {\n align?: HdsAdvancedTableHorizontalAlignment;\n isVisuallyHidden?: boolean;\n label: string;\n sortingFunction?: HdsAdvancedTableSortingFunction<unknown>;\n tooltip?: string;\n width?: string;\n minWidth?: `${number}px`;\n maxWidth?: `${number}px`;\n}\n\ninterface SortableHdsAdvancedTableColumn extends BaseHdsAdvancedTableColumn {\n isSortable: true;\n key: string;\n}\n\ninterface NonSortableHdsAdvancedTableColumn extends BaseHdsAdvancedTableColumn {\n isSortable?: false;\n key?: string;\n isExpandable?: boolean;\n}\n\nexport type HdsAdvancedTableColumn =\n | SortableHdsAdvancedTableColumn\n | NonSortableHdsAdvancedTableColumn;\n\nexport type HdsAdvancedTableSortingFunction<T> = (a: T, b: T) => number;\n\nexport interface HdsAdvancedTableOnSelectionChangeSignature {\n selectionKey?: string;\n selectionCheckboxElement?: HdsFormCheckboxBaseSignature['Element'];\n selectedRowsKeys: string[];\n selectableRowsStates: {\n selectionKey: string;\n isSelected?: boolean;\n }[];\n}\n\nexport type HdsAdvancedTableModel = Array<Record<string, unknown>>;\n\nexport type HdsAdvancedTableColumnResizeCallback = (\n columnKey: string,\n newWidth?: string\n) => void;\n\nexport type HdsAdvancedTableColumnReorderCallback = ({\n column,\n newOrder,\n insertedAt,\n}: {\n column: HdsAdvancedTableColumn;\n newOrder: string[];\n insertedAt: number;\n}) => void;\n\nexport interface HdsAdvancedTableCell {\n columnKey: string;\n content: unknown;\n}\n\nexport enum HdsAdvancedTableColumnReorderSideValues {\n Left = 'left',\n Right = 'right',\n}\n\nexport type HdsAdvancedTableColumnReorderSide =\n `${HdsAdvancedTableColumnReorderSideValues}`;\n"],"names":["HdsAdvancedTableDensityValues","HdsAdvancedTableHorizontalAlignmentValues","HdsAdvancedTableScopeValues","HdsAdvancedTableThExpandIconValues","HdsAdvancedTableThSortOrderIconValues","HdsAdvancedTableThSortOrderLabelValues","HdsAdvancedTableThSortOrderValues","HdsAdvancedTableVerticalAlignmentValues","HdsAdvancedTableColumnReorderSideValues"],"mappings":"AAAA;AACA;AACA;AACA;;AAIA,IAAYA,6BAA6B,0BAA7BA,6BAA6B,EAAA;EAA7BA,6BAA6B,CAAA,SAAA,CAAA,GAAA,SAAA;EAA7BA,6BAA6B,CAAA,QAAA,CAAA,GAAA,QAAA;EAA7BA,6BAA6B,CAAA,OAAA,CAAA,GAAA,OAAA;EAA7BA,6BAA6B,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAA7BA,6BAA6B;AAAA,CAAA,CAAA,EAAA;AAQzC,IAAYC,yCAAyC,0BAAzCA,yCAAyC,EAAA;EAAzCA,yCAAyC,CAAA,QAAA,CAAA,GAAA,QAAA;EAAzCA,yCAAyC,CAAA,MAAA,CAAA,GAAA,MAAA;EAAzCA,yCAAyC,CAAA,OAAA,CAAA,GAAA,OAAA;AAAA,EAAA,OAAzCA,yCAAyC;AAAA,CAAA,CAAA,EAAA;AAQrD,IAAYC,2BAA2B,0BAA3BA,2BAA2B,EAAA;EAA3BA,2BAA2B,CAAA,KAAA,CAAA,GAAA,KAAA;EAA3BA,2BAA2B,CAAA,KAAA,CAAA,GAAA,KAAA;AAAA,EAAA,OAA3BA,2BAA2B;AAAA,CAAA,CAAA,EAAA;AAMvC,IAAYC,kCAAkC,0BAAlCA,kCAAkC,EAAA;EAAlCA,kCAAkC,CAAA,WAAA,CAAA,GAAA,YAAA;EAAlCA,kCAAkC,CAAA,aAAA,CAAA,GAAA,cAAA;EAAlCA,kCAAkC,CAAA,YAAA,CAAA,GAAA,aAAA;EAAlCA,kCAAkC,CAAA,aAAA,CAAA,GAAA,cAAA;AAAA,EAAA,OAAlCA,kCAAkC;AAAA,CAAA,CAAA,EAAA;AAS9C,IAAYC,qCAAqC,0BAArCA,qCAAqC,EAAA;EAArCA,qCAAqC,CAAA,WAAA,CAAA,GAAA,YAAA;EAArCA,qCAAqC,CAAA,SAAA,CAAA,GAAA,UAAA;EAArCA,qCAAqC,CAAA,cAAA,CAAA,GAAA,eAAA;AAAA,EAAA,OAArCA,qCAAqC;AAAA,CAAA,CAAA,EAAA;AAQjD,IAAYC,sCAAsC,0BAAtCA,sCAAsC,EAAA;EAAtCA,sCAAsC,CAAA,KAAA,CAAA,GAAA,WAAA;EAAtCA,sCAAsC,CAAA,MAAA,CAAA,GAAA,YAAA;EAAtCA,sCAAsC,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAAtCA,sCAAsC;AAAA,CAAA,CAAA,EAAA;AAQlD,IAAYC,iCAAiC,0BAAjCA,iCAAiC,EAAA;EAAjCA,iCAAiC,CAAA,KAAA,CAAA,GAAA,KAAA;EAAjCA,iCAAiC,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAAjCA,iCAAiC;AAAA,CAAA,CAAA,EAAA;AAO7C,IAAYC,uCAAuC,0BAAvCA,uCAAuC,EAAA;EAAvCA,uCAAuC,CAAA,UAAA,CAAA,GAAA,UAAA;EAAvCA,uCAAuC,CAAA,QAAA,CAAA,GAAA,QAAA;EAAvCA,uCAAuC,CAAA,KAAA,CAAA,GAAA,KAAA;AAAA,EAAA,OAAvCA,uCAAuC;AAAA,CAAA,CAAA,EAAA;AA2EnD,IAAYC,uCAAuC,0BAAvCA,uCAAuC,EAAA;EAAvCA,uCAAuC,CAAA,MAAA,CAAA,GAAA,MAAA;EAAvCA,uCAAuC,CAAA,OAAA,CAAA,GAAA,OAAA;AAAA,EAAA,OAAvCA,uCAAuC;AAAA,CAAA,CAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { buildWaiter } from '@ember/test-waiters';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Copyright (c) HashiCorp, Inc.
|
|
5
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const waiter = buildWaiter('raf-waiter');
|
|
9
|
+
|
|
10
|
+
// a utility that wraps requestAnimationFrame and integrates with Ember's test waiters
|
|
11
|
+
function requestAnimationFrameWaiter(callback) {
|
|
12
|
+
const token = waiter.beginAsync();
|
|
13
|
+
return requestAnimationFrame(() => {
|
|
14
|
+
try {
|
|
15
|
+
callback();
|
|
16
|
+
} finally {
|
|
17
|
+
waiter.endAsync(token);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { requestAnimationFrameWaiter };
|
|
23
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/components/hds/advanced-table/utils.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { buildWaiter } from '@ember/test-waiters';\n\nconst waiter = buildWaiter('raf-waiter');\n\n// a utility that wraps requestAnimationFrame and integrates with Ember's test waiters\nexport function requestAnimationFrameWaiter(callback: () => void) {\n const token = waiter.beginAsync();\n\n return requestAnimationFrame(() => {\n try {\n callback();\n } finally {\n waiter.endAsync(token);\n }\n });\n}\n"],"names":["waiter","buildWaiter","requestAnimationFrameWaiter","callback","token","beginAsync","requestAnimationFrame","endAsync"],"mappings":";;AAAA;AACA;AACA;AACA;;AAIA,MAAMA,MAAM,GAAGC,WAAW,CAAC,YAAY,CAAC;;AAExC;AACO,SAASC,2BAA2BA,CAACC,QAAoB,EAAE;AAChE,EAAA,MAAMC,KAAK,GAAGJ,MAAM,CAACK,UAAU,EAAE;EAEjC,OAAOC,qBAAqB,CAAC,MAAM;IACjC,IAAI;AACFH,MAAAA,QAAQ,EAAE;AACZ,IAAA,CAAC,SAAS;AACRH,MAAAA,MAAM,CAACO,QAAQ,CAACH,KAAK,CAAC;AACxB,IAAA;AACF,EAAA,CAAC,CAAC;AACJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","sources":["../../../../../src/components/hds/dropdown/toggle/icon.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { HdsDropdownToggleIconSizeValues } from './types.ts';\n\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsDropdownToggleIconSizes } from './types';\nimport type { ModifierLike } from '@glint/template';\nimport type { SetupPrimitiveToggleModifier } from '../../popover-primitive/index.ts';\nimport type Owner from '@ember/owner';\n\nexport const DEFAULT_SIZE = HdsDropdownToggleIconSizeValues.Medium;\nexport const SIZES:
|
|
1
|
+
{"version":3,"file":"icon.js","sources":["../../../../../src/components/hds/dropdown/toggle/icon.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { HdsDropdownToggleIconSizeValues } from './types.ts';\n\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsDropdownToggleIconSizes } from './types';\nimport type { ModifierLike } from '@glint/template';\nimport type { SetupPrimitiveToggleModifier } from '../../popover-primitive/index.ts';\nimport type Owner from '@ember/owner';\n\nexport const DEFAULT_SIZE = HdsDropdownToggleIconSizeValues.Medium;\nexport const SIZES: HdsDropdownToggleIconSizes[] = Object.values(\n HdsDropdownToggleIconSizeValues\n);\n\nexport interface HdsDropdownToggleIconSignature {\n Args: {\n hasChevron?: boolean;\n icon?: HdsIconSignature['Args']['name'];\n imageSrc?: string;\n isOpen?: boolean;\n size?: HdsDropdownToggleIconSizes;\n text: string;\n setupPrimitiveToggle?: ModifierLike<SetupPrimitiveToggleModifier>;\n };\n Element: HTMLButtonElement;\n}\n\nexport default class HdsDropdownToggleIcon extends Component<HdsDropdownToggleIconSignature> {\n @tracked private _hasImage = true;\n\n constructor(owner: Owner, args: HdsDropdownToggleIconSignature['Args']) {\n super(owner, args);\n if (!(this.args.icon || this.args.imageSrc)) {\n assert(\n '@icon or @imageSrc must be defined for \"Hds::Dropdown::Toggle::Icon\"'\n );\n }\n }\n\n @action\n onDidUpdateImageSrc(): void {\n this._hasImage = true;\n }\n\n @action\n onImageLoadError(): void {\n this._hasImage = false;\n }\n\n /**\n * @param text\n * @type {string}\n * @description The text of the `aria-label` applied to the toggle\n */\n get text(): string {\n const { text } = this.args;\n\n assert(\n '@text for \"Hds::Dropdown::Toggle::Icon\" must have a valid value',\n text !== undefined\n );\n\n return text;\n }\n\n /**\n * @param size\n * @type {string}\n * @default medium\n * @description The size of the button; acceptable values are `small` and `medium`\n */\n get size(): HdsDropdownToggleIconSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Dropdown::Toggle::Icon\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * @param iconSize\n * @type {string}\n * @default 24\n * @description ensures that the correct icon size is used\n */\n get iconSize(): HdsIconSignature['Args']['size'] {\n if (this.args.size === 'medium' && !this.hasChevron) {\n // in this special case we use a larger SVG\n return '24';\n } else {\n // this is the default size (notice: for the \"small\" variant with chevron, we set the actual size to `12px` via CSS)\n return '16';\n }\n }\n\n /**\n * Indicates if a dropdown chevron icon should be displayed; should be displayed unless the \"more-horizontal\" icon is used.\n *\n * @param hasChevron\n * @type {boolean}\n * @default true\n */\n get hasChevron(): boolean {\n return this.args.hasChevron ?? true;\n }\n\n /**\n * Get the class names to apply to the component.\n * @method ToggleIcon#classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-dropdown-toggle-icon'];\n\n // add a class based on the @size argument\n classes.push(`hds-dropdown-toggle-icon--size-${this.size}`);\n\n // add a class based on the @isOpen argument\n if (this.args.isOpen) {\n classes.push('hds-dropdown-toggle-icon--is-open');\n }\n\n // add a class based on the @hasChevron argument\n if (this.hasChevron) {\n classes.push('hds-dropdown-toggle-icon--has-chevron');\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_SIZE","HdsDropdownToggleIconSizeValues","Medium","SIZES","Object","values","HdsDropdownToggleIcon","Component","g","prototype","tracked","i","void 0","constructor","owner","args","icon","imageSrc","assert","onDidUpdateImageSrc","_hasImage","n","action","onImageLoadError","text","undefined","size","join","includes","iconSize","hasChevron","classNames","classes","push","isOpen","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ import { action } from '@ember/object';
|
|
|
4
4
|
import { assert } from '@ember/debug';
|
|
5
5
|
import { getElementId } from '../../../utils/hds-get-element-id.js';
|
|
6
6
|
import { buildWaiter } from '@ember/test-waiters';
|
|
7
|
+
import { modifier } from 'ember-modifier';
|
|
8
|
+
import { registerDestructor } from '@ember/destroyable';
|
|
7
9
|
import { HdsFlyoutSizesValues } from './types.js';
|
|
8
10
|
import '../dialog-primitive/body.js';
|
|
9
11
|
import '../dialog-primitive/description.js';
|
|
@@ -13,7 +15,7 @@ import { precompileTemplate } from '@ember/template-compilation';
|
|
|
13
15
|
import { g, i, n } from 'decorator-transforms/runtime';
|
|
14
16
|
import { setComponentTemplate } from '@ember/component';
|
|
15
17
|
|
|
16
|
-
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::DialogPrimitive::Wrapper\n class={{this.classNames}}\n ...attributes\n aria-labelledby={{this.id}}\n {{
|
|
18
|
+
var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<Hds::DialogPrimitive::Wrapper\n class={{this.classNames}}\n ...attributes\n aria-labelledby={{this.id}}\n {{this._registerDialog}}\n {{! @glint-expect-error - https://github.com/josemarluedke/ember-focus-trap/issues/86 }}\n {{focus-trap isActive=this._isOpen focusTrapOptions=(hash onDeactivate=this.onDismiss)}}\n>\n <:header>\n {{yield\n (hash\n Header=(component\n \"hds/dialog-primitive/header\"\n id=this.id\n onDismiss=this.onDismiss\n contextualClassPrefix=\"hds-flyout\"\n titleTag=\"h1\"\n )\n Description=(component \"hds/dialog-primitive/description\" contextualClass=\"hds-flyout__description\")\n )\n }}\n </:header>\n <:body>\n {{yield (hash Body=(component \"hds/dialog-primitive/body\" contextualClass=\"hds-flyout__body\"))}}\n </:body>\n <:footer>\n {{yield\n (hash\n Footer=(component \"hds/dialog-primitive/footer\" onDismiss=this.onDismiss contextualClass=\"hds-flyout__footer\")\n )\n }}\n </:footer>\n</Hds::DialogPrimitive::Wrapper>\n\n{{#if this._isOpen}}\n <Hds::DialogPrimitive::Overlay @contextualClass=\"hds-flyout__overlay\" />\n{{/if}}");
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* Copyright (c) HashiCorp, Inc.
|
|
@@ -36,6 +38,20 @@ class HdsFlyout extends Component {
|
|
|
36
38
|
_element;
|
|
37
39
|
_body;
|
|
38
40
|
_bodyInitialOverflowValue = '';
|
|
41
|
+
_clickHandler;
|
|
42
|
+
constructor(owner, args) {
|
|
43
|
+
super(owner, args);
|
|
44
|
+
registerDestructor(this, () => {
|
|
45
|
+
// if the <dialog> is removed from the dom while open we emulate the close event
|
|
46
|
+
if (this._element && this._isOpen) {
|
|
47
|
+
this._element.dispatchEvent(new Event('close'));
|
|
48
|
+
this._element.removeEventListener('close',
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
50
|
+
this.registerOnCloseCallback, true);
|
|
51
|
+
}
|
|
52
|
+
document.removeEventListener('click', this._clickHandler, true);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
39
55
|
|
|
40
56
|
/**
|
|
41
57
|
* Sets the size of the flyout
|
|
@@ -81,7 +97,7 @@ class HdsFlyout extends Component {
|
|
|
81
97
|
static {
|
|
82
98
|
n(this.prototype, "registerOnCloseCallback", [action]);
|
|
83
99
|
}
|
|
84
|
-
|
|
100
|
+
_registerDialog = modifier(element => {
|
|
85
101
|
// Store references of `<dialog>` and `<body>` elements
|
|
86
102
|
this._element = element;
|
|
87
103
|
this._body = document.body;
|
|
@@ -98,10 +114,17 @@ class HdsFlyout extends Component {
|
|
|
98
114
|
if (!this._element.open) {
|
|
99
115
|
this.open();
|
|
100
116
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
117
|
+
this._clickHandler = event => {
|
|
118
|
+
// check if the click is outside the flyout and the flyout is open
|
|
119
|
+
if (!this._element.contains(event.target) && this._isOpen) {
|
|
120
|
+
void this.onDismiss();
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
document.addEventListener('click', this._clickHandler, {
|
|
124
|
+
capture: true,
|
|
125
|
+
passive: false
|
|
126
|
+
});
|
|
127
|
+
});
|
|
105
128
|
willDestroyNode() {
|
|
106
129
|
if (this._element) {
|
|
107
130
|
this._element.removeEventListener('close',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/flyout/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { getElementId } from '../../../utils/hds-get-element-id.ts';\nimport { buildWaiter } from '@ember/test-waiters';\nimport type { WithBoundArgs } from '@glint/template';\n\nimport type { HdsFlyoutSizes } from './types.ts';\n\nimport { HdsFlyoutSizesValues } from './types.ts';\nimport HdsDialogPrimitiveBodyComponent from '../dialog-primitive/body.ts';\nimport HdsDialogPrimitiveDescriptionComponent from '../dialog-primitive/description.ts';\nimport HdsDialogPrimitiveFooterComponent from '../dialog-primitive/footer.ts';\nimport HdsDialogPrimitiveHeaderComponent from '../dialog-primitive/header.ts';\n\nconst waiter = buildWaiter('@hashicorp/design-system-components:flyout');\n\nexport const DEFAULT_SIZE = HdsFlyoutSizesValues.Medium;\nexport const DEFAULT_HAS_OVERLAY = true;\nexport const SIZES: HdsFlyoutSizes[] = Object.values(HdsFlyoutSizesValues);\n\nexport interface HdsFlyoutSignature {\n Args: {\n size?: HdsFlyoutSizes;\n returnFocusTo?: string;\n onOpen?: () => void;\n onClose?: (event: Event) => void;\n };\n Blocks: {\n default: [\n {\n Header?: WithBoundArgs<\n typeof HdsDialogPrimitiveHeaderComponent,\n 'id' | 'onDismiss' | 'contextualClassPrefix'\n >;\n Description?: WithBoundArgs<\n typeof HdsDialogPrimitiveDescriptionComponent,\n 'contextualClass'\n >;\n Body?: WithBoundArgs<\n typeof HdsDialogPrimitiveBodyComponent,\n 'contextualClass'\n >;\n Footer?: WithBoundArgs<\n typeof HdsDialogPrimitiveFooterComponent,\n 'onDismiss' | 'contextualClass'\n >;\n },\n ];\n };\n Element: HTMLDialogElement;\n}\n\nexport default class HdsFlyout extends Component<HdsFlyoutSignature> {\n @tracked private _isOpen = false;\n // TODO: make this property private; currently blocked by our consumers relying on it despite not being part of the public API: https://github.com/hashicorp/cloud-ui/blob/main/engines/waypoint/addon/components/preview-pane.ts#L15\n // private _element!: HTMLDialogElement;\n _element!: HTMLDialogElement;\n private _body!: HTMLElement;\n private _bodyInitialOverflowValue = '';\n\n /**\n * Sets the size of the flyout\n * Accepted values: medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsFlyoutSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Flyout\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * Calculates the unique ID to assign to the title\n */\n get id(): string {\n return getElementId(this);\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-flyout'];\n\n // add a class based on the @size argument\n classes.push(`hds-flyout--size-${this.size}`);\n\n return classes.join(' ');\n }\n\n @action registerOnCloseCallback(event: Event) {\n if (this.args.onClose && typeof this.args.onClose === 'function') {\n this.args.onClose(event);\n }\n\n this._isOpen = false;\n }\n\n @action\n didInsert(element: HTMLDialogElement): void {\n // Store references of `<dialog>` and `<body>` elements\n this._element = element;\n this._body = document.body;\n\n if (this._body) {\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this._bodyInitialOverflowValue =\n this._body.style.getPropertyValue('overflow');\n }\n\n // Register \"onClose\" callback function to be called when a native 'close' event is dispatched\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this._element.addEventListener('close', this.registerOnCloseCallback, true);\n\n // If the flyout dialog is not already open\n if (!this._element.open) {\n this.open();\n }\n }\n\n @action\n willDestroyNode(): void {\n if (this._element) {\n this._element.removeEventListener(\n 'close',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.registerOnCloseCallback,\n true\n );\n }\n }\n\n @action\n open(): void {\n // Make flyout dialog visible using the native `showModal` method\n this._element.showModal();\n this._isOpen = true;\n\n // Prevent page from scrolling when the dialog is open\n if (this._body) this._body.style.setProperty('overflow', 'hidden');\n\n // Call \"onOpen\" callback function\n if (this.args.onOpen && typeof this.args.onOpen === 'function') {\n this.args.onOpen();\n }\n }\n\n @action\n // eslint-disable-next-line @typescript-eslint/require-await\n async onDismiss(): Promise<void> {\n // allow ember test helpers to be aware of when the `close` event fires\n // when using `click` or other helpers from '@ember/test-helpers'\n // Notice: this code will get stripped out in production builds (DEBUG evaluates to `true` in dev/test builds, but `false` in prod builds)\n if (this._element.open) {\n const token = waiter.beginAsync();\n const listener = () => {\n waiter.endAsync(token);\n this._element.removeEventListener('close', listener);\n };\n this._element.addEventListener('close', listener);\n }\n\n // Make flyout dialog invisible using the native `close` method\n this._element.close();\n\n // Reset page `overflow` property\n if (this._body) {\n this._body.style.removeProperty('overflow');\n if (this._bodyInitialOverflowValue === '') {\n if (this._body.style.length === 0) {\n this._body.removeAttribute('style');\n }\n } else {\n this._body.style.setProperty(\n 'overflow',\n this._bodyInitialOverflowValue\n );\n }\n }\n\n // Return focus to a specific element (if provided)\n if (this.args.returnFocusTo) {\n const initiator = document.getElementById(this.args.returnFocusTo);\n if (initiator) {\n initiator.focus();\n }\n }\n }\n}\n"],"names":["waiter","buildWaiter","DEFAULT_SIZE","HdsFlyoutSizesValues","Medium","DEFAULT_HAS_OVERLAY","SIZES","Object","values","HdsFlyout","Component","g","prototype","tracked","i","void 0","_element","_body","_bodyInitialOverflowValue","size","args","assert","join","includes","id","getElementId","classNames","classes","push","registerOnCloseCallback","event","onClose","_isOpen","n","action","didInsert","element","document","body","style","getPropertyValue","addEventListener","open","willDestroyNode","removeEventListener","showModal","setProperty","onOpen","onDismiss","token","beginAsync","listener","endAsync","close","removeProperty","length","removeAttribute","returnFocusTo","initiator","getElementById","focus","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/flyout/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { getElementId } from '../../../utils/hds-get-element-id.ts';\nimport { buildWaiter } from '@ember/test-waiters';\nimport type { WithBoundArgs } from '@glint/template';\nimport { modifier } from 'ember-modifier';\nimport { registerDestructor } from '@ember/destroyable';\nimport type Owner from '@ember/owner';\n\nimport type { HdsFlyoutSizes } from './types.ts';\n\nimport { HdsFlyoutSizesValues } from './types.ts';\nimport HdsDialogPrimitiveBodyComponent from '../dialog-primitive/body.ts';\nimport HdsDialogPrimitiveDescriptionComponent from '../dialog-primitive/description.ts';\nimport HdsDialogPrimitiveFooterComponent from '../dialog-primitive/footer.ts';\nimport HdsDialogPrimitiveHeaderComponent from '../dialog-primitive/header.ts';\n\nconst waiter = buildWaiter('@hashicorp/design-system-components:flyout');\n\nexport const DEFAULT_SIZE = HdsFlyoutSizesValues.Medium;\nexport const DEFAULT_HAS_OVERLAY = true;\nexport const SIZES: HdsFlyoutSizes[] = Object.values(HdsFlyoutSizesValues);\n\nexport interface HdsFlyoutSignature {\n Args: {\n size?: HdsFlyoutSizes;\n returnFocusTo?: string;\n onOpen?: () => void;\n onClose?: (event: Event) => void;\n };\n Blocks: {\n default: [\n {\n Header?: WithBoundArgs<\n typeof HdsDialogPrimitiveHeaderComponent,\n 'id' | 'onDismiss' | 'contextualClassPrefix'\n >;\n Description?: WithBoundArgs<\n typeof HdsDialogPrimitiveDescriptionComponent,\n 'contextualClass'\n >;\n Body?: WithBoundArgs<\n typeof HdsDialogPrimitiveBodyComponent,\n 'contextualClass'\n >;\n Footer?: WithBoundArgs<\n typeof HdsDialogPrimitiveFooterComponent,\n 'onDismiss' | 'contextualClass'\n >;\n },\n ];\n };\n Element: HTMLDialogElement;\n}\n\nexport default class HdsFlyout extends Component<HdsFlyoutSignature> {\n @tracked private _isOpen = false;\n // TODO: make this property private; currently blocked by our consumers relying on it despite not being part of the public API: https://github.com/hashicorp/cloud-ui/blob/main/engines/waypoint/addon/components/preview-pane.ts#L15\n // private _element!: HTMLDialogElement;\n _element!: HTMLDialogElement;\n private _body!: HTMLElement;\n private _bodyInitialOverflowValue = '';\n private _clickHandler!: (event: MouseEvent) => void;\n\n constructor(owner: Owner, args: HdsFlyoutSignature['Args']) {\n super(owner, args);\n\n registerDestructor(this, (): void => {\n // if the <dialog> is removed from the dom while open we emulate the close event\n if (this._element && this._isOpen) {\n this._element.dispatchEvent(new Event('close'));\n\n this._element.removeEventListener(\n 'close',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.registerOnCloseCallback,\n true\n );\n }\n\n document.removeEventListener('click', this._clickHandler, true);\n });\n }\n\n /**\n * Sets the size of the flyout\n * Accepted values: medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsFlyoutSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Flyout\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n /**\n * Calculates the unique ID to assign to the title\n */\n get id(): string {\n return getElementId(this);\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-flyout'];\n\n // add a class based on the @size argument\n classes.push(`hds-flyout--size-${this.size}`);\n\n return classes.join(' ');\n }\n\n @action registerOnCloseCallback(event: Event) {\n if (this.args.onClose && typeof this.args.onClose === 'function') {\n this.args.onClose(event);\n }\n\n this._isOpen = false;\n }\n\n private _registerDialog = modifier((element: HTMLDialogElement) => {\n // Store references of `<dialog>` and `<body>` elements\n this._element = element;\n this._body = document.body;\n\n if (this._body) {\n // Store the initial `overflow` value of `<body>` so we can reset to it\n this._bodyInitialOverflowValue =\n this._body.style.getPropertyValue('overflow');\n }\n\n // Register \"onClose\" callback function to be called when a native 'close' event is dispatched\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this._element.addEventListener('close', this.registerOnCloseCallback, true);\n\n // If the flyout dialog is not already open\n if (!this._element.open) {\n this.open();\n }\n\n this._clickHandler = (event: MouseEvent) => {\n // check if the click is outside the flyout and the flyout is open\n if (!this._element.contains(event.target as Node) && this._isOpen) {\n void this.onDismiss();\n }\n };\n\n document.addEventListener('click', this._clickHandler, {\n capture: true,\n passive: false,\n });\n });\n\n @action\n willDestroyNode(): void {\n if (this._element) {\n this._element.removeEventListener(\n 'close',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.registerOnCloseCallback,\n true\n );\n }\n }\n\n @action\n open(): void {\n // Make flyout dialog visible using the native `showModal` method\n this._element.showModal();\n this._isOpen = true;\n\n // Prevent page from scrolling when the dialog is open\n if (this._body) this._body.style.setProperty('overflow', 'hidden');\n\n // Call \"onOpen\" callback function\n if (this.args.onOpen && typeof this.args.onOpen === 'function') {\n this.args.onOpen();\n }\n }\n\n @action\n // eslint-disable-next-line @typescript-eslint/require-await\n async onDismiss(): Promise<void> {\n // allow ember test helpers to be aware of when the `close` event fires\n // when using `click` or other helpers from '@ember/test-helpers'\n // Notice: this code will get stripped out in production builds (DEBUG evaluates to `true` in dev/test builds, but `false` in prod builds)\n if (this._element.open) {\n const token = waiter.beginAsync();\n const listener = () => {\n waiter.endAsync(token);\n this._element.removeEventListener('close', listener);\n };\n this._element.addEventListener('close', listener);\n }\n\n // Make flyout dialog invisible using the native `close` method\n this._element.close();\n\n // Reset page `overflow` property\n if (this._body) {\n this._body.style.removeProperty('overflow');\n if (this._bodyInitialOverflowValue === '') {\n if (this._body.style.length === 0) {\n this._body.removeAttribute('style');\n }\n } else {\n this._body.style.setProperty(\n 'overflow',\n this._bodyInitialOverflowValue\n );\n }\n }\n\n // Return focus to a specific element (if provided)\n if (this.args.returnFocusTo) {\n const initiator = document.getElementById(this.args.returnFocusTo);\n if (initiator) {\n initiator.focus();\n }\n }\n }\n}\n"],"names":["waiter","buildWaiter","DEFAULT_SIZE","HdsFlyoutSizesValues","Medium","DEFAULT_HAS_OVERLAY","SIZES","Object","values","HdsFlyout","Component","g","prototype","tracked","i","void 0","_element","_body","_bodyInitialOverflowValue","_clickHandler","constructor","owner","args","registerDestructor","_isOpen","dispatchEvent","Event","removeEventListener","registerOnCloseCallback","document","size","assert","join","includes","id","getElementId","classNames","classes","push","event","onClose","n","action","_registerDialog","modifier","element","body","style","getPropertyValue","addEventListener","open","contains","target","onDismiss","capture","passive","willDestroyNode","showModal","setProperty","onOpen","token","beginAsync","listener","endAsync","close","removeProperty","length","removeAttribute","returnFocusTo","initiator","getElementById","focus","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAqBA,MAAMA,MAAM,GAAGC,WAAW,CAAC,4CAA4C,CAAC;AAEjE,MAAMC,YAAY,GAAGC,oBAAoB,CAACC;AAC1C,MAAMC,mBAAmB,GAAG;AAC5B,MAAMC,KAAuB,GAAGC,MAAM,CAACC,MAAM,CAACL,oBAAoB;AAkC1D,MAAMM,SAAS,SAASC,SAAS,CAAqB;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAClEC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAmB,KAAK;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAAC,MAAA;AAChC;AACA;EACAC,QAAQ;EACAC,KAAK;AACLC,EAAAA,yBAAyB,GAAG,EAAE;EAC9BC,aAAa;AAErBC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAAgC,EAAE;AAC1D,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;IAElBC,kBAAkB,CAAC,IAAI,EAAE,MAAY;AACnC;AACA,MAAA,IAAI,IAAI,CAACP,QAAQ,IAAI,IAAI,CAACQ,OAAO,EAAE;QACjC,IAAI,CAACR,QAAQ,CAACS,aAAa,CAAC,IAAIC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE/C,QAAA,IAAI,CAACV,QAAQ,CAACW,mBAAmB,CAC/B,OAAO;AACP;AACA,QAAA,IAAI,CAACC,uBAAuB,EAC5B,IACF,CAAC;AACH,MAAA;MAEAC,QAAQ,CAACF,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACR,aAAa,EAAE,IAAI,CAAC;AACjE,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIW,IAAIA,GAAmB;IACzB,MAAM;AAAEA,MAAAA,IAAI,GAAG5B;KAAc,GAAG,IAAI,CAACoB,IAAI;AAEzCS,IAAAA,MAAM,CACJ,CAAA,sDAAA,EAAyDzB,KAAK,CAAC0B,IAAI,CACjE,IACF,CAAC,CAAA,YAAA,EAAeF,IAAI,CAAA,CAAE,EACtBxB,KAAK,CAAC2B,QAAQ,CAACH,IAAI,CACrB,CAAC;AAED,IAAA,OAAOA,IAAI;AACb,EAAA;;AAEA;AACF;AACA;EACE,IAAII,EAAEA,GAAW;IACf,OAAOC,YAAY,CAAC,IAAI,CAAC;AAC3B,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,YAAY,CAAC;;AAE9B;IACAA,OAAO,CAACC,IAAI,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAACR,IAAI,EAAE,CAAC;AAE7C,IAAA,OAAOO,OAAO,CAACL,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;EAEQJ,uBAAuBA,CAACW,KAAY,EAAE;AAC5C,IAAA,IAAI,IAAI,CAACjB,IAAI,CAACkB,OAAO,IAAI,OAAO,IAAI,CAAClB,IAAI,CAACkB,OAAO,KAAK,UAAU,EAAE;AAChE,MAAA,IAAI,CAAClB,IAAI,CAACkB,OAAO,CAACD,KAAK,CAAC;AAC1B,IAAA;IAEA,IAAI,CAACf,OAAO,GAAG,KAAK;AACtB,EAAA;AAAC,EAAA;IAAAiB,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,yBAAA,EAAA,CANA8B,MAAM,CAAA,CAAA;AAAA;AAQCC,EAAAA,eAAe,GAAGC,QAAQ,CAAEC,OAA0B,IAAK;AACjE;IACA,IAAI,CAAC7B,QAAQ,GAAG6B,OAAO;AACvB,IAAA,IAAI,CAAC5B,KAAK,GAAGY,QAAQ,CAACiB,IAAI;IAE1B,IAAI,IAAI,CAAC7B,KAAK,EAAE;AACd;AACA,MAAA,IAAI,CAACC,yBAAyB,GAC5B,IAAI,CAACD,KAAK,CAAC8B,KAAK,CAACC,gBAAgB,CAAC,UAAU,CAAC;AACjD,IAAA;;AAEA;AACA;AACA,IAAA,IAAI,CAAChC,QAAQ,CAACiC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACrB,uBAAuB,EAAE,IAAI,CAAC;;AAE3E;AACA,IAAA,IAAI,CAAC,IAAI,CAACZ,QAAQ,CAACkC,IAAI,EAAE;MACvB,IAAI,CAACA,IAAI,EAAE;AACb,IAAA;AAEA,IAAA,IAAI,CAAC/B,aAAa,GAAIoB,KAAiB,IAAK;AAC1C;AACA,MAAA,IAAI,CAAC,IAAI,CAACvB,QAAQ,CAACmC,QAAQ,CAACZ,KAAK,CAACa,MAAc,CAAC,IAAI,IAAI,CAAC5B,OAAO,EAAE;AACjE,QAAA,KAAK,IAAI,CAAC6B,SAAS,EAAE;AACvB,MAAA;IACF,CAAC;IAEDxB,QAAQ,CAACoB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC9B,aAAa,EAAE;AACrDmC,MAAAA,OAAO,EAAE,IAAI;AACbC,MAAAA,OAAO,EAAE;AACX,KAAC,CAAC;AACJ,EAAA,CAAC,CAAC;AAGFC,EAAAA,eAAeA,GAAS;IACtB,IAAI,IAAI,CAACxC,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACA,QAAQ,CAACW,mBAAmB,CAC/B,OAAO;AACP;AACA,MAAA,IAAI,CAACC,uBAAuB,EAC5B,IACF,CAAC;AACH,IAAA;AACF,EAAA;AAAC,EAAA;IAAAa,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,iBAAA,EAAA,CAVA8B,MAAM,CAAA,CAAA;AAAA;AAaPQ,EAAAA,IAAIA,GAAS;AACX;AACA,IAAA,IAAI,CAAClC,QAAQ,CAACyC,SAAS,EAAE;IACzB,IAAI,CAACjC,OAAO,GAAG,IAAI;;AAEnB;AACA,IAAA,IAAI,IAAI,CAACP,KAAK,EAAE,IAAI,CAACA,KAAK,CAAC8B,KAAK,CAACW,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC;;AAElE;AACA,IAAA,IAAI,IAAI,CAACpC,IAAI,CAACqC,MAAM,IAAI,OAAO,IAAI,CAACrC,IAAI,CAACqC,MAAM,KAAK,UAAU,EAAE;AAC9D,MAAA,IAAI,CAACrC,IAAI,CAACqC,MAAM,EAAE;AACpB,IAAA;AACF,EAAA;AAAC,EAAA;IAAAlB,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,MAAA,EAAA,CAbA8B,MAAM,CAAA,CAAA;AAAA;EAeP,MAEMW,SAASA,GAAkB;AAC/B;AACA;AACA;AACA,IAAA,IAAI,IAAI,CAACrC,QAAQ,CAACkC,IAAI,EAAE;AACtB,MAAA,MAAMU,KAAK,GAAG5D,MAAM,CAAC6D,UAAU,EAAE;MACjC,MAAMC,QAAQ,GAAGA,MAAM;AACrB9D,QAAAA,MAAM,CAAC+D,QAAQ,CAACH,KAAK,CAAC;QACtB,IAAI,CAAC5C,QAAQ,CAACW,mBAAmB,CAAC,OAAO,EAAEmC,QAAQ,CAAC;MACtD,CAAC;MACD,IAAI,CAAC9C,QAAQ,CAACiC,gBAAgB,CAAC,OAAO,EAAEa,QAAQ,CAAC;AACnD,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC9C,QAAQ,CAACgD,KAAK,EAAE;;AAErB;IACA,IAAI,IAAI,CAAC/C,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAAC8B,KAAK,CAACkB,cAAc,CAAC,UAAU,CAAC;AAC3C,MAAA,IAAI,IAAI,CAAC/C,yBAAyB,KAAK,EAAE,EAAE;QACzC,IAAI,IAAI,CAACD,KAAK,CAAC8B,KAAK,CAACmB,MAAM,KAAK,CAAC,EAAE;AACjC,UAAA,IAAI,CAACjD,KAAK,CAACkD,eAAe,CAAC,OAAO,CAAC;AACrC,QAAA;AACF,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAAClD,KAAK,CAAC8B,KAAK,CAACW,WAAW,CAC1B,UAAU,EACV,IAAI,CAACxC,yBACP,CAAC;AACH,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAACI,IAAI,CAAC8C,aAAa,EAAE;MAC3B,MAAMC,SAAS,GAAGxC,QAAQ,CAACyC,cAAc,CAAC,IAAI,CAAChD,IAAI,CAAC8C,aAAa,CAAC;AAClE,MAAA,IAAIC,SAAS,EAAE;QACbA,SAAS,CAACE,KAAK,EAAE;AACnB,MAAA;AACF,IAAA;AACF,EAAA;AAAC,EAAA;IAAA9B,CAAA,CAAA,IAAA,CAAA7B,SAAA,EAAA,WAAA,EAAA,CAxCA8B,MAAM,CAAA,CAAA;AAAA;AAyCT;AAAC8B,oBAAA,CAAAC,QAAA,EApLoBhE,SAAS,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/form/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport HdsFormHeaderTitleComponent from './header/title.ts';\n\nimport { HdsFormTagValues } from './types.ts';\n\nimport type { HdsFormTags } from './types.ts';\nimport type Owner from '@ember/owner';\n\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport type { HdsFormHeaderSignature } from './header/index.ts';\nimport type { HdsFormHeaderTitleSignature } from './header/title.ts';\nimport type { HdsFormHeaderDescriptionSignature } from './header/description.ts';\nimport type { HdsFormSectionSignature } from './section/index.ts';\nimport type { HdsFormSectionHeaderSignature } from './section/header.ts';\nimport type { HdsFormSectionMultiFieldGroupSignature } from './section/multi-field-group/index.ts';\nimport type { HdsFormSectionMultiFieldGroupItemSignature } from './section/multi-field-group/item.ts';\nimport type { HdsFormSeparatorSignature } from './separator/index.ts';\nimport type { HdsFormFooterSignature } from './footer/index.ts';\n\nexport const DEFAULT_TAG = HdsFormTagValues.Form;\nexport const AVAILABLE_TAGS:
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/form/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport HdsFormHeaderTitleComponent from './header/title.ts';\n\nimport { HdsFormTagValues } from './types.ts';\n\nimport type { HdsFormTags } from './types.ts';\nimport type Owner from '@ember/owner';\n\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport type { HdsFormHeaderSignature } from './header/index.ts';\nimport type { HdsFormHeaderTitleSignature } from './header/title.ts';\nimport type { HdsFormHeaderDescriptionSignature } from './header/description.ts';\nimport type { HdsFormSectionSignature } from './section/index.ts';\nimport type { HdsFormSectionHeaderSignature } from './section/header.ts';\nimport type { HdsFormSectionMultiFieldGroupSignature } from './section/multi-field-group/index.ts';\nimport type { HdsFormSectionMultiFieldGroupItemSignature } from './section/multi-field-group/item.ts';\nimport type { HdsFormSeparatorSignature } from './separator/index.ts';\nimport type { HdsFormFooterSignature } from './footer/index.ts';\n\nexport const DEFAULT_TAG = HdsFormTagValues.Form;\nexport const AVAILABLE_TAGS: HdsFormTags[] = Object.values(HdsFormTagValues);\n\nexport interface HdsFormSignature {\n Args: {\n tag?: HdsFormTags;\n sectionMaxWidth?: string;\n };\n Blocks: {\n default: [\n {\n Header?: ComponentLike<HdsFormHeaderSignature>;\n HeaderTitle?: ComponentLike<HdsFormHeaderTitleSignature>;\n HeaderDescription?: ComponentLike<HdsFormHeaderDescriptionSignature>;\n Section?: ComponentLike<HdsFormSectionSignature>;\n SectionHeader?: ComponentLike<HdsFormSectionHeaderSignature>;\n SectionHeaderTitle?: WithBoundArgs<\n typeof HdsFormHeaderTitleComponent,\n 'size'\n >;\n SectionHeaderDescription?: ComponentLike<HdsFormHeaderDescriptionSignature>;\n SectionMultiFieldGroup?: ComponentLike<HdsFormSectionMultiFieldGroupSignature>;\n SectionMultiFieldGroupItem?: ComponentLike<HdsFormSectionMultiFieldGroupItemSignature>;\n Separator?: ComponentLike<HdsFormSeparatorSignature>;\n Footer?: ComponentLike<HdsFormFooterSignature>;\n },\n ];\n };\n Element: HTMLFormElement | HTMLDivElement;\n}\n\nexport default class HdsForm extends Component<HdsFormSignature> {\n tag: HdsFormTags;\n\n constructor(owner: Owner, args: HdsFormSignature['Args']) {\n super(owner, args);\n this.tag = args.tag ?? DEFAULT_TAG;\n\n assert(\n `@tag for \"Hds::Form\" must be one of the following: ${AVAILABLE_TAGS.join(', ')}; received: ${this.tag}`,\n AVAILABLE_TAGS.includes(this.tag)\n );\n }\n\n get sectionMaxWidthStyle(): Record<string, string> {\n const sectionMaxWidthStyle: { [key: string]: string } = {};\n\n if (this.args.sectionMaxWidth) {\n sectionMaxWidthStyle['--hds-form-section-max-width'] =\n this.args.sectionMaxWidth;\n }\n return sectionMaxWidthStyle;\n }\n}\n"],"names":["DEFAULT_TAG","HdsFormTagValues","Form","AVAILABLE_TAGS","Object","values","HdsForm","Component","tag","constructor","owner","args","assert","join","includes","sectionMaxWidthStyle","sectionMaxWidth","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;;AAsBO,MAAMA,WAAW,GAAGC,gBAAgB,CAACC;AACrC,MAAMC,cAA6B,GAAGC,MAAM,CAACC,MAAM,CAACJ,gBAAgB;AA8B5D,MAAMK,OAAO,SAASC,SAAS,CAAmB;EAC/DC,GAAG;AAEHC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAA8B,EAAE;AACxD,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;AAClB,IAAA,IAAI,CAACH,GAAG,GAAGG,IAAI,CAACH,GAAG,IAAIR,WAAW;IAElCY,MAAM,CACJ,sDAAsDT,cAAc,CAACU,IAAI,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,IAAI,CAACL,GAAG,CAAA,CAAE,EACxGL,cAAc,CAACW,QAAQ,CAAC,IAAI,CAACN,GAAG,CAClC,CAAC;AACH,EAAA;EAEA,IAAIO,oBAAoBA,GAA2B;IACjD,MAAMA,oBAA+C,GAAG,EAAE;AAE1D,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACK,eAAe,EAAE;MAC7BD,oBAAoB,CAAC,8BAA8B,CAAC,GAClD,IAAI,CAACJ,IAAI,CAACK,eAAe;AAC7B,IAAA;AACA,IAAA,OAAOD,oBAAoB;AAC7B,EAAA;AACF;AAACE,oBAAA,CAAAC,QAAA,EAtBoBZ,OAAO,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/form/key-value-inputs/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { schedule } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\n\nimport {\n ariaDescribedBy,\n registerAriaDescriptionElement,\n unregisterAriaDescriptionElement,\n} from '../../../../utils/hds-aria-described-by.ts';\nimport { guidFor } from '@ember/object/internals';\n\nimport HdsAlertComponent from '../../alert/index.ts';\nimport HdsFormErrorComponent from '../error/index.ts';\nimport HdsFormHelperTextComponent from '../helper-text/index.ts';\nimport HdsFormKeyValueInputsDeleteRowButtonComponent from './delete-row-button.ts';\nimport HdsFormKeyValueInputsFieldComponent from './field.ts';\nimport HdsFormKeyValueInputsGenericComponent from './generic.ts';\nimport HdsFormLegendComponent from '../legend/index.ts';\n\nimport type { AriaDescribedByComponent } from '../../../../utils/hds-aria-described-by.ts';\nimport type { HdsFormKeyValueInputsAddRowButtonSignature } from './add-row-button.ts';\nimport type { HdsYieldSignature } from '../../yield/index.ts';\n\nconst KEY_VALUE_INPUTS_FIELD_SELECTOR = '.hds-form-key-value-inputs__field';\nconst KEY_VALUE_INPUTS_GENERIC_SELECTOR =\n '.hds-form-key-value-inputs__generic-container';\nconst KEY_VALUE_INPUTS_FIRST_ROW_SELECTOR =\n '.hds-form-key-value-inputs__row--first';\nconst KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR =\n '.hds-form-key-value-inputs__delete-row-button-container';\n\nexport interface HdsFormKeyValueInputsSignature {\n Args: {\n data: Array<unknown>;\n extraAriaDescribedBy?: string;\n isOptional?: boolean;\n isRequired?: boolean;\n };\n Blocks: {\n header?: [\n {\n Legend?: WithBoundArgs<\n typeof HdsFormLegendComponent,\n 'contextualClass' | 'id' | 'isOptional' | 'isRequired'\n >;\n HelperText?: WithBoundArgs<\n typeof HdsFormHelperTextComponent,\n 'contextualClass' | 'controlId' | 'onInsert'\n >;\n Generic?: ComponentLike<HdsYieldSignature>;\n },\n ];\n row: [\n {\n Field?: WithBoundArgs<\n typeof HdsFormKeyValueInputsFieldComponent,\n 'onInsert' | 'onRemove' | 'rowIndex'\n >;\n Generic?: WithBoundArgs<\n typeof HdsFormKeyValueInputsGenericComponent,\n 'onInsert' | 'onRemove'\n >;\n DeleteRowButton?: WithBoundArgs<\n typeof HdsFormKeyValueInputsDeleteRowButtonComponent,\n 'onInsert' | 'onRemove' | 'returnFocusTo' | 'rowData' | 'rowIndex'\n >;\n rowData?: unknown;\n rowIndex?: number;\n },\n ];\n footer?: [\n {\n AddRowButton?: ComponentLike<HdsFormKeyValueInputsAddRowButtonSignature>;\n Alert?: WithBoundArgs<typeof HdsAlertComponent, 'color' | 'type'>;\n Error?: WithBoundArgs<\n typeof HdsFormErrorComponent,\n 'contextualClass' | 'controlId' | 'onInsert' | 'onRemove'\n >;\n },\n ];\n };\n Element: HTMLFieldSetElement;\n}\n\n// @ts-expect-error: decorator function return type 'ClassOf<AriaDescribedBy>' is not assignable to 'typeof HdsFormField'\n@ariaDescribedBy\nexport default class HdsFormKeyValueInputs extends Component<HdsFormKeyValueInputsSignature> {\n private _element!: HTMLFieldSetElement;\n @tracked _gridTemplateColumns = '';\n\n // this is not a specific DOM id, but a value that is used to \"glue\" together\n // different fieldsset-related elements (legend, helper text, error) with the fieldset itself\n get glueId(): string {\n return guidFor(this);\n }\n\n @action\n _setUpColumn(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._updateColumns();\n });\n }\n\n @action\n _removeColumn(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._updateColumns();\n });\n }\n\n @action\n appendDescriptor(element: HTMLElement): void {\n registerAriaDescriptionElement(this as AriaDescribedByComponent, element);\n }\n\n @action\n removeDescriptor(element: HTMLElement): void {\n unregisterAriaDescriptionElement(this as AriaDescribedByComponent, element);\n }\n\n private _setUpKeyValueInputs = modifier((element: HTMLFieldSetElement) => {\n this._element = element;\n });\n\n // Update the column array based on how they are ordered in the DOM\n private _updateColumns = () => {\n const columns = this._element\n .querySelector(KEY_VALUE_INPUTS_FIRST_ROW_SELECTOR)\n ?.querySelectorAll(\n `${KEY_VALUE_INPUTS_FIELD_SELECTOR}, ${KEY_VALUE_INPUTS_GENERIC_SELECTOR}, ${KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR}`\n );\n\n let updatedGridTemplateColumns = '';\n\n columns?.forEach((column, index) => {\n const columnElement = column as HTMLElement;\n\n // FIELD\n\n if (\n // do substring to remove the leading dot from the class selector\n column.classList.contains(KEY_VALUE_INPUTS_FIELD_SELECTOR.substring(1))\n ) {\n if (columnElement.dataset['width']) {\n updatedGridTemplateColumns += `${columnElement.dataset['width']} `;\n } else {\n updatedGridTemplateColumns += '1fr ';\n }\n }\n\n // GENERIC\n\n if (\n // do substring to remove the leading dot from the class selector\n column.classList.contains(\n KEY_VALUE_INPUTS_GENERIC_SELECTOR.substring(1)\n )\n ) {\n updatedGridTemplateColumns += 'auto ';\n\n // Set grid-column so generic content appears in the correct column when grid-row is set; otherwise, browsers default it to the first column.\n columnElement.style.setProperty(\n '--hds-key-value-inputs-column-index',\n `${index + 1}`\n );\n }\n\n // DELETE BUTTON\n\n if (\n column.classList.contains(\n KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR.substring(1)\n )\n ) {\n // Set grid-column so generic content appears in the correct column when grid-row is set; otherwise, browsers default it to the first column.\n columnElement.style.setProperty(\n '--hds-key-value-inputs-column-index',\n `${index + 1}`\n );\n }\n });\n\n // we always set aside the space for the delete button (it's always the last element)\n // even when it's not rendered, to avoid layout shifts when moving to/from an empty state\n updatedGridTemplateColumns += '2.25rem ';\n\n this._gridTemplateColumns = updatedGridTemplateColumns;\n };\n}\n"],"names":["KEY_VALUE_INPUTS_FIELD_SELECTOR","KEY_VALUE_INPUTS_GENERIC_SELECTOR","KEY_VALUE_INPUTS_FIRST_ROW_SELECTOR","KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR","HdsFormKeyValueInputs","c","Component","_element","g","prototype","tracked","i","void 0","glueId","guidFor","_setUpColumn","schedule","_updateColumns","n","action","_removeColumn","appendDescriptor","element","registerAriaDescriptionElement","removeDescriptor","unregisterAriaDescriptionElement","_setUpKeyValueInputs","modifier","columns","querySelector","querySelectorAll","updatedGridTemplateColumns","forEach","column","index","columnElement","classList","contains","substring","dataset","style","setProperty","_gridTemplateColumns","ariaDescribedBy","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AA4BA,MAAMA,+BAA+B,GAAG,mCAAmC;AAC3E,MAAMC,iCAAiC,GACrC,+CAA+C;AACjD,MAAMC,mCAAmC,GACvC,wCAAwC;AAC1C,MAAMC,8CAA8C,GAClD,yDAAyD;AAAC,MAyDvCC,qBAAqB,GAAAC,CAAA,OAArBD,qBAAqB,SAASE,SAAS,CAAiC;EACnFC,QAAQ;AAAuB,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CACtCC,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwB,EAAE;AAAA,IAAA,CAAA,CAAA;AAAA;AAAA,EAAA,qBAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAAC,MAAA;AAElC;AACA;EACA,IAAIC,MAAMA,GAAW;IACnB,OAAOC,OAAO,CAAC,IAAI,CAAC;AACtB,EAAA;AAGAC,EAAAA,YAAYA,GAAS;AACnB;IACAC,QAAQ,CAAC,aAAa,EAAE,MAAY;MAClC,IAAI,CAACC,cAAc,EAAE;AACvB,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAT,SAAA,EAAA,cAAA,EAAA,CANAU,MAAM,CAAA,CAAA;AAAA;AASPC,EAAAA,aAAaA,GAAS;AACpB;IACAJ,QAAQ,CAAC,aAAa,EAAE,MAAY;MAClC,IAAI,CAACC,cAAc,EAAE;AACvB,IAAA,CAAC,CAAC;AACJ,EAAA;AAAC,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAT,SAAA,EAAA,eAAA,EAAA,CANAU,MAAM,CAAA,CAAA;AAAA;EASPE,gBAAgBA,CAACC,OAAoB,EAAQ;AAC3CC,IAAAA,8BAA8B,CAAC,IAAI,EAA8BD,OAAO,CAAC;AAC3E,EAAA;AAAC,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAT,SAAA,EAAA,kBAAA,EAAA,CAHAU,MAAM,CAAA,CAAA;AAAA;EAMPK,gBAAgBA,CAACF,OAAoB,EAAQ;AAC3CG,IAAAA,gCAAgC,CAAC,IAAI,EAA8BH,OAAO,CAAC;AAC7E,EAAA;AAAC,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAT,SAAA,EAAA,kBAAA,EAAA,CAHAU,MAAM,CAAA,CAAA;AAAA;AAKCO,EAAAA,oBAAoB,GAAGC,QAAQ,CAAEL,OAA4B,IAAK;IACxE,IAAI,CAACf,QAAQ,GAAGe,OAAO;AACzB,EAAA,CAAC,CAAC;;AAEF;EACQL,cAAc,GAAGA,MAAM;IAC7B,MAAMW,OAAO,GAAG,IAAI,CAACrB,QAAQ,CAC1BsB,aAAa,CAAC3B,mCAAmC,CAAC,EACjD4B,gBAAgB,CAChB,GAAG9B,+BAA+B,CAAA,EAAA,EAAKC,iCAAiC,CAAA,EAAA,EAAKE,8CAA8C,EAC7H,CAAC;IAEH,IAAI4B,0BAA0B,GAAG,EAAE;AAEnCH,IAAAA,OAAO,EAAEI,OAAO,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;MAClC,MAAMC,aAAa,GAAGF,MAAqB;;AAE3C;;AAEA,MAAA;AACE;AACAA,MAAAA,MAAM,CAACG,SAAS,CAACC,QAAQ,CAACrC,+BAA+B,CAACsC,SAAS,CAAC,CAAC,CAAC,CAAC,EACvE;AACA,QAAA,IAAIH,aAAa,CAACI,OAAO,CAAC,OAAO,CAAC,EAAE;UAClCR,0BAA0B,IAAI,GAAGI,aAAa,CAACI,OAAO,CAAC,OAAO,CAAC,CAAA,CAAA,CAAG;AACpE,QAAA,CAAC,MAAM;AACLR,UAAAA,0BAA0B,IAAI,MAAM;AACtC,QAAA;AACF,MAAA;;AAEA;;AAEA,MAAA;AACE;AACAE,MAAAA,MAAM,CAACG,SAAS,CAACC,QAAQ,CACvBpC,iCAAiC,CAACqC,SAAS,CAAC,CAAC,CAC/C,CAAC,EACD;AACAP,QAAAA,0BAA0B,IAAI,OAAO;;AAErC;AACAI,QAAAA,aAAa,CAACK,KAAK,CAACC,WAAW,CAC7B,qCAAqC,EACrC,CAAA,EAAGP,KAAK,GAAG,CAAC,CAAA,CACd,CAAC;AACH,MAAA;;AAEA;;AAEA,MAAA,IACED,MAAM,CAACG,SAAS,CAACC,QAAQ,CACvBlC,8CAA8C,CAACmC,SAAS,CAAC,CAAC,CAC5D,CAAC,EACD;AACA;AACAH,QAAAA,aAAa,CAACK,KAAK,CAACC,WAAW,CAC7B,qCAAqC,EACrC,CAAA,EAAGP,KAAK,GAAG,CAAC,CAAA,CACd,CAAC;AACH,MAAA;AACF,IAAA,CAAC,CAAC;;AAEF;AACA;AACAH,IAAAA,0BAA0B,IAAI,UAAU;IAExC,IAAI,CAACW,oBAAoB,GAAGX,0BAA0B;EACxD,CAAC;AACH,CAAC,GAzGAY,eAAe,CAAA;AAC0BC,oBAAA,CAAAC,QAAA,EAArBzC,qBAAqB,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/form/key-value-inputs/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport type { ComponentLike, WithBoundArgs } from '@glint/template';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { schedule } from '@ember/runloop';\nimport { modifier } from 'ember-modifier';\n\nimport {\n ariaDescribedBy,\n registerAriaDescriptionElement,\n unregisterAriaDescriptionElement,\n} from '../../../../utils/hds-aria-described-by.ts';\nimport { guidFor } from '@ember/object/internals';\n\nimport HdsAlertComponent from '../../alert/index.ts';\nimport HdsFormErrorComponent from '../error/index.ts';\nimport HdsFormHelperTextComponent from '../helper-text/index.ts';\nimport HdsFormKeyValueInputsDeleteRowButtonComponent from './delete-row-button.ts';\nimport HdsFormKeyValueInputsFieldComponent from './field.ts';\nimport HdsFormKeyValueInputsGenericComponent from './generic.ts';\nimport HdsFormLegendComponent from '../legend/index.ts';\n\nimport type { AriaDescribedByComponent } from '../../../../utils/hds-aria-described-by.ts';\nimport type { HdsFormKeyValueInputsAddRowButtonSignature } from './add-row-button.ts';\nimport type { HdsYieldSignature } from '../../yield/index.ts';\n\nconst KEY_VALUE_INPUTS_FIELD_SELECTOR = '.hds-form-key-value-inputs__field';\nconst KEY_VALUE_INPUTS_GENERIC_SELECTOR =\n '.hds-form-key-value-inputs__generic-container';\nconst KEY_VALUE_INPUTS_FIRST_ROW_SELECTOR =\n '.hds-form-key-value-inputs__row--first';\nconst KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR =\n '.hds-form-key-value-inputs__delete-row-button-container';\n\nexport interface HdsFormKeyValueInputsSignature<T = unknown> {\n Args: {\n data: Array<T>;\n extraAriaDescribedBy?: string;\n isOptional?: boolean;\n isRequired?: boolean;\n };\n Blocks: {\n header?: [\n {\n Legend?: WithBoundArgs<\n typeof HdsFormLegendComponent,\n 'contextualClass' | 'id' | 'isOptional' | 'isRequired'\n >;\n HelperText?: WithBoundArgs<\n typeof HdsFormHelperTextComponent,\n 'contextualClass' | 'controlId' | 'onInsert'\n >;\n Generic?: ComponentLike<HdsYieldSignature>;\n },\n ];\n row: [\n {\n Field?: WithBoundArgs<\n typeof HdsFormKeyValueInputsFieldComponent,\n 'onInsert' | 'onRemove' | 'rowIndex'\n >;\n Generic?: WithBoundArgs<\n typeof HdsFormKeyValueInputsGenericComponent,\n 'onInsert' | 'onRemove'\n >;\n DeleteRowButton?: WithBoundArgs<\n typeof HdsFormKeyValueInputsDeleteRowButtonComponent,\n 'onInsert' | 'onRemove' | 'returnFocusTo' | 'rowData' | 'rowIndex'\n >;\n rowData?: T;\n rowIndex?: number;\n },\n ];\n footer?: [\n {\n AddRowButton?: ComponentLike<HdsFormKeyValueInputsAddRowButtonSignature>;\n Alert?: WithBoundArgs<typeof HdsAlertComponent, 'color' | 'type'>;\n Error?: WithBoundArgs<\n typeof HdsFormErrorComponent,\n 'contextualClass' | 'controlId' | 'onInsert' | 'onRemove'\n >;\n },\n ];\n };\n Element: HTMLFieldSetElement;\n}\n\n// @ts-expect-error: decorator function return type 'ClassOf<AriaDescribedBy>' is not assignable to 'typeof HdsFormField'\n@ariaDescribedBy\nexport default class HdsFormKeyValueInputs<T = unknown> extends Component<\n HdsFormKeyValueInputsSignature<T>\n> {\n private _element!: HTMLFieldSetElement;\n @tracked _gridTemplateColumns = '';\n\n // this is not a specific DOM id, but a value that is used to \"glue\" together\n // different fieldsset-related elements (legend, helper text, error) with the fieldset itself\n get glueId(): string {\n return guidFor(this);\n }\n\n @action\n _setUpColumn(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._updateColumns();\n });\n }\n\n @action\n _removeColumn(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this._updateColumns();\n });\n }\n\n @action\n appendDescriptor(element: HTMLElement): void {\n registerAriaDescriptionElement(this as AriaDescribedByComponent, element);\n }\n\n @action\n removeDescriptor(element: HTMLElement): void {\n unregisterAriaDescriptionElement(this as AriaDescribedByComponent, element);\n }\n\n private _setUpKeyValueInputs = modifier((element: HTMLFieldSetElement) => {\n this._element = element;\n });\n\n // Update the column array based on how they are ordered in the DOM\n private _updateColumns = () => {\n const columns = this._element\n .querySelector(KEY_VALUE_INPUTS_FIRST_ROW_SELECTOR)\n ?.querySelectorAll(\n `${KEY_VALUE_INPUTS_FIELD_SELECTOR}, ${KEY_VALUE_INPUTS_GENERIC_SELECTOR}, ${KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR}`\n );\n\n let updatedGridTemplateColumns = '';\n\n columns?.forEach((column, index) => {\n const columnElement = column as HTMLElement;\n\n // FIELD\n\n if (\n // do substring to remove the leading dot from the class selector\n column.classList.contains(KEY_VALUE_INPUTS_FIELD_SELECTOR.substring(1))\n ) {\n if (columnElement.dataset['width']) {\n updatedGridTemplateColumns += `${columnElement.dataset['width']} `;\n } else {\n updatedGridTemplateColumns += '1fr ';\n }\n }\n\n // GENERIC\n\n if (\n // do substring to remove the leading dot from the class selector\n column.classList.contains(\n KEY_VALUE_INPUTS_GENERIC_SELECTOR.substring(1)\n )\n ) {\n updatedGridTemplateColumns += 'auto ';\n\n // Set grid-column so generic content appears in the correct column when grid-row is set; otherwise, browsers default it to the first column.\n columnElement.style.setProperty(\n '--hds-key-value-inputs-column-index',\n `${index + 1}`\n );\n }\n\n // DELETE BUTTON\n\n if (\n column.classList.contains(\n KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR.substring(1)\n )\n ) {\n // Set grid-column so generic content appears in the correct column when grid-row is set; otherwise, browsers default it to the first column.\n columnElement.style.setProperty(\n '--hds-key-value-inputs-column-index',\n `${index + 1}`\n );\n }\n });\n\n // we always set aside the space for the delete button (it's always the last element)\n // even when it's not rendered, to avoid layout shifts when moving to/from an empty state\n updatedGridTemplateColumns += '2.25rem ';\n\n this._gridTemplateColumns = updatedGridTemplateColumns;\n };\n}\n"],"names":["KEY_VALUE_INPUTS_FIELD_SELECTOR","KEY_VALUE_INPUTS_GENERIC_SELECTOR","KEY_VALUE_INPUTS_FIRST_ROW_SELECTOR","KEY_VALUE_INPUTS_DELETE_ROW_CONTAINER_SELECTOR","HdsFormKeyValueInputs","c","Component","_element","g","prototype","tracked","i","void 0","glueId","guidFor","_setUpColumn","schedule","_updateColumns","n","action","_removeColumn","appendDescriptor","element","registerAriaDescriptionElement","removeDescriptor","unregisterAriaDescriptionElement","_setUpKeyValueInputs","modifier","columns","querySelector","querySelectorAll","updatedGridTemplateColumns","forEach","column","index","columnElement","classList","contains","substring","dataset","style","setProperty","_gridTemplateColumns","ariaDescribedBy","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/form/radio-card/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport {\n HdsFormRadioCardControlPositionValues,\n HdsFormRadioCardAlignmentValues,\n} from './types.ts';\n\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsBadgeSignature } from '../../badge';\nimport type { HdsFormRadioBaseSignature } from '../radio/base';\nimport type { HdsFormRadioCardDescriptionSignature } from './description';\nimport type { HdsFormRadioCardLabelSignature } from './label';\nimport type { HdsYieldSignature } from '../../yield';\nimport type {\n HdsFormRadioCardControlPositions,\n HdsFormRadioCardAlignments,\n} from './types';\n\nexport const DEFAULT_CONTROL_POSITION =\n HdsFormRadioCardControlPositionValues.Bottom;\nexport const DEFAULT_ALIGNMENT = HdsFormRadioCardAlignmentValues.Left;\nexport const CONTROL_POSITIONS:
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/hds/form/radio-card/index.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport {\n HdsFormRadioCardControlPositionValues,\n HdsFormRadioCardAlignmentValues,\n} from './types.ts';\n\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsIconSignature } from '../../icon';\nimport type { HdsBadgeSignature } from '../../badge';\nimport type { HdsFormRadioBaseSignature } from '../radio/base';\nimport type { HdsFormRadioCardDescriptionSignature } from './description';\nimport type { HdsFormRadioCardLabelSignature } from './label';\nimport type { HdsYieldSignature } from '../../yield';\nimport type {\n HdsFormRadioCardControlPositions,\n HdsFormRadioCardAlignments,\n} from './types';\n\nexport const DEFAULT_CONTROL_POSITION =\n HdsFormRadioCardControlPositionValues.Bottom;\nexport const DEFAULT_ALIGNMENT = HdsFormRadioCardAlignmentValues.Left;\nexport const CONTROL_POSITIONS: HdsFormRadioCardControlPositions[] =\n Object.values(HdsFormRadioCardControlPositionValues);\nexport const ALIGNMENTS: HdsFormRadioCardAlignments[] = Object.values(\n HdsFormRadioCardAlignmentValues\n);\n\nexport interface HdsFormRadioCardSignature {\n Args: {\n name?: string;\n value?: string;\n checked?: boolean;\n disabled?: boolean;\n controlPosition?: HdsFormRadioCardControlPositions;\n alignment?: HdsFormRadioCardAlignments;\n maxWidth?: string;\n extraAriaDescribedBy?: string;\n };\n Blocks: {\n default: [\n {\n Icon?: ComponentLike<HdsIconSignature>;\n Label?: ComponentLike<HdsFormRadioCardLabelSignature>;\n Badge?: ComponentLike<HdsBadgeSignature>;\n Description?: ComponentLike<HdsFormRadioCardDescriptionSignature>;\n Generic?: ComponentLike<HdsYieldSignature>;\n },\n ];\n };\n Element: HdsFormRadioBaseSignature['Element'];\n}\n\nexport default class HdsFormRadioCard extends Component<HdsFormRadioCardSignature> {\n /**\n * Sets the position of the control\n * Accepted values: buttom, left\n *\n * @param type\n * @type {string}\n * @default 'bottom'\n */\n get controlPosition(): HdsFormRadioCardControlPositions {\n const { controlPosition = DEFAULT_CONTROL_POSITION } = this.args;\n\n assert(\n `@controlPosition for \"Hds::Form::RadioCard\" must be one of the following: ${CONTROL_POSITIONS.join(\n ', '\n )}; received: ${controlPosition}`,\n CONTROL_POSITIONS.includes(controlPosition)\n );\n\n return controlPosition;\n }\n\n /**\n * Sets the alignment of the content\n * Accepted values: left, center\n *\n * @param alignnment\n * @type {string}\n * @default 'left'\n */\n get alignment(): HdsFormRadioCardAlignments {\n const { alignment = DEFAULT_ALIGNMENT } = this.args;\n\n assert(\n `@alignment for \"Hds::Form::RadioCard\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${alignment}`,\n ALIGNMENTS.includes(alignment)\n );\n\n return alignment;\n }\n\n /**\n * Get the class names to apply to the component.\n * @method classNames\n * @return {string} The \"class\" attribute to apply to the component.\n */\n get classNames(): string {\n const classes = ['hds-form-radio-card'];\n\n if (this.args.checked) {\n classes.push('hds-form-radio-card--checked');\n }\n if (this.args.disabled) {\n classes.push('hds-form-radio-card--disabled');\n }\n if (this.args.maxWidth) {\n classes.push('hds-form-radio-card--has-fixed-width');\n } else {\n classes.push('hds-form-radio-card--has-fluid-width');\n }\n\n // add a class based on the @controlPosition argument\n classes.push(`hds-form-radio-card--control-${this.controlPosition}`);\n\n // add a class based on the @alignment argument\n classes.push(`hds-form-radio-card--align-${this.alignment}`);\n\n return classes.join(' ');\n }\n}\n"],"names":["DEFAULT_CONTROL_POSITION","HdsFormRadioCardControlPositionValues","Bottom","DEFAULT_ALIGNMENT","HdsFormRadioCardAlignmentValues","Left","CONTROL_POSITIONS","Object","values","ALIGNMENTS","HdsFormRadioCard","Component","controlPosition","args","assert","join","includes","alignment","classNames","classes","checked","push","disabled","maxWidth","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAqBO,MAAMA,wBAAwB,GACnCC,qCAAqC,CAACC;AACjC,MAAMC,iBAAiB,GAAGC,+BAA+B,CAACC;AAC1D,MAAMC,iBAAqD,GAChEC,MAAM,CAACC,MAAM,CAACP,qCAAqC;AAC9C,MAAMQ,UAAwC,GAAGF,MAAM,CAACC,MAAM,CACnEJ,+BACF;AA2Be,MAAMM,gBAAgB,SAASC,SAAS,CAA4B;AACjF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,eAAeA,GAAqC;IACtD,MAAM;AAAEA,MAAAA,eAAe,GAAGZ;KAA0B,GAAG,IAAI,CAACa,IAAI;AAEhEC,IAAAA,MAAM,CACJ,CAAA,0EAAA,EAA6ER,iBAAiB,CAACS,IAAI,CACjG,IACF,CAAC,CAAA,YAAA,EAAeH,eAAe,CAAA,CAAE,EACjCN,iBAAiB,CAACU,QAAQ,CAACJ,eAAe,CAC5C,CAAC;AAED,IAAA,OAAOA,eAAe;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIK,SAASA,GAA+B;IAC1C,MAAM;AAAEA,MAAAA,SAAS,GAAGd;KAAmB,GAAG,IAAI,CAACU,IAAI;AAEnDC,IAAAA,MAAM,CACJ,CAAA,oEAAA,EAAuEL,UAAU,CAACM,IAAI,CACpF,IACF,CAAC,CAAA,YAAA,EAAeE,SAAS,CAAA,CAAE,EAC3BR,UAAU,CAACO,QAAQ,CAACC,SAAS,CAC/B,CAAC;AAED,IAAA,OAAOA,SAAS;AAClB,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,qBAAqB,CAAC;AAEvC,IAAA,IAAI,IAAI,CAACN,IAAI,CAACO,OAAO,EAAE;AACrBD,MAAAA,OAAO,CAACE,IAAI,CAAC,8BAA8B,CAAC;AAC9C,IAAA;AACA,IAAA,IAAI,IAAI,CAACR,IAAI,CAACS,QAAQ,EAAE;AACtBH,MAAAA,OAAO,CAACE,IAAI,CAAC,+BAA+B,CAAC;AAC/C,IAAA;AACA,IAAA,IAAI,IAAI,CAACR,IAAI,CAACU,QAAQ,EAAE;AACtBJ,MAAAA,OAAO,CAACE,IAAI,CAAC,sCAAsC,CAAC;AACtD,IAAA,CAAC,MAAM;AACLF,MAAAA,OAAO,CAACE,IAAI,CAAC,sCAAsC,CAAC;AACtD,IAAA;;AAEA;IACAF,OAAO,CAACE,IAAI,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAACT,eAAe,EAAE,CAAC;;AAEpE;IACAO,OAAO,CAACE,IAAI,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAACJ,SAAS,EAAE,CAAC;AAE5D,IAAA,OAAOE,OAAO,CAACJ,IAAI,CAAC,GAAG,CAAC;AAC1B,EAAA;AACF;AAACS,oBAAA,CAAAC,QAAA,EAvEoBf,gBAAgB,CAAA;;;;"}
|