@hashicorp/design-system-components 4.11.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/declarations/components/hds/app-footer/index.d.ts +4 -4
- package/declarations/components/hds/app-footer/index.d.ts.map +1 -1
- package/declarations/components/hds/app-footer/item.d.ts +3 -3
- package/declarations/components/hds/app-footer/item.d.ts.map +1 -1
- package/declarations/components/hds/app-footer/link.d.ts +3 -3
- package/declarations/components/hds/app-footer/link.d.ts.map +1 -1
- package/declarations/components/hds/app-frame/parts/footer.d.ts +3 -3
- package/declarations/components/hds/app-frame/parts/footer.d.ts.map +1 -1
- package/declarations/components/hds/app-frame/parts/header.d.ts +3 -3
- package/declarations/components/hds/app-frame/parts/header.d.ts.map +1 -1
- package/declarations/components/hds/app-frame/parts/main.d.ts +3 -3
- package/declarations/components/hds/app-frame/parts/main.d.ts.map +1 -1
- package/declarations/components/hds/app-frame/parts/modals.d.ts +3 -3
- package/declarations/components/hds/app-frame/parts/modals.d.ts.map +1 -1
- package/declarations/components/hds/app-frame/parts/sidebar.d.ts +3 -3
- package/declarations/components/hds/app-frame/parts/sidebar.d.ts.map +1 -1
- package/declarations/components/hds/badge-count/index.d.ts +1 -1
- package/declarations/components/hds/badge-count/index.d.ts.map +1 -1
- package/declarations/components/hds/button/index.d.ts +15 -16
- package/declarations/components/hds/button/index.d.ts.map +1 -1
- package/declarations/components/hds/button/types.d.ts +23 -0
- package/declarations/components/hds/button/types.d.ts.map +1 -0
- package/declarations/components/hds/code-block/index.d.ts.map +1 -1
- package/declarations/components/hds/dialog-primitive/footer.d.ts +5 -4
- package/declarations/components/hds/dialog-primitive/footer.d.ts.map +1 -1
- package/declarations/components/hds/disclosure-primitive/index.d.ts.map +1 -1
- package/declarations/components/hds/dropdown/index.d.ts +1 -0
- package/declarations/components/hds/dropdown/index.d.ts.map +1 -1
- package/declarations/components/hds/icon-tile/types.d.ts +1 -1
- package/declarations/components/hds/icon-tile/types.d.ts.map +1 -1
- package/declarations/components/hds/interactive/index.d.ts +4 -4
- package/declarations/components/hds/interactive/index.d.ts.map +1 -1
- package/declarations/components/hds/menu-primitive/index.d.ts.map +1 -1
- package/declarations/components/hds/pagination/numbered/index.d.ts +1 -1
- package/declarations/components/hds/popover-primitive/index.d.ts.map +1 -1
- package/declarations/components/hds/side-nav/index.d.ts +1 -0
- package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
- package/declarations/components/hds/side-nav/portal/index.d.ts +3 -4
- package/declarations/components/hds/side-nav/portal/index.d.ts.map +1 -1
- package/declarations/components/hds/table/index.d.ts +14 -14
- package/declarations/components/hds/table/index.d.ts.map +1 -1
- package/declarations/components/hds/table/td.d.ts +2 -2
- package/declarations/components/hds/table/td.d.ts.map +1 -1
- package/declarations/components/hds/table/th-button-sort.d.ts +2 -2
- package/declarations/components/hds/table/th-button-sort.d.ts.map +1 -1
- package/declarations/components/hds/table/th-button-tooltip.d.ts +2 -2
- package/declarations/components/hds/table/th-button-tooltip.d.ts.map +1 -1
- package/declarations/components/hds/table/th-selectable.d.ts +9 -9
- package/declarations/components/hds/table/th-selectable.d.ts.map +1 -1
- package/declarations/components/hds/table/th-sort.d.ts +4 -4
- package/declarations/components/hds/table/th-sort.d.ts.map +1 -1
- package/declarations/components/hds/table/th.d.ts +2 -2
- package/declarations/components/hds/table/th.d.ts.map +1 -1
- package/declarations/components/hds/table/tr.d.ts +14 -14
- package/declarations/components/hds/table/tr.d.ts.map +1 -1
- package/declarations/components/hds/table/types.d.ts +1 -1
- package/declarations/components/hds/table/types.d.ts.map +1 -1
- package/declarations/components/hds/tabs/index.d.ts.map +1 -1
- package/declarations/components/hds/tabs/panel.d.ts +6 -6
- package/declarations/components/hds/tabs/panel.d.ts.map +1 -1
- package/declarations/components/hds/tabs/tab.d.ts +7 -7
- package/declarations/components/hds/tabs/tab.d.ts.map +1 -1
- package/declarations/components/hds/tooltip-button/index.d.ts +4 -4
- package/declarations/components/hds/tooltip-button/index.d.ts.map +1 -1
- package/declarations/modifiers/hds-tooltip.d.ts +1 -1
- package/declarations/modifiers/hds-tooltip.d.ts.map +1 -1
- package/declarations/utils/hds-aria-described-by.d.ts.map +1 -1
- package/dist/_app_/instance-initializers/load-sprite.js +1 -0
- package/dist/components/hds/app-footer/index.js.map +1 -1
- package/dist/components/hds/app-footer/item.js +4 -4
- package/dist/components/hds/app-footer/item.js.map +1 -1
- package/dist/components/hds/app-footer/link.js +4 -4
- package/dist/components/hds/app-footer/link.js.map +1 -1
- package/dist/components/hds/app-frame/parts/footer.js +4 -4
- package/dist/components/hds/app-frame/parts/footer.js.map +1 -1
- package/dist/components/hds/app-frame/parts/header.js +4 -4
- package/dist/components/hds/app-frame/parts/header.js.map +1 -1
- package/dist/components/hds/app-frame/parts/main.js +4 -4
- package/dist/components/hds/app-frame/parts/main.js.map +1 -1
- package/dist/components/hds/app-frame/parts/modals.js +4 -4
- package/dist/components/hds/app-frame/parts/modals.js.map +1 -1
- package/dist/components/hds/app-frame/parts/sidebar.js +4 -4
- package/dist/components/hds/app-frame/parts/sidebar.js.map +1 -1
- package/dist/components/hds/badge-count/index.js.map +1 -1
- package/dist/components/hds/button/index.js +7 -6
- package/dist/components/hds/button/index.js.map +1 -1
- package/dist/components/hds/button/types.js +26 -0
- package/dist/components/hds/button/types.js.map +1 -0
- package/dist/components/hds/code-block/index.js +2 -0
- package/dist/components/hds/code-block/index.js.map +1 -1
- package/dist/components/hds/dialog-primitive/footer.js +21 -5
- package/dist/components/hds/dialog-primitive/footer.js.map +1 -1
- package/dist/components/hds/disclosure-primitive/index.js +1 -0
- package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
- package/dist/components/hds/dropdown/index.js +1 -1
- package/dist/components/hds/dropdown/index.js.map +1 -1
- package/dist/components/hds/icon-tile/types.js.map +1 -1
- package/dist/components/hds/interactive/index.js.map +1 -1
- package/dist/components/hds/menu-primitive/index.js +1 -0
- package/dist/components/hds/menu-primitive/index.js.map +1 -1
- package/dist/components/hds/popover-primitive/index.js +1 -0
- package/dist/components/hds/popover-primitive/index.js.map +1 -1
- package/dist/components/hds/side-nav/index.js +12 -7
- package/dist/components/hds/side-nav/index.js.map +1 -1
- package/dist/components/hds/side-nav/portal/index.js +4 -4
- package/dist/components/hds/side-nav/portal/index.js.map +1 -1
- package/dist/components/hds/table/index.js +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-button-sort.js.map +1 -1
- package/dist/components/hds/table/th-button-tooltip.js.map +1 -1
- package/dist/components/hds/table/th-selectable.js +1 -1
- package/dist/components/hds/table/th-selectable.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/hds/table/tr.js.map +1 -1
- package/dist/components/hds/table/types.js.map +1 -1
- package/dist/components/hds/tabs/index.js +5 -0
- package/dist/components/hds/tabs/index.js.map +1 -1
- package/dist/components/hds/tabs/panel.js +1 -1
- package/dist/components/hds/tabs/panel.js.map +1 -1
- package/dist/components/hds/tabs/tab.js.map +1 -1
- package/dist/components/hds/tooltip-button/index.js +3 -2
- package/dist/components/hds/tooltip-button/index.js.map +1 -1
- package/dist/modifiers/hds-tooltip.js.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +12 -2
- package/dist/styles/components/code-block/index.scss +1 -0
- package/dist/styles/components/dialog-primitive.scss +6 -5
- package/dist/styles/components/form/masked-input.scss +1 -0
- package/dist/styles/components/form/radio-card.scss +12 -3
- package/dist/utils/hds-aria-described-by.js +2 -0
- package/dist/utils/hds-aria-described-by.js.map +1 -1
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"th-sort.js","sources":["../../../../src/components/hds/table/th-sort.hbs","../../../../src/components/hds/table/th-sort.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<th\\n class={{this.classNames}}\\n aria-sort={{this.ariaSort}}\\n {{style width=@width minWidth=@width}}\\n ...attributes\\n scope=\\\"col\\\"\\n>\\n <div class=\\\"hds-table__th-content\\\">\\n <span id={{this.labelId}} class=\\\"hds-typography-body-200 hds-font-weight-semibold\\\">{{yield}}</span>\\n {{#if @tooltip}}\\n <Hds::Table::ThButtonTooltip @tooltip={{@tooltip}} @labelId={{this.labelId}} />\\n {{/if}}\\n <Hds::Table::ThButtonSort @sortOrder={{@sortOrder}} @onClick={{@onClickSort}} @labelId={{this.labelId}} />\\n </div>\\n</th>\")","/**\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';\n\nimport {\n HdsTableHorizontalAlignmentValues,\n HdsTableThSortOrderValues,\n HdsTableThSortOrderLabelValues,\n} from './types.ts';\nimport type {\n HdsTableHorizontalAlignment,\n HdsTableThSortOrder,\n HdsTableThSortOrderLabels,\n} from './types.ts';\nimport type {
|
|
1
|
+
{"version":3,"file":"th-sort.js","sources":["../../../../src/components/hds/table/th-sort.hbs","../../../../src/components/hds/table/th-sort.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<th\\n class={{this.classNames}}\\n aria-sort={{this.ariaSort}}\\n {{style width=@width minWidth=@width}}\\n ...attributes\\n scope=\\\"col\\\"\\n>\\n <div class=\\\"hds-table__th-content\\\">\\n <span id={{this.labelId}} class=\\\"hds-typography-body-200 hds-font-weight-semibold\\\">{{yield}}</span>\\n {{#if @tooltip}}\\n <Hds::Table::ThButtonTooltip @tooltip={{@tooltip}} @labelId={{this.labelId}} />\\n {{/if}}\\n <Hds::Table::ThButtonSort @sortOrder={{@sortOrder}} @onClick={{@onClickSort}} @labelId={{this.labelId}} />\\n </div>\\n</th>\")","/**\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';\n\nimport {\n HdsTableHorizontalAlignmentValues,\n HdsTableThSortOrderValues,\n HdsTableThSortOrderLabelValues,\n} from './types.ts';\nimport type {\n HdsTableHorizontalAlignment,\n HdsTableThSortOrder,\n HdsTableThSortOrderLabels,\n} from './types.ts';\nimport type { HdsTableThButtonSortSignature } from './th-button-sort';\n\nexport const ALIGNMENTS: string[] = Object.values(\n HdsTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsTableHorizontalAlignmentValues.Left;\n\nexport interface HdsTableThSortSignature {\n Args: {\n align?: HdsTableHorizontalAlignment;\n onClickSort?: HdsTableThButtonSortSignature['Args']['onClick'];\n sortOrder?: HdsTableThSortOrder;\n tooltip?: string;\n width?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsTableThSort extends Component<HdsTableThSortSignature> {\n /**\n * Generates a unique ID for the <span> element (\"label\")\n *\n * @param labelId\n */\n labelId = guidFor(this);\n\n /**\n * @param ariaSort\n * @type {HdsTableThSortOrderLabels}\n * @private\n * @default none\n * @description Sets the aria-sort attribute based on the sort order defined; acceptable values are ascending, descending, none(default) and other. Authors SHOULD only apply this property to table headers or grid headers. If the property is not provided, there is no defined sort order. For each table or grid, authors SHOULD apply aria-sort to only one header at a time.\n */\n get ariaSort(): HdsTableThSortOrderLabels {\n switch (this.args.sortOrder) {\n case HdsTableThSortOrderValues.Asc:\n return HdsTableThSortOrderLabelValues.Asc;\n case HdsTableThSortOrderValues.Desc:\n return HdsTableThSortOrderLabelValues.Desc;\n default:\n // none is the default per the spec.\n return HdsTableThSortOrderLabelValues.None;\n }\n }\n\n /**\n * @param align\n * @type {HdsTableHorizontalAlignment}\n * @default left\n * @description Determines the text alignment of the header or cell content. Options are: \"left\", \"center\", \"right\". If no align is defined, \"left\" is used.\n */\n get align(): HdsTableHorizontalAlignment {\n const { align = DEFAULT_ALIGN } = this.args;\n\n assert(\n `@align for \"Hds::Table\" must be one of the following: ${ALIGNMENTS.join(\n ', '\n )}; received: ${align}`,\n ALIGNMENTS.includes(align)\n );\n return align;\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-table__th', 'hds-table__th--sort'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-table__th--align-${this.align}`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["ALIGNMENTS","Object","values","HdsTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsTableThSort","Component","constructor","args","_defineProperty","guidFor","ariaSort","sortOrder","HdsTableThSortOrderValues","Asc","HdsTableThSortOrderLabelValues","Desc","None","align","assert","join","includes","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AACA,eAAe,kBAAkB,CAAC,6mBAA6mB;;ACoBxoB,MAAMA,UAAoB,GAAGC,MAAM,CAACC,MAAM,CAC/CC,iCACF,EAAC;AACYC,MAAAA,aAAa,GAAGD,iCAAiC,CAACE,KAAI;AAgBpD,MAAMC,cAAc,SAASC,SAAS,CAA0B;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAC7E;AACF;AACA;AACA;AACA;AAJEC,IAAAA,eAAA,CAKUC,IAAAA,EAAAA,SAAAA,EAAAA,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,GAAA;AAEvB;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,QAAQA,GAA8B;AACxC,IAAA,QAAQ,IAAI,CAACH,IAAI,CAACI,SAAS;MACzB,KAAKC,yBAAyB,CAACC,GAAG;QAChC,OAAOC,8BAA8B,CAACD,GAAG,CAAA;MAC3C,KAAKD,yBAAyB,CAACG,IAAI;QACjC,OAAOD,8BAA8B,CAACC,IAAI,CAAA;AAC5C,MAAA;AACE;QACA,OAAOD,8BAA8B,CAACE,IAAI,CAAA;AAC9C,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,KAAKA,GAAgC;IACvC,MAAM;AAAEA,MAAAA,KAAK,GAAGf,aAAAA;KAAe,GAAG,IAAI,CAACK,IAAI,CAAA;AAE3CW,IAAAA,MAAM,CACJ,CAAyDpB,sDAAAA,EAAAA,UAAU,CAACqB,IAAI,CACtE,IACF,CAAC,CAAA,YAAA,EAAeF,KAAK,CAAA,CAAE,EACvBnB,UAAU,CAACsB,QAAQ,CAACH,KAAK,CAC3B,CAAC,CAAA;AACD,IAAA,OAAOA,KAAK,CAAA;AACd,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAII,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAA;;AAExD;IACA,IAAI,IAAI,CAACL,KAAK,EAAE;MACdK,OAAO,CAACC,IAAI,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAACN,KAAK,EAAE,CAAC,CAAA;AACpD,KAAA;AAEA,IAAA,OAAOK,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACK,oBAAA,CAAAC,QAAA,EA5DoBrB,cAAc,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"th.js","sources":["../../../../src/components/hds/table/th.hbs","../../../../src/components/hds/table/th.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<th class={{this.classNames}} {{style width=@width minWidth=@width}} ...attributes scope={{(or @scope \\\"col\\\")}}>\\n {{#if @isVisuallyHidden}}\\n <span class=\\\"sr-only\\\">{{yield}}</span>\\n {{else}}\\n {{#if @tooltip}}\\n <div class=\\\"hds-table__th-content\\\">\\n <span id={{this.labelId}} class=\\\"hds-typography-body-200 hds-font-weight-semibold\\\">{{yield}}</span>\\n <Hds::Table::ThButtonTooltip @tooltip={{@tooltip}} @labelId={{this.labelId}} />\\n </div>\\n {{else}}\\n <span class=\\\"hds-typography-body-200 hds-font-weight-semibold\\\">{{yield}}</span>\\n {{/if}}\\n {{/if}}\\n</th>\")","/**\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';\n\nimport type { HdsTableHorizontalAlignment, HdsTableScope } from './types.ts';\nimport { HdsTableHorizontalAlignmentValues } from './types.ts';\n\nexport const ALIGNMENTS: string[] = Object.values(\n HdsTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsTableHorizontalAlignmentValues.Left;\n\nexport interface
|
|
1
|
+
{"version":3,"file":"th.js","sources":["../../../../src/components/hds/table/th.hbs","../../../../src/components/hds/table/th.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<th class={{this.classNames}} {{style width=@width minWidth=@width}} ...attributes scope={{(or @scope \\\"col\\\")}}>\\n {{#if @isVisuallyHidden}}\\n <span class=\\\"sr-only\\\">{{yield}}</span>\\n {{else}}\\n {{#if @tooltip}}\\n <div class=\\\"hds-table__th-content\\\">\\n <span id={{this.labelId}} class=\\\"hds-typography-body-200 hds-font-weight-semibold\\\">{{yield}}</span>\\n <Hds::Table::ThButtonTooltip @tooltip={{@tooltip}} @labelId={{this.labelId}} />\\n </div>\\n {{else}}\\n <span class=\\\"hds-typography-body-200 hds-font-weight-semibold\\\">{{yield}}</span>\\n {{/if}}\\n {{/if}}\\n</th>\")","/**\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';\n\nimport type { HdsTableHorizontalAlignment, HdsTableScope } from './types.ts';\nimport { HdsTableHorizontalAlignmentValues } from './types.ts';\n\nexport const ALIGNMENTS: string[] = Object.values(\n HdsTableHorizontalAlignmentValues\n);\nexport const DEFAULT_ALIGN = HdsTableHorizontalAlignmentValues.Left;\n\nexport interface HdsTableThSignature {\n Args: {\n align?: HdsTableHorizontalAlignment;\n isVisuallyHidden?: boolean;\n scope?: HdsTableScope;\n tooltip?: string;\n width?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLTableCellElement;\n}\n\nexport default class HdsTableTh extends Component<HdsTableThSignature> {\n /**\n * Generates a unique ID for the <span> element (\"label\")\n *\n * @param labelId\n */\n labelId = guidFor(this);\n\n /**\n * @param align\n * @type {HdsTableHorizontalAlignment}\n * @default left\n * @description Determines the text alignment of the header or cell content. Options are: \"left\", \"center\", \"right\". If no align is defined, \"left\" is used.\n */\n get align(): HdsTableHorizontalAlignment {\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 return align;\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-table__th'];\n\n // add a class based on the @align argument\n if (this.align) {\n classes.push(`hds-table__th--align-${this.align}`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["ALIGNMENTS","Object","values","HdsTableHorizontalAlignmentValues","DEFAULT_ALIGN","Left","HdsTableTh","Component","constructor","args","_defineProperty","guidFor","align","assert","join","includes","classNames","classes","push","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AACA,eAAe,kBAAkB,CAAC,urBAAurB;;ACWltB,MAAMA,UAAoB,GAAGC,MAAM,CAACC,MAAM,CAC/CC,iCACF,EAAC;AACYC,MAAAA,aAAa,GAAGD,iCAAiC,CAACE,KAAI;AAgBpD,MAAMC,UAAU,SAASC,SAAS,CAAsB;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AACrE;AACF;AACA;AACA;AACA;AAJEC,IAAAA,eAAA,CAKUC,IAAAA,EAAAA,SAAAA,EAAAA,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;AAAA,GAAA;AAEvB;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,KAAKA,GAAgC;IACvC,MAAM;AAAEA,MAAAA,KAAK,GAAGR,aAAAA;KAAe,GAAG,IAAI,CAACK,IAAI,CAAA;AAE3CI,IAAAA,MAAM,CACJ,CAA6Db,0DAAAA,EAAAA,UAAU,CAACc,IAAI,CAC1E,IACF,CAAC,CAAA,YAAA,EAAeF,KAAK,CAAA,CAAE,EACvBZ,UAAU,CAACe,QAAQ,CAACH,KAAK,CAC3B,CAAC,CAAA;AACD,IAAA,OAAOA,KAAK,CAAA;AACd,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAII,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAA;;AAEjC;IACA,IAAI,IAAI,CAACL,KAAK,EAAE;MACdK,OAAO,CAACC,IAAI,CAAC,CAAA,qBAAA,EAAwB,IAAI,CAACN,KAAK,EAAE,CAAC,CAAA;AACpD,KAAA;AAEA,IAAA,OAAOK,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACK,oBAAA,CAAAC,QAAA,EAzCoBd,UAAU,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tr.js","sources":["../../../../src/components/hds/table/tr.hbs","../../../../src/components/hds/table/tr.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<tr class=\\\"hds-table__tr\\\" ...attributes>\\n {{#if @isSelectable}}\\n <Hds::Table::ThSelectable\\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 />\\n {{/if}}\\n\\n {{yield}}\\n</tr>\")","/**\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 { HdsTableScopeValues } from './types.ts';\nimport type { HdsTableScope, HdsTableThSortOrder } from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base';\nimport type {
|
|
1
|
+
{"version":3,"file":"tr.js","sources":["../../../../src/components/hds/table/tr.hbs","../../../../src/components/hds/table/tr.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<tr class=\\\"hds-table__tr\\\" ...attributes>\\n {{#if @isSelectable}}\\n <Hds::Table::ThSelectable\\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 />\\n {{/if}}\\n\\n {{yield}}\\n</tr>\")","/**\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 { HdsTableScopeValues } from './types.ts';\nimport type { HdsTableScope, HdsTableThSortOrder } from './types.ts';\nimport type { HdsFormCheckboxBaseSignature } from '../form/checkbox/base';\nimport type { HdsTableSignature } from './index.ts';\nimport type { HdsTableThSelectableSignature } from './th-selectable.ts';\n\nexport interface BaseHdsTableTrSignature {\n Args: {\n selectableColumnKey?: HdsTableSignature['Args']['selectableColumnKey'];\n isSelectable?: boolean;\n isSelected?: false;\n selectionAriaLabelSuffix?: string;\n selectionKey?: string;\n selectionScope?: HdsTableScope;\n sortBySelectedOrder?: HdsTableThSortOrder;\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?: HdsTableThSelectableSignature['Args']['onClickSortBySelected'];\n };\n Blocks: {\n default: [];\n };\n Element: HTMLTableRowElement;\n}\n\n// Extended interface for selectable rows\nexport interface SelectableHdsTableTrArgs extends BaseHdsTableTrSignature {\n Args: BaseHdsTableTrSignature['Args'] & {\n isSelectable: true;\n selectionScope?: HdsTableScopeValues.Row;\n selectionKey: string; // Now required for selectable rows\n };\n}\n\n// Union type to combine both possible states\nexport type HdsTableTrSignature =\n | BaseHdsTableTrSignature\n | SelectableHdsTableTrArgs;\nexport default class HdsTableTr extends Component<HdsTableTrSignature> {\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"],"names":["HdsTableTr","Component","selectionKey","args","isSelectable","selectionScope","assert","undefined","setComponentTemplate","TEMPLATE"],"mappings":";;;;;AACA,eAAe,kBAAkB,CAAC,0nBAA0nB;;ACD5pB;AACA;AACA;AACA;;AAiDe,MAAMA,UAAU,SAASC,SAAS,CAAsB;EACrE,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,CAAA;AACD,MAAA,OAAO,IAAI,CAACC,IAAI,CAACD,YAAY,CAAA;AAC/B,KAAA;AACA,IAAA,OAAOK,SAAS,CAAA;AAClB,GAAA;AACF,CAAA;AAACC,oBAAA,CAAAC,QAAA,EAXoBT,UAAU,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/components/hds/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';\n\nexport enum HdsTableDensityValues {\n Default = 'default',\n Medium = 'medium',\n Short = 'short',\n Tall = 'tall',\n}\nexport type HdsTableDensities = `${HdsTableDensityValues}`;\n\nexport enum HdsTableHorizontalAlignmentValues {\n Center = 'center',\n Left = 'left',\n Right = 'right',\n}\nexport type HdsTableHorizontalAlignment =\n `${HdsTableHorizontalAlignmentValues}`;\n\nexport enum HdsTableScopeValues {\n Col = 'col',\n Row = 'row',\n}\nexport type HdsTableScope = `${HdsTableScopeValues}`;\n\nexport enum HdsTableThSortOrderIconValues {\n ArrowDown = 'arrow-down',\n ArrowUp = 'arrow-up',\n SwapVertical = 'swap-vertical',\n}\nexport type HdsTableThSortOrderIcons = `${HdsTableThSortOrderIconValues}`;\n\nexport enum HdsTableThSortOrderLabelValues {\n Asc = 'ascending',\n Desc = 'descending',\n None = 'none',\n}\nexport type HdsTableThSortOrderLabels = `${HdsTableThSortOrderLabelValues}`;\n\nexport enum HdsTableThSortOrderValues {\n Asc = 'asc',\n Desc = 'desc',\n}\nexport type HdsTableThSortOrder = `${HdsTableThSortOrderValues}`;\n\nexport enum HdsTableVerticalAlignmentValues {\n Baseline = 'baseline',\n Middle = 'middle',\n Top = 'top',\n}\nexport type HdsTableVerticalAlignment = `${HdsTableVerticalAlignmentValues}`;\n\nexport type HdsTableSelectableRow = {\n checkbox: HdsFormCheckboxBaseSignature['Element'];\n selectionKey: string;\n};\n\ninterface BaseHdsTableColumn {\n align?: HdsTableHorizontalAlignment;\n isVisuallyHidden?: boolean;\n label: string;\n sortingFunction?: HdsTableSortingFunction<unknown>;\n tooltip?: string;\n width?: string;\n}\n\ninterface SortableHdsTableColumn extends BaseHdsTableColumn {\n isSortable: true;\n key: string;\n}\n\ninterface NonSortableHdsTableColumn extends BaseHdsTableColumn {\n isSortable?: false;\n key?: string;\n}\n\nexport type HdsTableColumn = SortableHdsTableColumn | NonSortableHdsTableColumn;\n\nexport type HdsTableSortingFunction<T> = (a: T, b: T) => number;\n\nexport interface
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/hds/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';\n\nexport enum HdsTableDensityValues {\n Default = 'default',\n Medium = 'medium',\n Short = 'short',\n Tall = 'tall',\n}\nexport type HdsTableDensities = `${HdsTableDensityValues}`;\n\nexport enum HdsTableHorizontalAlignmentValues {\n Center = 'center',\n Left = 'left',\n Right = 'right',\n}\nexport type HdsTableHorizontalAlignment =\n `${HdsTableHorizontalAlignmentValues}`;\n\nexport enum HdsTableScopeValues {\n Col = 'col',\n Row = 'row',\n}\nexport type HdsTableScope = `${HdsTableScopeValues}`;\n\nexport enum HdsTableThSortOrderIconValues {\n ArrowDown = 'arrow-down',\n ArrowUp = 'arrow-up',\n SwapVertical = 'swap-vertical',\n}\nexport type HdsTableThSortOrderIcons = `${HdsTableThSortOrderIconValues}`;\n\nexport enum HdsTableThSortOrderLabelValues {\n Asc = 'ascending',\n Desc = 'descending',\n None = 'none',\n}\nexport type HdsTableThSortOrderLabels = `${HdsTableThSortOrderLabelValues}`;\n\nexport enum HdsTableThSortOrderValues {\n Asc = 'asc',\n Desc = 'desc',\n}\nexport type HdsTableThSortOrder = `${HdsTableThSortOrderValues}`;\n\nexport enum HdsTableVerticalAlignmentValues {\n Baseline = 'baseline',\n Middle = 'middle',\n Top = 'top',\n}\nexport type HdsTableVerticalAlignment = `${HdsTableVerticalAlignmentValues}`;\n\nexport type HdsTableSelectableRow = {\n checkbox: HdsFormCheckboxBaseSignature['Element'];\n selectionKey: string;\n};\n\ninterface BaseHdsTableColumn {\n align?: HdsTableHorizontalAlignment;\n isVisuallyHidden?: boolean;\n label: string;\n sortingFunction?: HdsTableSortingFunction<unknown>;\n tooltip?: string;\n width?: string;\n}\n\ninterface SortableHdsTableColumn extends BaseHdsTableColumn {\n isSortable: true;\n key: string;\n}\n\ninterface NonSortableHdsTableColumn extends BaseHdsTableColumn {\n isSortable?: false;\n key?: string;\n}\n\nexport type HdsTableColumn = SortableHdsTableColumn | NonSortableHdsTableColumn;\n\nexport type HdsTableSortingFunction<T> = (a: T, b: T) => number;\n\nexport interface HdsTableOnSelectionChangeSignature {\n selectionKey?: string;\n selectionCheckboxElement?: HdsFormCheckboxBaseSignature['Element'];\n selectedRowsKeys: string[];\n selectableRowsStates: {\n selectionKey: string;\n isSelected?: boolean;\n }[];\n}\n\nexport type HdsTableModel = Array<Record<string, unknown>>;\n"],"names":["HdsTableDensityValues","HdsTableHorizontalAlignmentValues","HdsTableScopeValues","HdsTableThSortOrderIconValues","HdsTableThSortOrderLabelValues","HdsTableThSortOrderValues","HdsTableVerticalAlignmentValues"],"mappings":"AAAA;AACA;AACA;AACA;;AAIYA,IAAAA,qBAAqB,0BAArBA,qBAAqB,EAAA;EAArBA,qBAAqB,CAAA,SAAA,CAAA,GAAA,SAAA,CAAA;EAArBA,qBAAqB,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA;EAArBA,qBAAqB,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;EAArBA,qBAAqB,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;AAAA,EAAA,OAArBA,qBAAqB,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;AAQrBC,IAAAA,iCAAiC,0BAAjCA,iCAAiC,EAAA;EAAjCA,iCAAiC,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA;EAAjCA,iCAAiC,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;EAAjCA,iCAAiC,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;AAAA,EAAA,OAAjCA,iCAAiC,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;AAQjCC,IAAAA,mBAAmB,0BAAnBA,mBAAmB,EAAA;EAAnBA,mBAAmB,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;EAAnBA,mBAAmB,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;AAAA,EAAA,OAAnBA,mBAAmB,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;AAMnBC,IAAAA,6BAA6B,0BAA7BA,6BAA6B,EAAA;EAA7BA,6BAA6B,CAAA,WAAA,CAAA,GAAA,YAAA,CAAA;EAA7BA,6BAA6B,CAAA,SAAA,CAAA,GAAA,UAAA,CAAA;EAA7BA,6BAA6B,CAAA,cAAA,CAAA,GAAA,eAAA,CAAA;AAAA,EAAA,OAA7BA,6BAA6B,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;AAO7BC,IAAAA,8BAA8B,0BAA9BA,8BAA8B,EAAA;EAA9BA,8BAA8B,CAAA,KAAA,CAAA,GAAA,WAAA,CAAA;EAA9BA,8BAA8B,CAAA,MAAA,CAAA,GAAA,YAAA,CAAA;EAA9BA,8BAA8B,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;AAAA,EAAA,OAA9BA,8BAA8B,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;AAO9BC,IAAAA,yBAAyB,0BAAzBA,yBAAyB,EAAA;EAAzBA,yBAAyB,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;EAAzBA,yBAAyB,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;AAAA,EAAA,OAAzBA,yBAAyB,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;AAMzBC,IAAAA,+BAA+B,0BAA/BA,+BAA+B,EAAA;EAA/BA,+BAA+B,CAAA,UAAA,CAAA,GAAA,UAAA,CAAA;EAA/BA,+BAA+B,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA;EAA/BA,+BAA+B,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;AAAA,EAAA,OAA/BA,+BAA+B,CAAA;AAAA,CAAA,CAAA,EAAA;;;;"}
|
|
@@ -72,11 +72,14 @@ let HdsTabs = (_class = class HdsTabs extends Component {
|
|
|
72
72
|
if (this.selectedTabId) {
|
|
73
73
|
this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);
|
|
74
74
|
}
|
|
75
|
+
|
|
76
|
+
// eslint-disable-next-line ember/no-runloop
|
|
75
77
|
schedule('afterRender', () => {
|
|
76
78
|
this.setTabIndicator();
|
|
77
79
|
});
|
|
78
80
|
}
|
|
79
81
|
didUpdateSelectedTabIndex() {
|
|
82
|
+
// eslint-disable-next-line ember/no-runloop
|
|
80
83
|
schedule('afterRender', () => {
|
|
81
84
|
this.setTabIndicator();
|
|
82
85
|
});
|
|
@@ -92,6 +95,7 @@ let HdsTabs = (_class = class HdsTabs extends Component {
|
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
97
|
didUpdateParentVisibility() {
|
|
98
|
+
// eslint-disable-next-line ember/no-runloop
|
|
95
99
|
schedule('afterRender', () => {
|
|
96
100
|
this.setTabIndicator();
|
|
97
101
|
});
|
|
@@ -161,6 +165,7 @@ let HdsTabs = (_class = class HdsTabs extends Component {
|
|
|
161
165
|
this.tabNodes[tabIndex]?.focus();
|
|
162
166
|
}
|
|
163
167
|
setTabIndicator() {
|
|
168
|
+
// eslint-disable-next-line ember/no-runloop
|
|
164
169
|
next(() => {
|
|
165
170
|
const tabElem = this.tabNodes[this.selectedTabIndex];
|
|
166
171
|
if (tabElem != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/tabs/index.hbs","../../../../src/components/hds/tabs/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable no-invalid-role }}\\n<div\\n class={{this.classNames}}\\n {{did-insert this.didInsert}}\\n {{did-update this.didUpdateSelectedTabIndex this.selectedTabIndex}}\\n {{did-update this.didUpdateSelectedTabId this.selectedTabId}}\\n {{did-update this.didUpdateParentVisibility @isParentVisible}}\\n ...attributes\\n>\\n <div class=\\\"hds-tabs__tablist-wrapper\\\">\\n <ul class=\\\"hds-tabs__tablist\\\" role=\\\"tablist\\\">\\n {{yield\\n (hash\\n Tab=(component\\n \\\"hds/tabs/tab\\\"\\n didInsertNode=this.didInsertTab\\n didUpdateNode=this.didUpdateTab\\n willDestroyNode=this.willDestroyTab\\n tabIds=this.tabIds\\n selectedTabIndex=this.selectedTabIndex\\n onClick=this.onClick\\n onKeyUp=this.onKeyUp\\n )\\n )\\n }}\\n <li class=\\\"hds-tabs__tab-indicator\\\" role=\\\"presentation\\\"></li>\\n </ul>\\n </div>\\n\\n {{yield\\n (hash\\n Panel=(component\\n \\\"hds/tabs/panel\\\"\\n didInsertNode=this.didInsertPanel\\n willDestroyNode=this.willDestroyPanel\\n tabIds=this.tabIds\\n panelIds=this.panelIds\\n selectedTabIndex=this.selectedTabIndex\\n )\\n )\\n }}\\n</div>\\n{{! template-lint-enable no-invalid-role }}\")","/**\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, warn } from '@ember/debug';\nimport { next, schedule } from '@ember/runloop';\nimport { HdsTabsSizeValues } from './types.ts';\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelSignature } from './panel';\nimport type { HdsTabsTabIds, HdsTabsPanelIds, HdsTabsSizes } from './types.ts';\n\nexport const DEFAULT_SIZE: HdsTabsSizes = 'medium' as const;\nexport const SIZES: HdsTabsSizes[] = Object.values(HdsTabsSizeValues);\ninterface HdsTabsSignature {\n Args: {\n size?: HdsTabsSizes;\n onClickTab?: (event: MouseEvent, tabIndex: number) => void;\n selectedTabIndex?: HdsTabsTabSignature['Args']['selectedTabIndex'];\n isParentVisible?: boolean;\n };\n Blocks: {\n default: [\n {\n Tab?: ComponentLike<HdsTabsTabSignature>;\n Panel?: ComponentLike<HdsTabsPanelSignature>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsTabs extends Component<HdsTabsSignature> {\n @tracked tabNodes: HTMLButtonElement[] = [];\n @tracked tabIds: HdsTabsTabIds = [];\n @tracked panelNodes: HTMLElement[] = [];\n @tracked panelIds: HdsTabsPanelIds = [];\n @tracked _selectedTabIndex = this.args.selectedTabIndex ?? 0;\n @tracked selectedTabId?: string;\n @tracked isControlled: boolean;\n\n /**\n * Sets the size of Tabs\n * Accepted values: medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsTabsSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Tabs\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n constructor(owner: unknown, args: HdsTabsSignature['Args']) {\n super(owner, args);\n\n // this is to determine if the \"selected\" tab logic is controlled in the consumers' code or is maintained as an internal state\n this.isControlled = this.args.selectedTabIndex !== undefined;\n }\n\n get selectedTabIndex(): number {\n if (this.isControlled) {\n return this.args.selectedTabIndex!;\n } else {\n return this._selectedTabIndex;\n }\n }\n\n set selectedTabIndex(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._selectedTabIndex = value;\n }\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-tabs'];\n\n // add a class based on the @size argument\n classes.push(`hds-tabs--size-${this.size}`);\n\n return classes.join(' ');\n }\n\n @action\n didInsert(): void {\n assert(\n 'The number of Tabs must be equal to the number of Panels',\n this.tabNodes.length === this.panelNodes.length\n );\n\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabIndex(): void {\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabId(): void {\n // if the selected tab is set dynamically (eg. in a `each` loop)\n // the `Tab` nodes will be re-inserted/rendered, which means the `this.selectedTabId` variable changes\n // but the parent `Tabs` component has already been rendered/inserted but doesn't re-render\n // so the value of the `selectedTabIndex` is not updated, unless we trigger a recalculation\n // using the `did-update` modifier that checks for changes in the `this.selectedTabId` variable\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n }\n\n @action\n didUpdateParentVisibility(): void {\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didInsertTab(element: HTMLButtonElement, isSelected?: boolean): void {\n this.tabNodes = [...this.tabNodes, element];\n this.tabIds = [...this.tabIds, element.id];\n if (isSelected) {\n this.selectedTabId = element.id;\n }\n }\n\n @action\n didUpdateTab(tabIndex: number, isSelected?: boolean): void {\n if (isSelected) {\n this.selectedTabIndex = tabIndex;\n }\n this.setTabIndicator();\n }\n\n @action\n willDestroyTab(element: HTMLButtonElement): void {\n this.tabNodes = this.tabNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this.tabIds = this.tabIds.filter((tabId): boolean => tabId !== element.id);\n }\n\n @action\n didInsertPanel(element: HTMLElement, panelId: string): void {\n this.panelNodes = [...this.panelNodes, element];\n this.panelIds = [...this.panelIds, panelId];\n }\n\n @action\n willDestroyPanel(element: HTMLElement): void {\n this.panelNodes = this.panelNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this.panelIds = this.panelIds.filter(\n (panelId): boolean => panelId !== element.id\n );\n }\n\n @action\n onClick(event: MouseEvent, tabIndex: number): void {\n this.selectedTabIndex = tabIndex;\n this.setTabIndicator();\n\n // invoke the callback function if it's provided as argument\n if (typeof this.args.onClickTab === 'function') {\n this.args.onClickTab(event, tabIndex);\n }\n }\n\n @action\n onKeyUp(tabIndex: number, event: KeyboardEvent): void {\n const leftArrow = 'ArrowLeft';\n const rightArrow = 'ArrowRight';\n const enterKey = 'Enter';\n const spaceKey = ' ';\n\n if (event.key === rightArrow) {\n const nextTabIndex = (tabIndex + 1) % this.tabIds.length;\n this.focusTab(nextTabIndex, event);\n } else if (event.key === leftArrow) {\n const prevTabIndex =\n (tabIndex + this.tabIds.length - 1) % this.tabIds.length;\n this.focusTab(prevTabIndex, event);\n } else if (event.key === enterKey || event.key === spaceKey) {\n this.selectedTabIndex = tabIndex;\n }\n // scroll selected tab into view (it may be out of view when activated using a keyboard with `prev/next`)\n const parentNode = this.tabNodes[this.selectedTabIndex]?.parentNode;\n if (parentNode instanceof HTMLElement) {\n parentNode.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n // Focus tab for keyboard & mouse navigation:\n focusTab(tabIndex: number, event: KeyboardEvent): void {\n event.preventDefault();\n this.tabNodes[tabIndex]?.focus();\n }\n\n setTabIndicator(): void {\n next((): void => {\n const tabElem = this.tabNodes[this.selectedTabIndex];\n\n if (tabElem != null) {\n const tabElemParentNode = tabElem.parentNode as HTMLElement;\n const tabsElemClosestList = tabElem.closest(\n '.hds-tabs__tablist'\n ) as HTMLElement;\n\n // this condition is `null` if any of the parents has `display: none`\n if (tabElemParentNode.offsetParent) {\n const tabLeftPos = tabElemParentNode.offsetLeft;\n const tabWidth = tabElemParentNode.offsetWidth;\n\n // Set CSS custom properties for indicator\n tabsElemClosestList.style.setProperty(\n '--indicator-left-pos',\n tabLeftPos + 'px'\n );\n tabsElemClosestList.style.setProperty(\n '--indicator-width',\n tabWidth + 'px'\n );\n }\n } else {\n let message = '';\n message +=\n '\"Hds::Tabs\" has tried to set the indicator for an element that doesn\\'t exist';\n if (this.tabNodes.length === 0) {\n message +=\n ' (the array `this.tabNodes` is empty, there are no tabs, probably already destroyed)';\n } else {\n message += ` (the value ${\n this.selectedTabIndex\n } of \\`this.selectedTabIndex\\` is out of bound for the array \\`this.tabNodes\\`, whose index range is [0 - ${\n this.tabNodes.length - 1\n }])`;\n }\n // https://api.emberjs.com/ember/5.3/classes/@ember%2Fdebug/methods/warn?anchor=warn\n warn(message, true, {\n id: 'hds-debug.tabs.setTabIndicator-tabElem-not-available',\n });\n }\n });\n }\n}\n"],"names":["DEFAULT_SIZE","SIZES","Object","values","HdsTabsSizeValues","HdsTabs","_class","Component","size","args","assert","join","includes","constructor","owner","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","isControlled","selectedTabIndex","undefined","_selectedTabIndex","value","classNames","classes","push","didInsert","tabNodes","length","panelNodes","selectedTabId","tabIds","indexOf","schedule","setTabIndicator","didUpdateSelectedTabIndex","didUpdateSelectedTabId","didUpdateParentVisibility","didInsertTab","element","isSelected","id","didUpdateTab","tabIndex","willDestroyTab","filter","node","tabId","didInsertPanel","panelId","panelIds","willDestroyPanel","onClick","event","onClickTab","onKeyUp","leftArrow","rightArrow","enterKey","spaceKey","key","nextTabIndex","focusTab","prevTabIndex","parentNode","HTMLElement","scrollIntoView","behavior","block","inline","preventDefault","focus","next","tabElem","tabElemParentNode","tabsElemClosestList","closest","offsetParent","tabLeftPos","offsetLeft","tabWidth","offsetWidth","style","setProperty","message","warn","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/tabs/index.hbs","../../../../src/components/hds/tabs/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable no-invalid-role }}\\n<div\\n class={{this.classNames}}\\n {{did-insert this.didInsert}}\\n {{did-update this.didUpdateSelectedTabIndex this.selectedTabIndex}}\\n {{did-update this.didUpdateSelectedTabId this.selectedTabId}}\\n {{did-update this.didUpdateParentVisibility @isParentVisible}}\\n ...attributes\\n>\\n <div class=\\\"hds-tabs__tablist-wrapper\\\">\\n <ul class=\\\"hds-tabs__tablist\\\" role=\\\"tablist\\\">\\n {{yield\\n (hash\\n Tab=(component\\n \\\"hds/tabs/tab\\\"\\n didInsertNode=this.didInsertTab\\n didUpdateNode=this.didUpdateTab\\n willDestroyNode=this.willDestroyTab\\n tabIds=this.tabIds\\n selectedTabIndex=this.selectedTabIndex\\n onClick=this.onClick\\n onKeyUp=this.onKeyUp\\n )\\n )\\n }}\\n <li class=\\\"hds-tabs__tab-indicator\\\" role=\\\"presentation\\\"></li>\\n </ul>\\n </div>\\n\\n {{yield\\n (hash\\n Panel=(component\\n \\\"hds/tabs/panel\\\"\\n didInsertNode=this.didInsertPanel\\n willDestroyNode=this.willDestroyPanel\\n tabIds=this.tabIds\\n panelIds=this.panelIds\\n selectedTabIndex=this.selectedTabIndex\\n )\\n )\\n }}\\n</div>\\n{{! template-lint-enable no-invalid-role }}\")","/**\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, warn } from '@ember/debug';\nimport { next, schedule } from '@ember/runloop';\nimport { HdsTabsSizeValues } from './types.ts';\nimport type { ComponentLike } from '@glint/template';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelSignature } from './panel';\nimport type { HdsTabsTabIds, HdsTabsPanelIds, HdsTabsSizes } from './types.ts';\n\nexport const DEFAULT_SIZE: HdsTabsSizes = 'medium' as const;\nexport const SIZES: HdsTabsSizes[] = Object.values(HdsTabsSizeValues);\ninterface HdsTabsSignature {\n Args: {\n size?: HdsTabsSizes;\n onClickTab?: (event: MouseEvent, tabIndex: number) => void;\n selectedTabIndex?: HdsTabsTabSignature['Args']['selectedTabIndex'];\n isParentVisible?: boolean;\n };\n Blocks: {\n default: [\n {\n Tab?: ComponentLike<HdsTabsTabSignature>;\n Panel?: ComponentLike<HdsTabsPanelSignature>;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsTabs extends Component<HdsTabsSignature> {\n @tracked tabNodes: HTMLButtonElement[] = [];\n @tracked tabIds: HdsTabsTabIds = [];\n @tracked panelNodes: HTMLElement[] = [];\n @tracked panelIds: HdsTabsPanelIds = [];\n @tracked _selectedTabIndex = this.args.selectedTabIndex ?? 0;\n @tracked selectedTabId?: string;\n @tracked isControlled: boolean;\n\n /**\n * Sets the size of Tabs\n * Accepted values: medium, large\n *\n * @param size\n * @type {string}\n * @default 'medium'\n */\n get size(): HdsTabsSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Tabs\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n constructor(owner: unknown, args: HdsTabsSignature['Args']) {\n super(owner, args);\n\n // this is to determine if the \"selected\" tab logic is controlled in the consumers' code or is maintained as an internal state\n this.isControlled = this.args.selectedTabIndex !== undefined;\n }\n\n get selectedTabIndex(): number {\n if (this.isControlled) {\n return this.args.selectedTabIndex!;\n } else {\n return this._selectedTabIndex;\n }\n }\n\n set selectedTabIndex(value) {\n if (this.isControlled) {\n // noop\n } else {\n this._selectedTabIndex = value;\n }\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-tabs'];\n\n // add a class based on the @size argument\n classes.push(`hds-tabs--size-${this.size}`);\n\n return classes.join(' ');\n }\n\n @action\n didInsert(): void {\n assert(\n 'The number of Tabs must be equal to the number of Panels',\n this.tabNodes.length === this.panelNodes.length\n );\n\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabIndex(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didUpdateSelectedTabId(): void {\n // if the selected tab is set dynamically (eg. in a `each` loop)\n // the `Tab` nodes will be re-inserted/rendered, which means the `this.selectedTabId` variable changes\n // but the parent `Tabs` component has already been rendered/inserted but doesn't re-render\n // so the value of the `selectedTabIndex` is not updated, unless we trigger a recalculation\n // using the `did-update` modifier that checks for changes in the `this.selectedTabId` variable\n if (this.selectedTabId) {\n this.selectedTabIndex = this.tabIds.indexOf(this.selectedTabId);\n }\n }\n\n @action\n didUpdateParentVisibility(): void {\n // eslint-disable-next-line ember/no-runloop\n schedule('afterRender', (): void => {\n this.setTabIndicator();\n });\n }\n\n @action\n didInsertTab(element: HTMLButtonElement, isSelected?: boolean): void {\n this.tabNodes = [...this.tabNodes, element];\n this.tabIds = [...this.tabIds, element.id];\n if (isSelected) {\n this.selectedTabId = element.id;\n }\n }\n\n @action\n didUpdateTab(tabIndex: number, isSelected?: boolean): void {\n if (isSelected) {\n this.selectedTabIndex = tabIndex;\n }\n this.setTabIndicator();\n }\n\n @action\n willDestroyTab(element: HTMLButtonElement): void {\n this.tabNodes = this.tabNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this.tabIds = this.tabIds.filter((tabId): boolean => tabId !== element.id);\n }\n\n @action\n didInsertPanel(element: HTMLElement, panelId: string): void {\n this.panelNodes = [...this.panelNodes, element];\n this.panelIds = [...this.panelIds, panelId];\n }\n\n @action\n willDestroyPanel(element: HTMLElement): void {\n this.panelNodes = this.panelNodes.filter(\n (node): boolean => node.id !== element.id\n );\n this.panelIds = this.panelIds.filter(\n (panelId): boolean => panelId !== element.id\n );\n }\n\n @action\n onClick(event: MouseEvent, tabIndex: number): void {\n this.selectedTabIndex = tabIndex;\n this.setTabIndicator();\n\n // invoke the callback function if it's provided as argument\n if (typeof this.args.onClickTab === 'function') {\n this.args.onClickTab(event, tabIndex);\n }\n }\n\n @action\n onKeyUp(tabIndex: number, event: KeyboardEvent): void {\n const leftArrow = 'ArrowLeft';\n const rightArrow = 'ArrowRight';\n const enterKey = 'Enter';\n const spaceKey = ' ';\n\n if (event.key === rightArrow) {\n const nextTabIndex = (tabIndex + 1) % this.tabIds.length;\n this.focusTab(nextTabIndex, event);\n } else if (event.key === leftArrow) {\n const prevTabIndex =\n (tabIndex + this.tabIds.length - 1) % this.tabIds.length;\n this.focusTab(prevTabIndex, event);\n } else if (event.key === enterKey || event.key === spaceKey) {\n this.selectedTabIndex = tabIndex;\n }\n // scroll selected tab into view (it may be out of view when activated using a keyboard with `prev/next`)\n const parentNode = this.tabNodes[this.selectedTabIndex]?.parentNode;\n if (parentNode instanceof HTMLElement) {\n parentNode.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n // Focus tab for keyboard & mouse navigation:\n focusTab(tabIndex: number, event: KeyboardEvent): void {\n event.preventDefault();\n this.tabNodes[tabIndex]?.focus();\n }\n\n setTabIndicator(): void {\n // eslint-disable-next-line ember/no-runloop\n next((): void => {\n const tabElem = this.tabNodes[this.selectedTabIndex];\n\n if (tabElem != null) {\n const tabElemParentNode = tabElem.parentNode as HTMLElement;\n const tabsElemClosestList = tabElem.closest(\n '.hds-tabs__tablist'\n ) as HTMLElement;\n\n // this condition is `null` if any of the parents has `display: none`\n if (tabElemParentNode.offsetParent) {\n const tabLeftPos = tabElemParentNode.offsetLeft;\n const tabWidth = tabElemParentNode.offsetWidth;\n\n // Set CSS custom properties for indicator\n tabsElemClosestList.style.setProperty(\n '--indicator-left-pos',\n tabLeftPos + 'px'\n );\n tabsElemClosestList.style.setProperty(\n '--indicator-width',\n tabWidth + 'px'\n );\n }\n } else {\n let message = '';\n message +=\n '\"Hds::Tabs\" has tried to set the indicator for an element that doesn\\'t exist';\n if (this.tabNodes.length === 0) {\n message +=\n ' (the array `this.tabNodes` is empty, there are no tabs, probably already destroyed)';\n } else {\n message += ` (the value ${\n this.selectedTabIndex\n } of \\`this.selectedTabIndex\\` is out of bound for the array \\`this.tabNodes\\`, whose index range is [0 - ${\n this.tabNodes.length - 1\n }])`;\n }\n // https://api.emberjs.com/ember/5.3/classes/@ember%2Fdebug/methods/warn?anchor=warn\n warn(message, true, {\n id: 'hds-debug.tabs.setTabIndicator-tabElem-not-available',\n });\n }\n });\n }\n}\n"],"names":["DEFAULT_SIZE","SIZES","Object","values","HdsTabsSizeValues","HdsTabs","_class","Component","size","args","assert","join","includes","constructor","owner","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","isControlled","selectedTabIndex","undefined","_selectedTabIndex","value","classNames","classes","push","didInsert","tabNodes","length","panelNodes","selectedTabId","tabIds","indexOf","schedule","setTabIndicator","didUpdateSelectedTabIndex","didUpdateSelectedTabId","didUpdateParentVisibility","didInsertTab","element","isSelected","id","didUpdateTab","tabIndex","willDestroyTab","filter","node","tabId","didInsertPanel","panelId","panelIds","willDestroyPanel","onClick","event","onClickTab","onKeyUp","leftArrow","rightArrow","enterKey","spaceKey","key","nextTabIndex","focusTab","prevTabIndex","parentNode","HTMLElement","scrollIntoView","behavior","block","inline","preventDefault","focus","next","tabElem","tabElemParentNode","tabsElemClosestList","closest","offsetParent","tabLeftPos","offsetLeft","tabWidth","offsetWidth","style","setProperty","message","warn","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ let HdsTabsPanel = (_class = class HdsTabsPanel extends Component {
|
|
|
35
35
|
* @returns string}
|
|
36
36
|
*/
|
|
37
37
|
get coupledTabId() {
|
|
38
|
-
return this.nodeIndex !== undefined ? this.args.tabIds[this.nodeIndex] : undefined;
|
|
38
|
+
return this.nodeIndex !== undefined ? this.args.tabIds?.[this.nodeIndex] : undefined;
|
|
39
39
|
}
|
|
40
40
|
didInsertNode(element) {
|
|
41
41
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.js","sources":["../../../../src/components/hds/tabs/panel.hbs","../../../../src/components/hds/tabs/panel.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<section\\n class=\\\"hds-tabs__panel\\\"\\n ...attributes\\n role=\\\"tabpanel\\\"\\n id={{this.panelId}}\\n hidden={{not this.isVisible}}\\n aria-labelledby={{this.coupledTabId}}\\n {{did-insert this.didInsertNode}}\\n {{will-destroy this.willDestroyNode}}\\n>\\n {{yield (hash isVisible=this.isVisible)}}\\n</section>\")","/**\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 { action } from '@ember/object';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelIds, HdsTabsTabIds } from './types';\n\nexport interface HdsTabsPanelSignature {\n Args: {\n tabIds
|
|
1
|
+
{"version":3,"file":"panel.js","sources":["../../../../src/components/hds/tabs/panel.hbs","../../../../src/components/hds/tabs/panel.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n<section\\n class=\\\"hds-tabs__panel\\\"\\n ...attributes\\n role=\\\"tabpanel\\\"\\n id={{this.panelId}}\\n hidden={{not this.isVisible}}\\n aria-labelledby={{this.coupledTabId}}\\n {{did-insert this.didInsertNode}}\\n {{will-destroy this.willDestroyNode}}\\n>\\n {{yield (hash isVisible=this.isVisible)}}\\n</section>\")","/**\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 { action } from '@ember/object';\nimport type { HdsTabsTabSignature } from './tab';\nimport type { HdsTabsPanelIds, HdsTabsTabIds } from './types';\n\nexport interface HdsTabsPanelSignature {\n Args: {\n tabIds?: HdsTabsTabIds;\n panelIds?: HdsTabsPanelIds;\n selectedTabIndex?: HdsTabsTabSignature['Args']['selectedTabIndex'];\n didInsertNode?: (element: HTMLElement, elementId: string) => void;\n willDestroyNode?: (element: HTMLElement) => void;\n };\n Blocks: {\n default: [\n {\n isVisible?: boolean;\n },\n ];\n };\n Element: HTMLElement;\n}\n\nexport default class HdsTabsPanel extends Component<HdsTabsPanelSignature> {\n /**\n * Generate a unique ID for the Panel\n * @return {string}\n */\n panelId = 'panel-' + guidFor(this);\n\n elementId?: string;\n\n get nodeIndex(): number | undefined {\n return this.args.panelIds\n ? this.args.panelIds.indexOf(this.panelId)\n : undefined;\n }\n\n /**\n * Check the condition if the panel is visible (because the coupled/associated tab is selected) or not\n * @returns {boolean}\n */\n get isVisible(): boolean {\n return this.nodeIndex === this.args.selectedTabIndex;\n }\n\n /**\n * Get the ID of the tab coupled/associated with the panel (it's used by the `aria-labelledby` attribute)\n * @returns string}\n */\n get coupledTabId(): string | undefined {\n return this.nodeIndex !== undefined\n ? this.args.tabIds?.[this.nodeIndex]\n : undefined;\n }\n\n @action\n didInsertNode(element: HTMLElement): void {\n const { didInsertNode } = this.args;\n\n if (typeof didInsertNode === 'function') {\n this.elementId = element.id;\n didInsertNode(element, this.elementId);\n }\n }\n\n @action\n willDestroyNode(element: HTMLElement): void {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n }\n}\n"],"names":["HdsTabsPanel","_class","Component","constructor","args","_defineProperty","guidFor","nodeIndex","panelIds","indexOf","panelId","undefined","isVisible","selectedTabIndex","coupledTabId","tabIds","didInsertNode","element","elementId","id","willDestroyNode","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;AACA,eAAe,kBAAkB,CAAC,sYAAsY;;;AC4BnZA,IAAAA,YAAY,IAAAC,MAAA,GAAlB,MAAMD,YAAY,SAASE,SAAS,CAAwB;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AACzE;AACF;AACA;AACA;AAHEC,IAAAA,eAAA,kBAIU,QAAQ,GAAGC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAA;IAAAD,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA;EAIlC,IAAIE,SAASA,GAAuB;AAClC,IAAA,OAAO,IAAI,CAACH,IAAI,CAACI,QAAQ,GACrB,IAAI,CAACJ,IAAI,CAACI,QAAQ,CAACC,OAAO,CAAC,IAAI,CAACC,OAAO,CAAC,GACxCC,SAAS,CAAA;AACf,GAAA;;AAEA;AACF;AACA;AACA;EACE,IAAIC,SAASA,GAAY;IACvB,OAAO,IAAI,CAACL,SAAS,KAAK,IAAI,CAACH,IAAI,CAACS,gBAAgB,CAAA;AACtD,GAAA;;AAEA;AACF;AACA;AACA;EACE,IAAIC,YAAYA,GAAuB;AACrC,IAAA,OAAO,IAAI,CAACP,SAAS,KAAKI,SAAS,GAC/B,IAAI,CAACP,IAAI,CAACW,MAAM,GAAG,IAAI,CAACR,SAAS,CAAC,GAClCI,SAAS,CAAA;AACf,GAAA;EAGAK,aAAaA,CAACC,OAAoB,EAAQ;IACxC,MAAM;AAAED,MAAAA,aAAAA;KAAe,GAAG,IAAI,CAACZ,IAAI,CAAA;AAEnC,IAAA,IAAI,OAAOY,aAAa,KAAK,UAAU,EAAE;AACvC,MAAA,IAAI,CAACE,SAAS,GAAGD,OAAO,CAACE,EAAE,CAAA;AAC3BH,MAAAA,aAAa,CAACC,OAAO,EAAE,IAAI,CAACC,SAAS,CAAC,CAAA;AACxC,KAAA;AACF,GAAA;EAGAE,eAAeA,CAACH,OAAoB,EAAQ;IAC1C,MAAM;AAAEG,MAAAA,eAAAA;KAAiB,GAAG,IAAI,CAAChB,IAAI,CAAA;AAErC,IAAA,IAAI,OAAOgB,eAAe,KAAK,UAAU,EAAE;MACzCA,eAAe,CAACH,OAAO,CAAC,CAAA;AAC1B,KAAA;AACF,GAAA;AACF,CAAC,GAAAI,yBAAA,CAAApB,MAAA,CAAAqB,SAAA,oBAlBEC,MAAM,CAAA,EAAAC,MAAA,CAAAC,wBAAA,CAAAxB,MAAA,CAAAqB,SAAA,EAAA,eAAA,CAAA,EAAArB,MAAA,CAAAqB,SAAA,CAAAD,EAAAA,yBAAA,CAAApB,MAAA,CAAAqB,SAAA,EAUNC,iBAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAAxB,MAAA,CAAAqB,SAAA,EAAA,iBAAA,CAAA,EAAArB,MAAA,CAAAqB,SAAA,IAAArB,MAAA,EAAA;AA3CwByB,oBAAA,CAAAC,QAAA,EAAZ3B,YAAY,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.js","sources":["../../../../src/components/hds/tabs/tab.hbs","../../../../src/components/hds/tabs/tab.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable require-context-role no-invalid-role }}\\n<li class={{this.classNames}} ...attributes role=\\\"presentation\\\">\\n <button\\n class=\\\"hds-tabs__tab-button\\\"\\n role=\\\"tab\\\"\\n type=\\\"button\\\"\\n id={{this.tabId}}\\n aria-selected={{if this.isSelected \\\"true\\\" \\\"false\\\"}}\\n tabindex={{unless this.isSelected \\\"-1\\\"}}\\n {{did-insert this.didInsertNode @isSelected}}\\n {{did-update this.didUpdateNode @count @isSelected}}\\n {{will-destroy this.willDestroyNode}}\\n {{on \\\"click\\\" this.onClick}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n >\\n {{#if @icon}}\\n <Hds::Icon @name={{@icon}} class=\\\"hds-tabs__tab-icon\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n\\n {{yield}}\\n\\n {{#if @count}}\\n <Hds::BadgeCount @text={{@count}} @size=\\\"small\\\" class=\\\"hds-tabs__tab-count\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n </button>\\n</li>\\n{{! template-lint-enable require-context-role no-invalid-role }}\")","/**\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 { action } from '@ember/object';\nimport type { IconName } from '@hashicorp/flight-icons/svg';\nimport type { HdsTabsTabIds } from './types';\n\nexport interface HdsTabsTabSignature {\n Args: {\n tabIds
|
|
1
|
+
{"version":3,"file":"tab.js","sources":["../../../../src/components/hds/tabs/tab.hbs","../../../../src/components/hds/tabs/tab.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n{{! template-lint-disable require-context-role no-invalid-role }}\\n<li class={{this.classNames}} ...attributes role=\\\"presentation\\\">\\n <button\\n class=\\\"hds-tabs__tab-button\\\"\\n role=\\\"tab\\\"\\n type=\\\"button\\\"\\n id={{this.tabId}}\\n aria-selected={{if this.isSelected \\\"true\\\" \\\"false\\\"}}\\n tabindex={{unless this.isSelected \\\"-1\\\"}}\\n {{did-insert this.didInsertNode @isSelected}}\\n {{did-update this.didUpdateNode @count @isSelected}}\\n {{will-destroy this.willDestroyNode}}\\n {{on \\\"click\\\" this.onClick}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n >\\n {{#if @icon}}\\n <Hds::Icon @name={{@icon}} class=\\\"hds-tabs__tab-icon\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n\\n {{yield}}\\n\\n {{#if @count}}\\n <Hds::BadgeCount @text={{@count}} @size=\\\"small\\\" class=\\\"hds-tabs__tab-count\\\" role=\\\"presentation\\\" />\\n {{/if}}\\n </button>\\n</li>\\n{{! template-lint-enable require-context-role no-invalid-role }}\")","/**\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 { action } from '@ember/object';\nimport type { IconName } from '@hashicorp/flight-icons/svg';\nimport type { HdsTabsTabIds } from './types';\n\nexport interface HdsTabsTabSignature {\n Args: {\n tabIds?: HdsTabsTabIds;\n selectedTabIndex?: number;\n icon?: IconName;\n count?: string;\n isSelected?: boolean;\n didInsertNode?: (element: HTMLButtonElement, isSelected?: boolean) => void;\n didUpdateNode?: (nodeIndex: number, isSelected?: boolean) => void;\n willDestroyNode?: (element: HTMLButtonElement) => void;\n onClick?: (event: MouseEvent, tabIndex: number) => void;\n onKeyUp?: (nodeIndex: number, event: KeyboardEvent) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLLIElement;\n}\n\nexport default class HdsTabsTab extends Component<HdsTabsTabSignature> {\n /**\n * Generate a unique ID for the Tab\n * @return {string}\n */\n tabId = 'tab-' + guidFor(this);\n\n get nodeIndex(): number | undefined {\n return this.args.tabIds?.indexOf(this.tabId);\n }\n\n /**\n * Determine if the tab is the selected tab\n * @return {boolean}\n * @default false (1st tab is selected by default)\n */\n get isSelected(): boolean {\n return (\n this.nodeIndex !== undefined &&\n this.nodeIndex === this.args.selectedTabIndex\n );\n }\n\n @action\n didInsertNode(element: HTMLButtonElement, positional: [boolean?]): void {\n const { didInsertNode } = this.args;\n\n const isSelected = positional[0];\n\n if (typeof didInsertNode === 'function') {\n didInsertNode(element, isSelected);\n }\n }\n\n @action\n didUpdateNode(): void {\n const { didUpdateNode } = this.args;\n\n if (typeof didUpdateNode === 'function' && this.nodeIndex !== undefined) {\n didUpdateNode(this.nodeIndex, this.args.isSelected);\n }\n }\n\n @action\n willDestroyNode(element: HTMLButtonElement): void {\n const { willDestroyNode } = this.args;\n\n if (typeof willDestroyNode === 'function') {\n willDestroyNode(element);\n }\n }\n\n @action\n onClick(event: MouseEvent): false | undefined {\n const { onClick } = this.args;\n\n if (typeof onClick === 'function' && this.nodeIndex !== undefined) {\n onClick(event, this.nodeIndex);\n } else {\n return false;\n }\n }\n\n @action\n onKeyUp(event: KeyboardEvent): void {\n const { onKeyUp } = this.args;\n\n if (typeof onKeyUp === 'function' && this.nodeIndex !== undefined) {\n onKeyUp(this.nodeIndex, event);\n }\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-tabs__tab'];\n\n if (this.isSelected) {\n classes.push(`hds-tabs__tab--is-selected`);\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["HdsTabsTab","_class","Component","constructor","args","_defineProperty","guidFor","nodeIndex","tabIds","indexOf","tabId","isSelected","undefined","selectedTabIndex","didInsertNode","element","positional","didUpdateNode","willDestroyNode","onClick","event","onKeyUp","classNames","classes","push","join","_applyDecoratedDescriptor","prototype","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":"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"}
|
|
@@ -27,11 +27,12 @@ class HdsTooltip extends Component {
|
|
|
27
27
|
}
|
|
28
28
|
get options() {
|
|
29
29
|
const {
|
|
30
|
-
placement
|
|
30
|
+
placement = HdsTooltipPlacementValues.Top,
|
|
31
|
+
extraTippyOptions
|
|
31
32
|
} = this.args;
|
|
32
33
|
assert('@placement for "Hds::TooltipButton" must have a valid value', placement == undefined || PLACEMENTS.includes(placement));
|
|
33
34
|
return {
|
|
34
|
-
...
|
|
35
|
+
...(extraTippyOptions ? extraTippyOptions : {}),
|
|
35
36
|
placement: placement,
|
|
36
37
|
// takes array of 2 numbers (skidding, distance): array(0, 10)
|
|
37
38
|
offset: this.args.offset ? this.args.offset : [0, 10]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/tooltip-button/index.hbs","../../../../src/components/hds/tooltip-button/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<button\\n type=\\\"button\\\"\\n class={{this.classNames}}\\n {{hds-tooltip this.text options=this.options}}\\n ...attributes\\n>{{~yield~}}</button>\")","/**\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\nimport type { Props as TippyProps } from 'tippy.js';\nimport { HdsTooltipPlacementValues } from './types.ts';\n\nexport const PLACEMENTS: string[] = Object.values(HdsTooltipPlacementValues);\n\nexport interface HdsTooltipSignature {\n Args: {\n extraTippyOptions
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/hds/tooltip-button/index.hbs","../../../../src/components/hds/tooltip-button/index.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!\\n Copyright (c) HashiCorp, Inc.\\n SPDX-License-Identifier: MPL-2.0\\n}}\\n\\n<button\\n type=\\\"button\\\"\\n class={{this.classNames}}\\n {{hds-tooltip this.text options=this.options}}\\n ...attributes\\n>{{~yield~}}</button>\")","/**\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\nimport type { Props as TippyProps } from 'tippy.js';\n\nimport { HdsTooltipPlacementValues } from './types.ts';\nimport type { HdsTooltipPlacements } from './types.ts';\n\nexport const PLACEMENTS: string[] = Object.values(HdsTooltipPlacementValues);\n\nexport interface HdsTooltipSignature {\n Args: {\n extraTippyOptions?: Partial<Omit<TippyProps, 'placement' | 'offset'>>;\n isInline?: boolean;\n offset?: [number, number];\n placement?: HdsTooltipPlacements;\n text: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLButtonElement;\n}\n\nexport default class HdsTooltip extends Component<HdsTooltipSignature> {\n /**\n * @param text\n * @type {string}\n * @description text content for tooltip\n */\n get text(): string {\n const { text } = this.args;\n\n assert(\n '@text for \"Hds::TooltipButton\" must have a valid value',\n text !== undefined\n );\n\n return text;\n }\n\n get options(): Partial<TippyProps> {\n const { placement = HdsTooltipPlacementValues.Top, extraTippyOptions } =\n this.args;\n\n assert(\n '@placement for \"Hds::TooltipButton\" must have a valid value',\n placement == undefined || PLACEMENTS.includes(placement)\n );\n\n return {\n ...(extraTippyOptions ? extraTippyOptions : {}),\n placement: placement,\n // takes array of 2 numbers (skidding, distance): array(0, 10)\n offset: this.args.offset ? this.args.offset : [0, 10],\n };\n }\n\n /**\n * @param isInline\n * @type {boolean}\n * @default true\n * @description sets display for the button\n */\n get isInline(): boolean {\n const { isInline = true } = this.args;\n return isInline;\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-tooltip-button'];\n\n // add a class based on the @isInline argument\n if (this.isInline) {\n classes.push('hds-tooltip-button--is-inline');\n } else {\n classes.push('hds-tooltip-button--is-block');\n }\n\n return classes.join(' ');\n }\n}\n"],"names":["PLACEMENTS","Object","values","HdsTooltipPlacementValues","HdsTooltip","Component","text","args","assert","undefined","options","placement","Top","extraTippyOptions","includes","offset","isInline","classNames","classes","push","join","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AACA,eAAe,kBAAkB,CAAC,mOAAmO;;ACDrQ;AACA;AACA;AACA;;AAUO,MAAMA,UAAoB,GAAGC,MAAM,CAACC,MAAM,CAACC,yBAAyB,EAAC;AAgB7D,MAAMC,UAAU,SAASC,SAAS,CAAsB;AACrE;AACF;AACA;AACA;AACA;EACE,IAAIC,IAAIA,GAAW;IACjB,MAAM;AAAEA,MAAAA,IAAAA;KAAM,GAAG,IAAI,CAACC,IAAI,CAAA;AAE1BC,IAAAA,MAAM,CACJ,wDAAwD,EACxDF,IAAI,KAAKG,SACX,CAAC,CAAA;AAED,IAAA,OAAOH,IAAI,CAAA;AACb,GAAA;EAEA,IAAII,OAAOA,GAAwB;IACjC,MAAM;MAAEC,SAAS,GAAGR,yBAAyB,CAACS,GAAG;AAAEC,MAAAA,iBAAAA;KAAmB,GACpE,IAAI,CAACN,IAAI,CAAA;AAEXC,IAAAA,MAAM,CACJ,6DAA6D,EAC7DG,SAAS,IAAIF,SAAS,IAAIT,UAAU,CAACc,QAAQ,CAACH,SAAS,CACzD,CAAC,CAAA;IAED,OAAO;AACL,MAAA,IAAIE,iBAAiB,GAAGA,iBAAiB,GAAG,EAAE;AAC9CF,MAAAA,SAAS,EAAEA,SAAS;AACpB;AACAI,MAAAA,MAAM,EAAE,IAAI,CAACR,IAAI,CAACQ,MAAM,GAAG,IAAI,CAACR,IAAI,CAACQ,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAA;KACrD,CAAA;AACH,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,IAAIC,QAAQA,GAAY;IACtB,MAAM;AAAEA,MAAAA,QAAQ,GAAG,IAAA;KAAM,GAAG,IAAI,CAACT,IAAI,CAAA;AACrC,IAAA,OAAOS,QAAQ,CAAA;AACjB,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACE,IAAIC,UAAUA,GAAW;AACvB,IAAA,MAAMC,OAAO,GAAG,CAAC,oBAAoB,CAAC,CAAA;;AAEtC;IACA,IAAI,IAAI,CAACF,QAAQ,EAAE;AACjBE,MAAAA,OAAO,CAACC,IAAI,CAAC,+BAA+B,CAAC,CAAA;AAC/C,KAAC,MAAM;AACLD,MAAAA,OAAO,CAACC,IAAI,CAAC,8BAA8B,CAAC,CAAA;AAC9C,KAAA;AAEA,IAAA,OAAOD,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,GAAA;AACF,CAAA;AAACC,oBAAA,CAAAC,QAAA,EA9DoBlB,UAAU,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hds-tooltip.js","sources":["../../src/modifiers/hds-tooltip.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\n// Note: the majority of this code is a porting of the existing tooltip implementation in Cloud UI\n// (which was initially implemented in Structure)\n\nimport Modifier from 'ember-modifier';\nimport type { ArgsFor } from 'ember-modifier';\n\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport tippy, { followCursor } from 'tippy.js';\nimport type {\n HideAll as TippyHideAll,\n Instance as TippyInstance,\n Props as TippyProps,\n} from 'tippy.js';\n// used by custom SVG arrow:\nimport 'tippy.js/dist/svg-arrow.css';\n\nexport interface HdsTooltipModifierSignature {\n Args: {\n Positional: [string];\n Named: {\n options?: TippyProps;\n };\n };\n Element: HTMLElement;\n}\n\nfunction cleanup(instance: HdsTooltipModifier): void {\n const { interval, needsTabIndex, tooltip } = instance;\n if (needsTabIndex) {\n tooltip?.reference?.removeAttribute('tabindex');\n }\n clearInterval(interval);\n tooltip?.destroy();\n}\n\n/**\n *\n * `Tooltip` implements a modifier that uses Tippy.js to display a tooltip.\n *\n * Sample usage:\n * ```\n * <div {{hds-tooltip 'Text' options=(hash )}}>Hover me!</div>\n * ```\n *\n * @see https://atomiks.github.io/tippyjs\n * @class TooltipModifier\n *\n */\nexport default class HdsTooltipModifier extends Modifier<HdsTooltipModifierSignature> {\n didSetup = false;\n interval: number | undefined = undefined;\n needsTabIndex = false;\n tooltip: TippyInstance | undefined = undefined;\n\n constructor(owner: unknown, args: ArgsFor<HdsTooltipModifierSignature>) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n hideOnEsc = {\n name: 'hideOnEsc',\n defaultValue: true,\n fn({ hide }: { hide: TippyHideAll }) {\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n hide();\n }\n }\n\n return {\n onShow() {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide() {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n };\n\n modify(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): void {\n assert('Tooltip must have an element', element);\n\n if (!this.didSetup) {\n this.#setup(element, positional, named);\n this.didSetup = true;\n }\n\n this.#update(element, positional, named);\n }\n\n #setup(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): void {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip = tippy(element, tooltipProps);\n }\n\n #update(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): void {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip?.setProps(tooltipProps);\n }\n\n #getTooltipProps(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): Partial<TippyProps> {\n const { options } = named;\n let [content] = positional;\n\n let $anchor: HTMLElement | null = element; // Ensure $anchor can be null\n\n if (typeof options?.triggerTarget === 'string') {\n const $el = $anchor;\n if (options.triggerTarget === 'parentNode') {\n if ($anchor.parentNode instanceof HTMLElement) {\n // Type guard\n $anchor = $anchor.parentNode;\n }\n } else {\n const queryResult: HTMLElement | null = $anchor.querySelector(\n options.triggerTarget\n );\n if (queryResult) {\n $anchor = queryResult;\n }\n }\n if ($anchor instanceof HTMLElement) {\n // Ensure $anchor is an HTMLElement before cloning\n const clonedElement = $anchor.cloneNode(true) as HTMLElement; // Explicitly cast cloned node to HTMLElement\n content = clonedElement.outerHTML; // Now safely access outerHTML\n }\n $el?.remove(); // Use optional chaining in case $el is null\n options.triggerTarget = null;\n }\n\n // The {{hds-tooltip}} will just use the HTML content.\n if (typeof content === 'undefined' && $anchor instanceof HTMLElement) {\n // Ensure $anchor is an HTMLElement before accessing innerHTML\n content = $anchor.innerHTML;\n $anchor.innerHTML = '';\n }\n\n if (options?.trigger === 'manual') {\n // If we are manually triggering, a out delay means only show for the\n // amount of time specified by the delay.\n const delay = options.delay || [];\n\n if (Array.isArray(delay) && delay.length) {\n if (typeof delay[1] !== 'undefined') {\n options.onShown = (tooltip) => {\n clearInterval(this.interval);\n this.interval = setTimeout(() => {\n tooltip.hide();\n }, delay[1] ?? 0);\n };\n }\n }\n }\n\n const $trigger = $anchor;\n\n if (!$trigger.hasAttribute('tabindex')) {\n this.needsTabIndex = true;\n $trigger.setAttribute('tabindex', '0');\n }\n\n /* Typescript does not like the previous approach of adding an undefined value\n ** to the array and then filtering it out.\n */\n const plugins =\n options?.followCursor !== undefined\n ? [this.hideOnEsc, followCursor]\n : [this.hideOnEsc];\n\n return {\n theme: 'hds',\n triggerTarget: $trigger,\n arrow: `\n <svg class=\"hds-tooltip-pointer\" width=\"16\" height=\"7\" viewBox=\"0 0 16 7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 7H16L9.11989 0.444571C8.49776 -0.148191 7.50224 -0.148191 6.88011 0.444572L0 7Z\" />\n </svg>`,\n // keeps tooltip itself open on hover:\n interactive: true,\n // fix accessibility features that get messed up with setting interactive: true\n aria: {\n content: 'describedby',\n expanded: false,\n },\n content: () => content,\n plugins,\n ...options,\n };\n }\n}\n"],"names":["cleanup","instance","interval","needsTabIndex","tooltip","reference","removeAttribute","clearInterval","destroy","_HdsTooltipModifier_brand","WeakSet","HdsTooltipModifier","Modifier","constructor","owner","args","_classPrivateMethodInitSpec","_defineProperty","undefined","name","defaultValue","fn","hide","onKeyDown","event","key","onShow","document","addEventListener","onHide","removeEventListener","registerDestructor","modify","element","positional","named","assert","didSetup","_assertClassBrand","_setup","call","_update","tooltipProps","_getTooltipProps","tippy","setProps","options","content","$anchor","triggerTarget","$el","parentNode","HTMLElement","queryResult","querySelector","clonedElement","cloneNode","outerHTML","remove","innerHTML","trigger","delay","Array","isArray","length","onShown","setTimeout","$trigger","hasAttribute","setAttribute","plugins","followCursor","hideOnEsc","theme","arrow","interactive","aria","expanded"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hds-tooltip.js","sources":["../../src/modifiers/hds-tooltip.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\n// Note: the majority of this code is a porting of the existing tooltip implementation in Cloud UI\n// (which was initially implemented in Structure)\n\nimport Modifier from 'ember-modifier';\nimport type { ArgsFor } from 'ember-modifier';\n\nimport { assert } from '@ember/debug';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport tippy, { followCursor } from 'tippy.js';\nimport type {\n HideAll as TippyHideAll,\n Instance as TippyInstance,\n Props as TippyProps,\n} from 'tippy.js';\n// used by custom SVG arrow:\nimport 'tippy.js/dist/svg-arrow.css';\n\nexport interface HdsTooltipModifierSignature {\n Args: {\n Positional: [string];\n Named: {\n options?: Partial<TippyProps>;\n };\n };\n Element: HTMLElement;\n}\n\nfunction cleanup(instance: HdsTooltipModifier): void {\n const { interval, needsTabIndex, tooltip } = instance;\n if (needsTabIndex) {\n tooltip?.reference?.removeAttribute('tabindex');\n }\n clearInterval(interval);\n tooltip?.destroy();\n}\n\n/**\n *\n * `Tooltip` implements a modifier that uses Tippy.js to display a tooltip.\n *\n * Sample usage:\n * ```\n * <div {{hds-tooltip 'Text' options=(hash )}}>Hover me!</div>\n * ```\n *\n * @see https://atomiks.github.io/tippyjs\n * @class TooltipModifier\n *\n */\nexport default class HdsTooltipModifier extends Modifier<HdsTooltipModifierSignature> {\n didSetup = false;\n interval: number | undefined = undefined;\n needsTabIndex = false;\n tooltip: TippyInstance | undefined = undefined;\n\n constructor(owner: unknown, args: ArgsFor<HdsTooltipModifierSignature>) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n hideOnEsc = {\n name: 'hideOnEsc',\n defaultValue: true,\n fn({ hide }: { hide: TippyHideAll }) {\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n hide();\n }\n }\n\n return {\n onShow() {\n document.addEventListener('keydown', onKeyDown);\n },\n onHide() {\n document.removeEventListener('keydown', onKeyDown);\n },\n };\n },\n };\n\n modify(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): void {\n assert('Tooltip must have an element', element);\n\n if (!this.didSetup) {\n this.#setup(element, positional, named);\n this.didSetup = true;\n }\n\n this.#update(element, positional, named);\n }\n\n #setup(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): void {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip = tippy(element, tooltipProps);\n }\n\n #update(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): void {\n const tooltipProps = this.#getTooltipProps(element, positional, named);\n this.tooltip?.setProps(tooltipProps);\n }\n\n #getTooltipProps(\n element: HdsTooltipModifierSignature['Element'],\n positional: HdsTooltipModifierSignature['Args']['Positional'],\n named: HdsTooltipModifierSignature['Args']['Named']\n ): Partial<TippyProps> {\n const { options } = named;\n let [content] = positional;\n\n let $anchor: HTMLElement | null = element; // Ensure $anchor can be null\n\n if (typeof options?.triggerTarget === 'string') {\n const $el = $anchor;\n if (options.triggerTarget === 'parentNode') {\n if ($anchor.parentNode instanceof HTMLElement) {\n // Type guard\n $anchor = $anchor.parentNode;\n }\n } else {\n const queryResult: HTMLElement | null = $anchor.querySelector(\n options.triggerTarget\n );\n if (queryResult) {\n $anchor = queryResult;\n }\n }\n if ($anchor instanceof HTMLElement) {\n // Ensure $anchor is an HTMLElement before cloning\n const clonedElement = $anchor.cloneNode(true) as HTMLElement; // Explicitly cast cloned node to HTMLElement\n content = clonedElement.outerHTML; // Now safely access outerHTML\n }\n $el?.remove(); // Use optional chaining in case $el is null\n options.triggerTarget = null;\n }\n\n // The {{hds-tooltip}} will just use the HTML content.\n if (typeof content === 'undefined' && $anchor instanceof HTMLElement) {\n // Ensure $anchor is an HTMLElement before accessing innerHTML\n content = $anchor.innerHTML;\n $anchor.innerHTML = '';\n }\n\n if (options?.trigger === 'manual') {\n // If we are manually triggering, a out delay means only show for the\n // amount of time specified by the delay.\n const delay = options.delay || [];\n\n if (Array.isArray(delay) && delay.length) {\n if (typeof delay[1] !== 'undefined') {\n options.onShown = (tooltip) => {\n clearInterval(this.interval);\n this.interval = setTimeout(() => {\n tooltip.hide();\n }, delay[1] ?? 0);\n };\n }\n }\n }\n\n const $trigger = $anchor;\n\n if (!$trigger.hasAttribute('tabindex')) {\n this.needsTabIndex = true;\n $trigger.setAttribute('tabindex', '0');\n }\n\n /* Typescript does not like the previous approach of adding an undefined value\n ** to the array and then filtering it out.\n */\n const plugins =\n options?.followCursor !== undefined\n ? [this.hideOnEsc, followCursor]\n : [this.hideOnEsc];\n\n return {\n theme: 'hds',\n triggerTarget: $trigger,\n arrow: `\n <svg class=\"hds-tooltip-pointer\" width=\"16\" height=\"7\" viewBox=\"0 0 16 7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0 7H16L9.11989 0.444571C8.49776 -0.148191 7.50224 -0.148191 6.88011 0.444572L0 7Z\" />\n </svg>`,\n // keeps tooltip itself open on hover:\n interactive: true,\n // fix accessibility features that get messed up with setting interactive: true\n aria: {\n content: 'describedby',\n expanded: false,\n },\n content: () => content,\n plugins,\n ...options,\n };\n }\n}\n"],"names":["cleanup","instance","interval","needsTabIndex","tooltip","reference","removeAttribute","clearInterval","destroy","_HdsTooltipModifier_brand","WeakSet","HdsTooltipModifier","Modifier","constructor","owner","args","_classPrivateMethodInitSpec","_defineProperty","undefined","name","defaultValue","fn","hide","onKeyDown","event","key","onShow","document","addEventListener","onHide","removeEventListener","registerDestructor","modify","element","positional","named","assert","didSetup","_assertClassBrand","_setup","call","_update","tooltipProps","_getTooltipProps","tippy","setProps","options","content","$anchor","triggerTarget","$el","parentNode","HTMLElement","queryResult","querySelector","clonedElement","cloneNode","outerHTML","remove","innerHTML","trigger","delay","Array","isArray","length","onShown","setTimeout","$trigger","hasAttribute","setAttribute","plugins","followCursor","hideOnEsc","theme","arrow","interactive","aria","expanded"],"mappings":"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"}
|
|
@@ -2701,6 +2701,7 @@ button.hds-button[href]::after {
|
|
|
2701
2701
|
word-spacing: normal;
|
|
2702
2702
|
tab-size: 4;
|
|
2703
2703
|
hyphens: none;
|
|
2704
|
+
scrollbar-width: thin;
|
|
2704
2705
|
}
|
|
2705
2706
|
@media print {
|
|
2706
2707
|
.hds-code-block pre,
|
|
@@ -3054,7 +3055,8 @@ button.hds-button[href]::after {
|
|
|
3054
3055
|
* SPDX-License-Identifier: MPL-2.0
|
|
3055
3056
|
*/
|
|
3056
3057
|
:where(.hds-dialog-primitive__wrapper) {
|
|
3057
|
-
|
|
3058
|
+
position: initial;
|
|
3059
|
+
inset: initial;
|
|
3058
3060
|
display: flex;
|
|
3059
3061
|
flex-direction: column;
|
|
3060
3062
|
width: 100%;
|
|
@@ -3062,6 +3064,7 @@ button.hds-button[href]::after {
|
|
|
3062
3064
|
margin: 0;
|
|
3063
3065
|
padding: 0;
|
|
3064
3066
|
background: var(--token-color-surface-primary);
|
|
3067
|
+
border: none;
|
|
3065
3068
|
}
|
|
3066
3069
|
|
|
3067
3070
|
.hds-dialog-primitive__wrapper-header {
|
|
@@ -4281,6 +4284,7 @@ button.hds-button[href]::after {
|
|
|
4281
4284
|
.hds-form-masked-input .hds-form-masked-input__control {
|
|
4282
4285
|
grid-area: input;
|
|
4283
4286
|
padding-right: calc(var(--token-form-control-padding) + 24px);
|
|
4287
|
+
scrollbar-width: thin;
|
|
4284
4288
|
}
|
|
4285
4289
|
|
|
4286
4290
|
.hds-form-masked-input--is-masked .hds-form-masked-input__control {
|
|
@@ -4398,12 +4402,15 @@ button.hds-button[href]::after {
|
|
|
4398
4402
|
box-shadow: 0 0 0 3px var(--token-color-focus-action-external);
|
|
4399
4403
|
}
|
|
4400
4404
|
.hds-form-radio-card--checked, .hds-form-radio-card.mock-checked {
|
|
4401
|
-
border-color: var(--token-color-
|
|
4405
|
+
border-color: var(--token-color-palette-blue-300);
|
|
4402
4406
|
}
|
|
4403
4407
|
.hds-form-radio-card--checked .hds-form-radio-card__control-wrapper, .hds-form-radio-card.mock-checked .hds-form-radio-card__control-wrapper {
|
|
4404
4408
|
background-color: var(--token-color-surface-action);
|
|
4405
4409
|
border-color: var(--token-color-border-action);
|
|
4406
4410
|
}
|
|
4411
|
+
.hds-form-radio-card--checked:hover, .hds-form-radio-card--checked.mock-hover, .hds-form-radio-card.mock-checked:hover, .hds-form-radio-card.mock-checked.mock-hover {
|
|
4412
|
+
border-color: var(--token-color-palette-blue-400);
|
|
4413
|
+
}
|
|
4407
4414
|
.hds-form-radio-card--disabled, .hds-form-radio-card.mock-disabled {
|
|
4408
4415
|
background-color: var(--token-color-surface-interactive-disabled);
|
|
4409
4416
|
border-color: var(--token-color-border-primary);
|
|
@@ -4414,6 +4421,9 @@ button.hds-button[href]::after {
|
|
|
4414
4421
|
background-color: var(--token-color-surface-interactive-disabled);
|
|
4415
4422
|
border-color: var(--token-color-border-primary);
|
|
4416
4423
|
}
|
|
4424
|
+
.hds-form-radio-card--disabled .hds-form-radio-card__content, .hds-form-radio-card.mock-disabled .hds-form-radio-card__content {
|
|
4425
|
+
opacity: 0.5;
|
|
4426
|
+
}
|
|
4417
4427
|
|
|
4418
4428
|
.hds-form-radio-card--align-left {
|
|
4419
4429
|
text-align: left;
|
|
@@ -13,17 +13,17 @@ $hds-dialog-primitive-vertical-padding: 16px;
|
|
|
13
13
|
|
|
14
14
|
// WRAPPER CONTAINER (<dialog>)
|
|
15
15
|
|
|
16
|
-
// The special declaration below is used to
|
|
17
|
-
//
|
|
16
|
+
// The special declaration below is used to override the `<dialog>` predefined styles
|
|
17
|
+
// Note: some of these style will then be set (again) at `Modal/Flyout` level too
|
|
18
18
|
//
|
|
19
19
|
// Since the `:where()` selector has a specificity of `0` (see https://developer.mozilla.org/en-US/docs/Web/CSS/:where)
|
|
20
20
|
// the styles declared below are applied to the `<dialog>` element, but are overwritten by any other style applied via classname
|
|
21
21
|
//
|
|
22
22
|
|
|
23
23
|
:where(.hds-dialog-primitive__wrapper) {
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
// override default `<dialog>` styles
|
|
25
|
+
position: initial;
|
|
26
|
+
inset: initial;
|
|
27
27
|
display: flex;
|
|
28
28
|
flex-direction: column;
|
|
29
29
|
width: 100%;
|
|
@@ -31,6 +31,7 @@ $hds-dialog-primitive-vertical-padding: 16px;
|
|
|
31
31
|
margin: 0;
|
|
32
32
|
padding: 0;
|
|
33
33
|
background: var(--token-color-surface-primary);
|
|
34
|
+
border: none;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
// FORM > RADIO-CARD
|
|
8
8
|
//
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
// RadioCard Group
|
|
12
11
|
|
|
13
12
|
.hds-form-group--radio-cards {
|
|
@@ -38,7 +37,8 @@
|
|
|
38
37
|
display: flex;
|
|
39
38
|
flex-direction: column;
|
|
40
39
|
background-color: var(--token-color-surface-primary);
|
|
41
|
-
border: var(--token-form-radiocard-border-width) solid
|
|
40
|
+
border: var(--token-form-radiocard-border-width) solid
|
|
41
|
+
var(--token-color-border-primary);
|
|
42
42
|
border-radius: var(--token-form-radiocard-border-radius);
|
|
43
43
|
box-shadow: var(--token-elevation-mid-box-shadow);
|
|
44
44
|
cursor: pointer;
|
|
@@ -64,12 +64,17 @@
|
|
|
64
64
|
|
|
65
65
|
&--checked,
|
|
66
66
|
&.mock-checked {
|
|
67
|
-
border-color: var(--token-color-
|
|
67
|
+
border-color: var(--token-color-palette-blue-300);
|
|
68
68
|
|
|
69
69
|
.hds-form-radio-card__control-wrapper {
|
|
70
70
|
background-color: var(--token-color-surface-action);
|
|
71
71
|
border-color: var(--token-color-border-action);
|
|
72
72
|
}
|
|
73
|
+
|
|
74
|
+
&:hover,
|
|
75
|
+
&.mock-hover {
|
|
76
|
+
border-color: var(--token-color-palette-blue-400);
|
|
77
|
+
}
|
|
73
78
|
}
|
|
74
79
|
|
|
75
80
|
&--disabled,
|
|
@@ -83,6 +88,10 @@
|
|
|
83
88
|
background-color: var(--token-color-surface-interactive-disabled);
|
|
84
89
|
border-color: var(--token-color-border-primary);
|
|
85
90
|
}
|
|
91
|
+
|
|
92
|
+
.hds-form-radio-card__content {
|
|
93
|
+
opacity: 0.5;
|
|
94
|
+
}
|
|
86
95
|
}
|
|
87
96
|
}
|
|
88
97
|
|