@hashicorp/design-system-components 4.24.0-rc-20251002140454 → 4.24.1-rc-20251103142501

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/declarations/components/hds/advanced-table/models/row.d.ts +3 -2
  2. package/declarations/components/hds/code-block/copy-button.d.ts +1 -0
  3. package/declarations/components/hds/code-block/index.d.ts +1 -0
  4. package/declarations/components/hds/copy/button/index.d.ts +4 -0
  5. package/declarations/components/hds/flyout/index.d.ts +1 -18
  6. package/declarations/components/hds/modal/index.d.ts +2 -2
  7. package/declarations/components/hds/theme-switcher/index.d.ts +41 -0
  8. package/declarations/components.d.ts +1 -0
  9. package/declarations/services/hds-theming.d.ts +68 -0
  10. package/declarations/services.d.ts +1 -0
  11. package/declarations/template-registry.d.ts +3 -0
  12. package/dist/_app_/components/hds/theme-switcher.js +1 -0
  13. package/dist/_app_/services/hds-theming.js +1 -0
  14. package/dist/components/hds/advanced-table/models/row.js +19 -15
  15. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  16. package/dist/components/hds/advanced-table/models/table.js +2 -4
  17. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  18. package/dist/components/hds/app-footer/copyright.js +1 -1
  19. package/dist/components/hds/code-block/copy-button.js +1 -1
  20. package/dist/components/hds/code-block/copy-button.js.map +1 -1
  21. package/dist/components/hds/code-block/index.js +1 -1
  22. package/dist/components/hds/code-block/index.js.map +1 -1
  23. package/dist/components/hds/copy/button/index.js +15 -1
  24. package/dist/components/hds/copy/button/index.js.map +1 -1
  25. package/dist/components/hds/dialog-primitive/body.js +1 -1
  26. package/dist/components/hds/flyout/index.js +31 -54
  27. package/dist/components/hds/flyout/index.js.map +1 -1
  28. package/dist/components/hds/modal/index.js +48 -35
  29. package/dist/components/hds/modal/index.js.map +1 -1
  30. package/dist/components/hds/theme-switcher/index.js +86 -0
  31. package/dist/components/hds/theme-switcher/index.js.map +1 -0
  32. package/dist/components.js +1 -0
  33. package/dist/components.js.map +1 -1
  34. package/dist/services/hds-theming.js +204 -0
  35. package/dist/services/hds-theming.js.map +1 -0
  36. package/dist/services.js +1 -1
  37. package/dist/styles/@hashicorp/design-system-components-common.css +9823 -0
  38. package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -0
  39. package/dist/styles/@hashicorp/design-system-components-common.scss +20 -0
  40. package/dist/styles/@hashicorp/design-system-components.css +32 -18
  41. package/dist/styles/@hashicorp/design-system-components.css.map +1 -0
  42. package/dist/styles/@hashicorp/design-system-components.scss +4 -59
  43. package/dist/styles/@hashicorp/design-system-power-select-overrides.css +229 -0
  44. package/dist/styles/@hashicorp/design-system-power-select-overrides.css.map +1 -0
  45. package/dist/styles/components/app-footer.scss +3 -0
  46. package/dist/styles/components/form/file-input.scss +1 -0
  47. package/dist/styles/components/index.scss +52 -0
  48. package/package.json +9 -4
  49. package/translations/hds/components/app-footer/copyright/en-us.yaml +1 -1
  50. package/translations/hds/components/copy-button/en-us.yaml +1 -0
  51. package/dist/styles/@hashicorp/design-system-components.scss.map +0 -1
@@ -3,21 +3,22 @@
3
3
  * SPDX-License-Identifier: MPL-2.0
4
4
  */
5
5
  import type { HdsAdvancedTableColumn, HdsAdvancedTableCell } from '../types';
6
+ import type HdsAdvancedTableTableModel from './table';
6
7
  interface HdsAdvancedTableRowArgs {
7
8
  [key: string]: unknown;
8
9
  columns: HdsAdvancedTableColumn[];
10
+ table: HdsAdvancedTableTableModel;
9
11
  id?: string;
10
12
  childrenKey?: string;
11
- columnOrder?: string[];
12
13
  }
13
14
  export default class HdsAdvancedTableRow {
14
15
  id: string;
15
16
  [key: string]: unknown;
16
17
  isOpen: boolean;
17
18
  cells: HdsAdvancedTableCell[];
18
- columnOrder: string[];
19
19
  children: HdsAdvancedTableRow[];
20
20
  childrenKey: string;
21
+ table: HdsAdvancedTableTableModel;
21
22
  get hasChildren(): boolean;
22
23
  get showChildren(): boolean;
23
24
  get orderedCells(): HdsAdvancedTableCell[];
@@ -9,6 +9,7 @@ export interface HdsCodeBlockCopyButtonSignature {
9
9
  targetToCopy?: HdsCopyButtonSignature['Args']['targetToCopy'];
10
10
  text?: HdsCopyButtonSignature['Args']['text'];
11
11
  onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];
12
+ copySuccessMessageText?: HdsCopyButtonSignature['Args']['ariaMessageText'];
12
13
  };
13
14
  Blocks: {
14
15
  default: [];
@@ -39,6 +39,7 @@ export interface HdsCodeBlockSignature {
39
39
  value: string;
40
40
  copyButtonText?: HdsCopyButtonSignature['Args']['text'];
41
41
  onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];
42
+ copySuccessMessageText?: HdsCopyButtonSignature['Args']['ariaMessageText'];
42
43
  };
43
44
  Blocks: {
44
45
  default: [
@@ -8,6 +8,7 @@ import type { HdsCopyButtonSizes } from './types.ts';
8
8
  import type { HdsButtonSignature } from '../../button/';
9
9
  import type { HdsClipboardModifierSignature } from '../../../../modifiers/hds-clipboard.ts';
10
10
  import type { HdsIconSignature } from '../../icon';
11
+ import type HdsIntlService from '../../../../services/hds-intl';
11
12
  export declare const DEFAULT_SIZE = HdsCopyButtonSizeValues.Medium;
12
13
  export declare const SIZES: HdsCopyButtonSizes[];
13
14
  export declare const DEFAULT_ICON = "clipboard-copy";
@@ -21,10 +22,12 @@ export interface HdsCopyButtonSignature {
21
22
  targetToCopy?: HdsClipboardModifierSignature['Args']['Named']['target'];
22
23
  onSuccess?: HdsClipboardModifierSignature['Args']['Named']['onSuccess'];
23
24
  onError?: HdsClipboardModifierSignature['Args']['Named']['onError'];
25
+ ariaMessageText?: string;
24
26
  };
25
27
  Element: HdsButtonSignature['Element'];
26
28
  }
27
29
  export default class HdsCopyButton extends Component<HdsCopyButtonSignature> {
30
+ hdsIntl: HdsIntlService;
28
31
  private _status;
29
32
  private _timer;
30
33
  /**
@@ -46,6 +49,7 @@ export default class HdsCopyButton extends Component<HdsCopyButtonSignature> {
46
49
  * @return {string} The "class" attribute to apply to the component.
47
50
  */
48
51
  get classNames(): string;
52
+ get ariaMessageText(): string;
49
53
  onSuccess(args: HdsClipboardModifierSignature['Args']['Named']['onSuccess']): void;
50
54
  onError(args: HdsClipboardModifierSignature['Args']['Named']['onError']): void;
51
55
  resetStatusDelayed(): void;
@@ -37,28 +37,11 @@ export default class HdsFlyout extends Component<HdsFlyoutSignature> {
37
37
  _element: HTMLDialogElement;
38
38
  private _body;
39
39
  private _bodyInitialOverflowValue;
40
- /**
41
- * Sets the size of the flyout
42
- * Accepted values: medium, large
43
- *
44
- * @param size
45
- * @type {string}
46
- * @default 'medium'
47
- */
48
40
  get size(): HdsFlyoutSizes;
49
- /**
50
- * Calculates the unique ID to assign to the title
51
- */
52
41
  get id(): string;
53
- /**
54
- * Get the class names to apply to the component.
55
- * @method classNames
56
- * @return {string} The "class" attribute to apply to the component.
57
- */
58
42
  get classNames(): string;
59
43
  registerOnCloseCallback(event: Event): void;
60
- didInsert(element: HTMLDialogElement): void;
61
- willDestroyNode(): void;
44
+ private _registerDialog;
62
45
  open(): void;
63
46
  onDismiss(): Promise<void>;
64
47
  }
@@ -38,14 +38,14 @@ export default class HdsModal extends Component<HdsModalSignature> {
38
38
  private _element;
39
39
  private _body;
40
40
  private _bodyInitialOverflowValue;
41
+ private _clickOutsideToDismissHandler;
41
42
  get isDismissDisabled(): boolean;
42
43
  get size(): HdsModalSizes;
43
44
  get color(): HdsModalColors;
44
45
  get id(): string;
45
46
  get classNames(): string;
46
47
  registerOnCloseCallback(event: Event): void;
47
- didInsert(element: HTMLDialogElement): void;
48
- willDestroyNode(): void;
48
+ private _registerDialog;
49
49
  open(): void;
50
50
  onDismiss(): Promise<void>;
51
51
  }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import Component from '@glimmer/component';
6
+ import type { HdsDropdownSignature } from '../dropdown/index.ts';
7
+ import type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.ts';
8
+ import type { HdsIconSignature } from '../icon/index.ts';
9
+ import type HdsThemingService from '../../../services/hds-theming.ts';
10
+ import type { HdsThemes, OnSetThemeCallback } from '../../../services/hds-theming.ts';
11
+ interface ThemeOption {
12
+ theme: HdsThemes | undefined;
13
+ icon: HdsIconSignature['Args']['name'];
14
+ label: string;
15
+ }
16
+ interface HdsThemeSwitcherSignature {
17
+ Args: {
18
+ toggleSize?: HdsDropdownToggleButtonSignature['Args']['size'];
19
+ toggleIsFullWidth?: HdsDropdownToggleButtonSignature['Args']['isFullWidth'];
20
+ hasSystemOption?: boolean;
21
+ onSetTheme?: OnSetThemeCallback;
22
+ };
23
+ Element: HdsDropdownSignature['Element'];
24
+ }
25
+ export default class HdsThemeSwitcher extends Component<HdsThemeSwitcherSignature> {
26
+ readonly hdsTheming: HdsThemingService;
27
+ get toggleSize(): "small" | "medium";
28
+ get toggleIsFullWidth(): boolean;
29
+ get toggleContent(): {
30
+ label: string;
31
+ icon: "type" | "map" | "filter" | "code" | "link" | "menu" | "search" | "video" | "circle" | "image" | "path" | "tag" | "repeat" | "hash" | "queue" | "shuffle" | "chevron-up" | "chevron-down" | "unfold-open" | "unfold-close" | "arrow-down" | "arrow-up" | "swap-vertical" | "top" | "key" | "move" | "change" | "pause" | "play" | "move-horizontal" | "loading" | "loading-static" | "running" | "running-static" | "apple" | "apple-color" | "alibaba" | "alibaba-color" | "amazon-ecs" | "amazon-ecs-color" | "amazon-eks" | "amazon-eks-color" | "auth0" | "auth0-color" | "aws" | "aws-color" | "aws-cdk" | "aws-cdk-color" | "aws-cloudwatch" | "aws-cloudwatch-color" | "aws-ec2" | "aws-ec2-color" | "aws-lambda" | "aws-lambda-color" | "aws-s3" | "aws-s3-color" | "azure" | "azure-color" | "azure-aks" | "azure-aks-color" | "azure-blob-storage" | "azure-blob-storage-color" | "azure-devops" | "azure-devops-color" | "azure-vms" | "azure-vms-color" | "bitbucket" | "bitbucket-color" | "bridgecrew" | "bridgecrew-color" | "cisco" | "cisco-color" | "codepen" | "codepen-color" | "confluence" | "confluence-color" | "confluent" | "confluent-color" | "datadog" | "datadog-color" | "digital-ocean" | "digital-ocean-color" | "docker" | "docker-color" | "duo" | "duo-color" | "elastic-observability" | "elastic-observability-color" | "f5" | "f5-color" | "facebook" | "facebook-color" | "figma" | "figma-color" | "gcp" | "gcp-color" | "git" | "git-color" | "gitlab" | "gitlab-color" | "github" | "github-color" | "google" | "google-color" | "google-docs" | "google-docs-color" | "google-drive" | "google-drive-color" | "google-forms" | "google-forms-color" | "google-sheets" | "google-sheets-color" | "google-slides" | "google-slides-color" | "grafana" | "grafana-color" | "helm" | "helm-color" | "infracost" | "infracost-color" | "jfrog" | "jfrog-color" | "jira" | "jira-color" | "jwt" | "jwt-color" | "kubernetes" | "kubernetes-color" | "lightlytics" | "lightlytics-color" | "linkedin" | "linkedin-color" | "linode" | "linode-color" | "linux" | "linux-color" | "loom" | "loom-color" | "meetup" | "meetup-color" | "microsoft" | "microsoft-color" | "microsoft-teams" | "microsoft-teams-color" | "minio" | "minio-color" | "mongodb" | "mongodb-color" | "new-relic" | "new-relic-color" | "okta" | "okta-color" | "oracle" | "oracle-color" | "opa" | "opa-color" | "openid" | "openid-color" | "pack" | "pack-color" | "pager-duty" | "pager-duty-color" | "ping-identity " | "ping-identity-color" | "postgres" | "postgres-color" | "rabbitmq" | "rabbitmq-color" | "saml" | "saml-color" | "service-now" | "service-now-color" | "slack" | "slack-color" | "snyk" | "snyk-color" | "splunk" | "splunk-color" | "twilio" | "twilio-color" | "twitch" | "twitch-color" | "twitter" | "twitter-color" | "twitter-x" | "twitter-x-color" | "vantage" | "vantage-color" | "venafi" | "venafi-color" | "vercel" | "vercel-color" | "vmware" | "vmware-color" | "youtube" | "youtube-color" | "boundary" | "boundary-color" | "boundary-fill" | "boundary-fill-color" | "boundary-square" | "boundary-square-color" | "consul" | "consul-color" | "consul-fill" | "consul-fill-color" | "consul-square" | "consul-square-color" | "nomad" | "nomad-color" | "nomad-fill" | "nomad-fill-color" | "nomad-square" | "nomad-square-color" | "packer" | "packer-color" | "packer-fill" | "packer-fill-color" | "packer-square" | "packer-square-color" | "terraform" | "terraform-color" | "terraform-fill" | "terraform-fill-color" | "terraform-square" | "terraform-square-color" | "vagrant" | "vagrant-color" | "vagrant-fill" | "vagrant-fill-color" | "vagrant-square" | "vagrant-square-color" | "vault" | "vault-color" | "vault-fill" | "vault-fill-color" | "vault-square" | "vault-square-color" | "vault-radar" | "vault-radar-color" | "vault-radar-fill" | "vault-radar-fill-color" | "vault-radar-square" | "vault-radar-square-color" | "vault-secrets" | "vault-secrets-color" | "vault-secrets-fill" | "vault-secrets-fill-color" | "vault-secrets-square" | "vault-secrets-square-color" | "waypoint" | "waypoint-color" | "waypoint-fill" | "waypoint-fill-color" | "waypoint-square" | "waypoint-square-color" | "hashicorp" | "hashicorp-color" | "hashicorp-fill" | "hashicorp-fill-color" | "hashicorp-square" | "hashicorp-square-color" | "hcp" | "hcp-color" | "hcp-fill" | "hcp-fill-color" | "hcp-square" | "hcp-square-color" | "accessibility" | "folder-users" | "frown" | "identity-service" | "identity-user" | "meh" | "robot" | "smile" | "user" | "user-check" | "user-circle" | "user-circle-fill" | "user-minus" | "user-plus" | "user-x" | "users" | "ampersand" | "beaker" | "bucket" | "bulb" | "circle-dot" | "circle-fill" | "circle-half" | "diamond" | "diamond-fill" | "disc" | "dot" | "dot-half" | "droplet" | "flag" | "gift" | "government" | "handshake" | "hexagon" | "hexagon-fill" | "labyrinth" | "layers" | "moon" | "octagon" | "outline" | "random" | "rocket" | "sparkle" | "square" | "square-fill" | "sun" | "triangle" | "triangle-fill" | "truck" | "wand" | "zap" | "zap-off" | "docs" | "docs-download" | "docs-link" | "guide" | "guide-link" | "help" | "info" | "info-fill" | "learn" | "learn-link" | "support" | "alert-circle" | "alert-circle-fill" | "alert-diamond" | "alert-diamond-fill" | "alert-octagon" | "alert-octagon-fill" | "alert-triangle" | "alert-triangle-fill" | "check" | "check-circle" | "check-circle-fill" | "check-diamond" | "check-diamond-fill" | "check-hexagon" | "check-hexagon-fill" | "check-square" | "check-square-fill" | "skip" | "x" | "x-circle" | "x-circle-fill" | "x-diamond" | "x-diamond-fill" | "x-hexagon" | "x-hexagon-fill" | "x-square" | "x-square-fill" | "bug" | "certificate" | "eye" | "eye-off" | "fingerprint" | "keychain" | "lock" | "lock-fill" | "lock-off" | "shield" | "shield-alert" | "shield-check" | "shield-off" | "shield-x" | "token" | "unlock" | "verified" | "wall" | "minus" | "minus-circle" | "minus-circle-fill" | "minus-plus" | "minus-plus-circle" | "minus-plus-square" | "minus-square" | "minus-square-fill" | "plus" | "plus-circle" | "plus-circle-fill" | "plus-square" | "camera" | "camera-off" | "cast" | "closed-caption" | "fast-forward" | "film" | "headphones" | "music" | "pause-circle" | "play-circle" | "radio" | "rewind" | "rss" | "skip-back" | "skip-forward" | "speaker" | "stop-circle" | "volume" | "volume-down" | "volume-2" | "volume-x" | "wifi" | "wifi-off" | "compass" | "crosshair" | "map-pin" | "navigation" | "navigation-alt" | "redirect" | "target" | "align-center" | "align-justify" | "align-left" | "align-right" | "battery" | "battery-charging" | "bookmark" | "bookmark-add" | "bookmark-add-fill" | "bookmark-fill" | "bookmark-remove" | "bookmark-remove-fill" | "bottom" | "start" | "end" | "command" | "crop" | "dashboard" | "delete" | "download" | "edit" | "entry-point" | "exit-point" | "external-link" | "filter-circle" | "filter-fill" | "grid" | "grid-alt" | "home" | "jump-link" | "layout" | "list" | "maximize" | "maximize-alt" | "minimize" | "minimize-alt" | "more-horizontal" | "more-vertical" | "mouse-pointer" | "paperclip" | "pen-tool" | "pencil-tool" | "pin" | "pin-off" | "power" | "printer" | "reload" | "resize-column" | "rotate-cw" | "rotate-ccw" | "share" | "sidebar" | "sidebar-hide" | "sidebar-show" | "sign-in" | "sign-out" | "slash" | "slash-square" | "sort-asc" | "sort-desc" | "switcher" | "sync" | "sync-alert" | "sync-reverse" | "toggle-left" | "toggle-right" | "trash" | "text-wrap" | "upload" | "zoom-in" | "zoom-out" | "archive" | "clipboard" | "clipboard-checked" | "clipboard-copy" | "clipboard-x" | "file" | "file-change" | "file-check" | "file-diff" | "file-minus" | "file-plus" | "file-source" | "file-text" | "file-x" | "files" | "folder" | "folder-fill" | "folder-minus" | "folder-minus-fill" | "folder-plus" | "folder-plus-fill" | "folder-star" | "inbox" | "api" | "auto-apply" | "build" | "change-circle" | "change-square" | "channel" | "cloud" | "cloud-check" | "cloud-download" | "cloud-lightning" | "cloud-lock" | "cloud-off" | "cloud-upload" | "cloud-x" | "connection" | "connection-gateway" | "cpu" | "duplicate" | "gateway" | "git-branch" | "git-commit" | "git-merge" | "git-pull-request" | "git-repo" | "hammer" | "key-values" | "mainframe" | "mesh" | "module" | "monitor" | "network" | "network-alt" | "node" | "pipeline" | "plug" | "replication-direct" | "replication-perf" | "scissors" | "server" | "server-cluster" | "serverless" | "service" | "settings" | "sliders" | "smartphone" | "socket" | "step" | "tablet" | "terminal" | "terminal-screen" | "test" | "tools" | "transform-data" | "tv" | "webhook" | "wrench" | "calendar" | "clock" | "clock-filled" | "delay" | "event" | "history" | "hourglass" | "watch" | "bar-chart" | "bar-chart-alt" | "box" | "collections" | "database" | "hard-drive" | "line-chart" | "line-chart-up" | "logs" | "package" | "pie-chart" | "save" | "trend-down" | "trend-up" | "activity" | "at-sign" | "award" | "bell" | "bell-active" | "bell-active-fill" | "bell-off" | "discussion-circle" | "discussion-square" | "heart" | "heart-fill" | "heart-off" | "mail" | "mail-open" | "message-circle" | "message-circle-fill" | "message-square" | "message-square-fill" | "mic" | "mic-off" | "newspaper" | "phone" | "phone-call" | "phone-off" | "send" | "star" | "star-circle" | "star-fill" | "star-off" | "thumbs-down" | "thumbs-up" | "video-off" | "bank-vault" | "briefcase" | "credit-card" | "dollar-sign" | "enterprise" | "globe" | "globe-private" | "org" | "provider" | "shopping-bag" | "shopping-cart" | "arrow-down-circle" | "arrow-down-left" | "arrow-down-right" | "arrow-left" | "arrow-left-circle" | "arrow-right" | "arrow-right-circle" | "arrow-up-circle" | "arrow-up-left" | "arrow-up-right" | "caret" | "chevron-left" | "chevron-right" | "chevrons-down" | "chevrons-left" | "chevrons-right" | "chevrons-up" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "load-balancer" | "migrate" | "swap-horizontal";
32
+ } | {
33
+ label: string;
34
+ icon: undefined;
35
+ };
36
+ get hasSystemOption(): boolean;
37
+ get _options(): Partial<Record<"light" | "dark" | "system", ThemeOption>>;
38
+ get currentTheme(): "light" | "dark" | "system" | undefined;
39
+ onSelectTheme(theme: HdsThemes | undefined): void;
40
+ }
41
+ export {};
@@ -223,6 +223,7 @@ export { default as HdsTextBody } from './components/hds/text/body.ts';
223
223
  export { default as HdsTextCode } from './components/hds/text/code.ts';
224
224
  export { default as HdsTextDisplay } from './components/hds/text/display.ts';
225
225
  export * from './components/hds/text/types.ts';
226
+ export { default as HdsThemeSwitcher } from './components/hds/theme-switcher/index.ts';
226
227
  export { default as HdsTime } from './components/hds/time/index.ts';
227
228
  export { default as HdsTimeSingle } from './components/hds/time/single.ts';
228
229
  export { default as HdsTimeRange } from './components/hds/time/range.ts';
@@ -0,0 +1,68 @@
1
+ import Service from '@ember/service';
2
+ export declare enum HdsThemeValues {
3
+ System = "system",
4
+ Light = "light",
5
+ Dark = "dark"
6
+ }
7
+ declare enum HdsModesBaseValues {
8
+ Hds = "hds"
9
+ }
10
+ declare enum HdsModesLightValues {
11
+ CdsG0 = "cds-g0",
12
+ CdsG10 = "cds-g10"
13
+ }
14
+ declare enum HdsModesDarkValues {
15
+ CdsG90 = "cds-g90",
16
+ CdsG100 = "cds-g100"
17
+ }
18
+ export declare enum HdsCssSelectorsValues {
19
+ Data = "data",
20
+ Class = "class"
21
+ }
22
+ export type HdsThemes = `${HdsThemeValues}`;
23
+ export type HdsModes = `${HdsModesBaseValues}` | `${HdsModesLightValues}` | `${HdsModesDarkValues}`;
24
+ export type HdsModesLight = `${HdsModesLightValues}`;
25
+ export type HdsModesDark = `${HdsModesDarkValues}`;
26
+ export type HdsCssSelectors = `${HdsCssSelectorsValues}`;
27
+ type HdsThemingOptions = {
28
+ lightTheme: HdsModesLight;
29
+ darkTheme: HdsModesDark;
30
+ cssSelector: HdsCssSelectors;
31
+ };
32
+ type SetThemeArgs = {
33
+ theme: HdsThemes | undefined;
34
+ options?: HdsThemingOptions;
35
+ onSetTheme?: OnSetThemeCallback;
36
+ };
37
+ export type OnSetThemeCallbackArgs = {
38
+ currentTheme: HdsThemes | undefined;
39
+ currentMode: HdsModes | undefined;
40
+ };
41
+ export type OnSetThemeCallback = (args: OnSetThemeCallbackArgs) => void;
42
+ export declare const THEMES: HdsThemes[];
43
+ export declare const MODES_LIGHT: HdsModesLight[];
44
+ export declare const MODES_DARK: HdsModesDark[];
45
+ export declare const MODES: HdsModes[];
46
+ export declare const HDS_THEMING_DATA_SELECTOR = "data-hds-theme";
47
+ export declare const HDS_THEMING_CLASS_SELECTOR_PREFIX = "hds-theme";
48
+ export declare const HDS_THEMING_CLASS_SELECTORS_LIST: string[];
49
+ export declare const HDS_THEMING_LOCALSTORAGE_DATA = "hds-theming-data";
50
+ export declare const DEFAULT_THEMING_OPTION_LIGHT_THEME = HdsModesLightValues.CdsG0;
51
+ export declare const DEFAULT_THEMING_OPTION_DARK_THEME = HdsModesDarkValues.CdsG100;
52
+ export declare const DEFAULT_THEMING_OPTION_CSS_SELECTOR = "data";
53
+ export default class HdsThemingService extends Service {
54
+ _currentTheme: HdsThemes | undefined;
55
+ _currentMode: HdsModes | undefined;
56
+ _currentLightTheme: HdsModesLight;
57
+ _currentDarkTheme: HdsModesDark;
58
+ _currentCssSelector: HdsCssSelectors;
59
+ globalOnSetTheme: OnSetThemeCallback | undefined;
60
+ initializeTheme(): void;
61
+ setTheme({ theme, options, onSetTheme }: SetThemeArgs): void;
62
+ get currentTheme(): HdsThemes | undefined;
63
+ get currentMode(): HdsModes | undefined;
64
+ get currentLightTheme(): HdsModesLight;
65
+ get currentDarkTheme(): HdsModesDark;
66
+ get currentCssSelector(): HdsCssSelectors;
67
+ }
68
+ export {};
@@ -2,3 +2,4 @@
2
2
  * Copyright (c) HashiCorp, Inc.
3
3
  * SPDX-License-Identifier: MPL-2.0
4
4
  */
5
+ export * from './services/hds-theming.ts';
@@ -226,6 +226,7 @@ import type HdsTagComponent from './components/hds/tag';
226
226
  import type HdsTooltipButtonComponent from './components/hds/tooltip-button';
227
227
  import type HdsToastComponent from './components/hds/toast';
228
228
  import type HdsTextCodeComponent from './components/hds/text/code';
229
+ import type HdsThemeSwitcherComponent from './components/hds/theme-switcher';
229
230
  import type HdsTimeComponent from './components/hds/time';
230
231
  import type HdsTimeSingleComponent from './components/hds/time/single';
231
232
  import type HdsTimeRangeComponent from './components/hds/time/range';
@@ -717,6 +718,8 @@ export default interface HdsComponentsRegistry {
717
718
  'hds/tooltip-button': typeof HdsTooltipButtonComponent;
718
719
  'Hds::Toast': typeof HdsToastComponent;
719
720
  'hds/toast': typeof HdsToastComponent;
721
+ 'Hds::ThemeSwitcher': typeof HdsThemeSwitcherComponent;
722
+ 'hds/theme-switcher': typeof HdsThemeSwitcherComponent;
720
723
  'Hds::Time': typeof HdsTimeComponent;
721
724
  'hds/time': typeof HdsTimeComponent;
722
725
  'Hds::Time::Single': typeof HdsTimeSingleComponent;
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/components/hds/theme-switcher/index";
@@ -0,0 +1 @@
1
+ export { default } from "@hashicorp/design-system-components/services/hds-theming";
@@ -24,14 +24,9 @@ class HdsAdvancedTableRow {
24
24
  });
25
25
  }
26
26
  #cells = (i(this, "cells"), void 0);
27
- static {
28
- g(this.prototype, "columnOrder", [tracked], function () {
29
- return [];
30
- });
31
- }
32
- #columnOrder = (i(this, "columnOrder"), void 0);
33
27
  children = [];
34
28
  childrenKey;
29
+ table;
35
30
  get hasChildren() {
36
31
  return this.children.length > 0;
37
32
  }
@@ -39,18 +34,28 @@ class HdsAdvancedTableRow {
39
34
  return this.isOpen && this.hasChildren;
40
35
  }
41
36
  get orderedCells() {
42
- return this.columnOrder.map(key => {
43
- const cell = this.cells.find(cell => cell.columnKey === key);
44
- if (cell === undefined) {
45
- throw new Error(`Cell in the column with key ${key} not found for the row.`);
46
- }
47
- return cell;
48
- });
37
+ const {
38
+ columnOrder,
39
+ hasReorderableColumns
40
+ } = this.table;
41
+ if (hasReorderableColumns) {
42
+ return columnOrder.reduce((acc, key) => {
43
+ const cell = this.cells.find(cell => cell.columnKey === key);
44
+ if (cell !== undefined) {
45
+ acc.push(cell);
46
+ }
47
+ return acc;
48
+ }, []);
49
+ } else {
50
+ return this.cells;
51
+ }
49
52
  }
50
53
  constructor(args) {
51
54
  const {
52
- columns
55
+ columns,
56
+ table
53
57
  } = args;
58
+ this.table = table;
54
59
  this.cells = columns.map(column => {
55
60
  const cell = args[column.key ?? ''];
56
61
  return {
@@ -58,7 +63,6 @@ class HdsAdvancedTableRow {
58
63
  content: cell
59
64
  };
60
65
  });
61
- this.columnOrder = args.columnOrder ?? this.cells.map(cell => cell.columnKey);
62
66
 
63
67
  // set row data
64
68
  Object.assign(this, args);
@@ -1 +1 @@
1
- {"version":3,"file":"row.js","sources":["../../../../../src/components/hds/advanced-table/models/row.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableColumn, HdsAdvancedTableCell } from '../types';\n\ninterface HdsAdvancedTableRowArgs {\n [key: string]: unknown;\n columns: HdsAdvancedTableColumn[];\n id?: string;\n childrenKey?: string;\n columnOrder?: string[];\n}\n\nexport default class HdsAdvancedTableRow {\n id = guidFor(this);\n\n // row data\n [key: string]: unknown;\n\n @tracked isOpen: boolean = false;\n @tracked cells: HdsAdvancedTableCell[] = [];\n @tracked columnOrder: string[] = [];\n\n children: HdsAdvancedTableRow[] = [];\n childrenKey: string;\n\n get hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n get showChildren(): boolean {\n return this.isOpen && this.hasChildren;\n }\n\n get orderedCells(): HdsAdvancedTableCell[] {\n return this.columnOrder.map((key) => {\n const cell = this.cells.find((cell) => cell.columnKey === key);\n\n if (cell === undefined) {\n throw new Error(\n `Cell in the column with key ${key} not found for the row.`\n );\n }\n\n return cell;\n });\n }\n\n constructor(args: HdsAdvancedTableRowArgs) {\n const { columns } = args;\n\n this.cells = columns.map((column) => {\n const cell = args[column.key ?? ''];\n\n return {\n columnKey: column.key ?? '',\n content: cell,\n };\n });\n\n this.columnOrder =\n args.columnOrder ?? this.cells.map((cell) => cell.columnKey);\n\n // set row data\n Object.assign(this, args);\n\n this.childrenKey = args.childrenKey ?? 'children';\n\n const childModels = args[this.childrenKey];\n\n if (Array.isArray(childModels)) {\n this.children = childModels.map(\n (child) =>\n new HdsAdvancedTableRow({\n ...(child as HdsAdvancedTableRowArgs),\n columns: args.columns,\n childrenKey: this.childrenKey,\n })\n );\n }\n }\n\n @action\n openAll() {\n this.isOpen = true;\n this.children.forEach((child) => child.openAll());\n }\n\n @action\n collapseAll() {\n this.isOpen = false;\n this.children.forEach((child) => child.collapseAll());\n }\n\n @action\n onClickToggle() {\n this.isOpen = !this.isOpen;\n }\n}\n"],"names":["HdsAdvancedTableRow","id","guidFor","g","prototype","tracked","i","void 0","children","childrenKey","hasChildren","length","showChildren","isOpen","orderedCells","columnOrder","map","key","cell","cells","find","columnKey","undefined","Error","constructor","args","columns","column","content","Object","assign","childModels","Array","isArray","child","openAll","forEach","n","action","collapseAll","onClickToggle"],"mappings":"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"}
1
+ {"version":3,"file":"row.js","sources":["../../../../../src/components/hds/advanced-table/models/row.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport type { HdsAdvancedTableColumn, HdsAdvancedTableCell } from '../types';\nimport type HdsAdvancedTableTableModel from './table';\n\ninterface HdsAdvancedTableRowArgs {\n [key: string]: unknown;\n columns: HdsAdvancedTableColumn[];\n table: HdsAdvancedTableTableModel;\n id?: string;\n childrenKey?: string;\n}\n\nexport default class HdsAdvancedTableRow {\n id = guidFor(this);\n\n // row data\n [key: string]: unknown;\n\n @tracked isOpen: boolean = false;\n @tracked cells: HdsAdvancedTableCell[] = [];\n\n children: HdsAdvancedTableRow[] = [];\n childrenKey: string;\n table: HdsAdvancedTableTableModel;\n\n get hasChildren(): boolean {\n return this.children.length > 0;\n }\n\n get showChildren(): boolean {\n return this.isOpen && this.hasChildren;\n }\n\n get orderedCells(): HdsAdvancedTableCell[] {\n const { columnOrder, hasReorderableColumns } = this.table;\n\n if (hasReorderableColumns) {\n return columnOrder.reduce<HdsAdvancedTableCell[]>((acc, key) => {\n const cell = this.cells.find((cell) => cell.columnKey === key);\n\n if (cell !== undefined) {\n acc.push(cell);\n }\n\n return acc;\n }, []);\n } else {\n return this.cells;\n }\n }\n\n constructor(args: HdsAdvancedTableRowArgs) {\n const { columns, table } = args;\n\n this.table = table;\n\n this.cells = columns.map((column) => {\n const cell = args[column.key ?? ''];\n\n return {\n columnKey: column.key ?? '',\n content: cell,\n };\n });\n\n // set row data\n Object.assign(this, args);\n\n this.childrenKey = args.childrenKey ?? 'children';\n\n const childModels = args[this.childrenKey];\n\n if (Array.isArray(childModels)) {\n this.children = childModels.map(\n (child) =>\n new HdsAdvancedTableRow({\n ...(child as HdsAdvancedTableRowArgs),\n columns: args.columns,\n childrenKey: this.childrenKey,\n })\n );\n }\n }\n\n @action\n openAll() {\n this.isOpen = true;\n this.children.forEach((child) => child.openAll());\n }\n\n @action\n collapseAll() {\n this.isOpen = false;\n this.children.forEach((child) => child.collapseAll());\n }\n\n @action\n onClickToggle() {\n this.isOpen = !this.isOpen;\n }\n}\n"],"names":["HdsAdvancedTableRow","id","guidFor","g","prototype","tracked","i","void 0","children","childrenKey","table","hasChildren","length","showChildren","isOpen","orderedCells","columnOrder","hasReorderableColumns","reduce","acc","key","cell","cells","find","columnKey","undefined","push","constructor","args","columns","map","column","content","Object","assign","childModels","Array","isArray","child","openAll","forEach","n","action","collapseAll","onClickToggle"],"mappings":"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"}
@@ -229,7 +229,8 @@ class HdsAdvancedTableTableModel {
229
229
  return new HdsAdvancedTableRow({
230
230
  ...row,
231
231
  childrenKey: this.childrenKey,
232
- columns
232
+ columns,
233
+ table: this
233
234
  });
234
235
  });
235
236
  }
@@ -344,9 +345,6 @@ class HdsAdvancedTableTableModel {
344
345
  updated.splice(adjustedIndex, 0, sourceColumn.key); // Insert at new position
345
346
 
346
347
  this.columnOrder = updated;
347
- for (const row of this.rows) {
348
- row.columnOrder = updated;
349
- }
350
348
 
351
349
  // we need to wait until the reposition has finished
352
350
  requestAnimationFrame(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../../../src/components/hds/advanced-table/models/table.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport HdsAdvancedTableRow from './row.ts';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { isEmpty } from '@ember/utils';\nimport HdsAdvancedTableColumn from './column.ts';\nimport {\n HdsAdvancedTableColumnReorderSideValues,\n HdsAdvancedTableThSortOrderValues,\n} from '../types.ts';\n\nimport type { HdsAdvancedTableSignature } from '../index.ts';\nimport type {\n HdsAdvancedTableExpandState,\n HdsAdvancedTableCell,\n HdsAdvancedTableColumnReorderCallback,\n HdsAdvancedTableColumnReorderSide,\n HdsAdvancedTableSortingFunction,\n} from '../types';\n\ntype HdsAdvancedTableTableArgs = Pick<\n HdsAdvancedTableSignature['Args'],\n | 'model'\n | 'columns'\n | 'columnOrder'\n | 'childrenKey'\n | 'hasReorderableColumns'\n | 'hasResizableColumns'\n | 'sortBy'\n | 'sortOrder'\n | 'onSort'\n | 'onColumnReorder'\n | 'onColumnResize'\n>;\n\nfunction getVisibleRows(rows: HdsAdvancedTableRow[]): HdsAdvancedTableRow[] {\n return rows.reduce((acc, row) => {\n acc.push(row);\n\n if (row.isOpen && row.children) {\n acc.push(...getVisibleRows(row.children));\n }\n\n return acc;\n }, [] as HdsAdvancedTableRow[]);\n}\n\nfunction getChildrenCount(rows: HdsAdvancedTableRow[]): number {\n return rows.reduce(\n (acc, row) => acc + 1 + getChildrenCount(row.children ?? []),\n 0\n );\n}\n\nexport default class HdsAdvancedTableTableModel {\n @tracked columns: HdsAdvancedTableColumn[] = [];\n @tracked columnOrder: string[] = [];\n @tracked reorderDraggedColumn: HdsAdvancedTableColumn | null = null;\n @tracked reorderHoveredColumn: HdsAdvancedTableColumn | null = null;\n @tracked rows: HdsAdvancedTableRow[] = [];\n @tracked sortBy: HdsAdvancedTableTableArgs['sortBy'] = undefined;\n @tracked sortOrder: HdsAdvancedTableTableArgs['sortOrder'] =\n HdsAdvancedTableThSortOrderValues.Asc;\n @tracked gridElement?: HTMLDivElement = undefined;\n\n childrenKey?: HdsAdvancedTableTableArgs['childrenKey'];\n hasReorderableColumns?: HdsAdvancedTableTableArgs['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableTableArgs['hasResizableColumns'];\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onSort?: HdsAdvancedTableSignature['Args']['onSort'];\n\n constructor(args: HdsAdvancedTableTableArgs) {\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder,\n onSort,\n } = args;\n\n this.childrenKey = childrenKey;\n this.hasReorderableColumns = hasReorderableColumns;\n this.hasResizableColumns = hasResizableColumns;\n this.onSort = onSort;\n\n this.setupData({ model, columns, sortBy, sortOrder });\n\n // set initial column order\n if (this.hasReorderableColumns) {\n this.columnOrder = isEmpty(columnOrder)\n ? this.columns.map((column) => column.key)\n : columnOrder!; // ensured non-empty\n\n this.onColumnReorder = onColumnReorder;\n }\n }\n\n get hasColumnBeingDragged(): boolean {\n return this.reorderDraggedColumn !== null;\n }\n\n get reorderDraggedColumnCells(): HdsAdvancedTableCell[] {\n if (this.reorderDraggedColumn === null) {\n return [];\n }\n\n const { key } = this.reorderDraggedColumn;\n\n return this.flattenedVisibleRows.map((row) => {\n const cell = row.cells.find((cell) => cell.columnKey === key);\n\n return cell!;\n });\n }\n\n get orderedColumns(): HdsAdvancedTableColumn[] {\n if (this.hasReorderableColumns) {\n return this.columnOrder.reduce<HdsAdvancedTableColumn[]>((acc, key) => {\n const column = this.columns.find((column) => column.key === key);\n\n if (column !== undefined) {\n acc.push(column);\n }\n\n return acc;\n }, []);\n } else {\n return this.columns;\n }\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.columns.find(\n (column) => column.key === this.sortBy\n );\n\n if (\n // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n // otherwise fallback to the default format \"sortBy:sortOrder\"\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get sortedRows(): HdsAdvancedTableRow[] {\n const criteria = this.sortCriteria;\n const rows = this.rows;\n\n if (rows.length <= 1 || criteria === undefined) {\n return rows;\n }\n\n if (typeof criteria === 'function') {\n // Use custom sort function\n return [...rows].sort(criteria);\n } else {\n // Parse the criteria string format \"sortBy:sortOrder\"\n const [sortBy, sortOrder] = criteria.split(':');\n\n if (!sortBy) {\n return rows;\n }\n\n return [...rows].sort((a, b) => {\n const valueA = a[sortBy] as string | number | boolean;\n const valueB = b[sortBy] as string | number | boolean;\n\n if (valueA < valueB) {\n return sortOrder === 'asc' ? -1 : 1;\n }\n if (valueA > valueB) {\n return sortOrder === 'asc' ? 1 : -1;\n }\n\n return 0;\n });\n }\n }\n\n get totalRowCount(): number {\n return getChildrenCount(this.sortedRows);\n }\n\n get flattenedVisibleRows(): HdsAdvancedTableRow[] {\n return getVisibleRows(this.sortedRows);\n }\n\n get lastVisibleRow(): HdsAdvancedTableRow | undefined {\n return this.flattenedVisibleRows[this.flattenedVisibleRows.length - 1];\n }\n\n get hasRowsWithChildren(): boolean {\n return this.rows.some((row) => row.hasChildren);\n }\n\n get allRowsAreOpen(): boolean {\n return this.flattenedVisibleRows.length === this.totalRowCount;\n }\n\n get expandState(): HdsAdvancedTableExpandState {\n if (this.allRowsAreOpen) {\n return true;\n } else {\n return false;\n }\n }\n\n setTransientColumnWidths(options: { roundValues?: boolean } = {}): void {\n const roundValues = options.roundValues ?? false;\n\n this.columns.forEach((column) => {\n column.pxTransientWidth = roundValues\n ? Math.round(column.pxWidth)\n : column.pxWidth;\n });\n }\n\n resetTransientColumnWidths(): void {\n this.columns.forEach((column) => {\n column.pxTransientWidth = undefined;\n });\n }\n\n getColumnByKey(key: string): HdsAdvancedTableColumn | undefined {\n return this.columns.find((column) => column.key === key);\n }\n\n @action\n setupData(\n args: Pick<\n HdsAdvancedTableTableArgs,\n 'model' | 'columns' | 'sortBy' | 'sortOrder'\n >\n ) {\n const { model, columns, sortBy, sortOrder } = args;\n\n this.sortBy = sortBy;\n this.sortOrder = sortOrder ?? HdsAdvancedTableThSortOrderValues.Asc;\n\n this.columns = columns.map(\n (column) =>\n new HdsAdvancedTableColumn({\n column,\n table: this,\n })\n );\n\n this.rows = model.map((row) => {\n return new HdsAdvancedTableRow({\n ...row,\n childrenKey: this.childrenKey,\n columns,\n });\n });\n }\n\n @action\n restoreColumnWidths(): void {\n this.columns.forEach((column) => {\n column.width = column.originalWidth;\n });\n }\n\n @action\n setSortBy(column: string): void {\n if (this.sortBy === column) {\n // check to see if the column is already sorted and invert the sort order if so\n this.sortOrder =\n this.sortOrder === HdsAdvancedTableThSortOrderValues.Asc\n ? HdsAdvancedTableThSortOrderValues.Desc\n : HdsAdvancedTableThSortOrderValues.Asc;\n } else {\n // otherwise, set the sort order to ascending\n this.sortBy = column;\n this.sortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n if (typeof this.onSort === 'function') {\n this.onSort(this.sortBy, this.sortOrder);\n }\n }\n\n @action\n openAll() {\n this.rows.forEach((row) => row.openAll());\n }\n\n @action\n collapseAll() {\n this.rows.forEach((row) => row.collapseAll());\n }\n\n @action\n toggleAll() {\n if (this.allRowsAreOpen) {\n this.collapseAll();\n } else {\n this.openAll();\n }\n }\n\n @action\n stepColumn(column: HdsAdvancedTableColumn, step: number): void {\n const { table } = column;\n const oldIndex = table.orderedColumns.indexOf(column);\n const newIndex = oldIndex + step;\n\n // Check if the new position is within the array bounds.\n if (newIndex < 0 || newIndex >= table.orderedColumns.length) {\n return;\n }\n\n const targetColumn = table.orderedColumns[newIndex];\n\n if (targetColumn === undefined) {\n return;\n }\n\n // Determine the side based on the step direction.\n const side: HdsAdvancedTableColumnReorderSide =\n step > 0\n ? HdsAdvancedTableColumnReorderSideValues.Right\n : HdsAdvancedTableColumnReorderSideValues.Left;\n\n table.moveColumnToTarget(column, targetColumn, side);\n }\n\n @action\n moveColumnToTerminalPosition(\n column: HdsAdvancedTableColumn,\n position: 'start' | 'end'\n ): void {\n const firstColumn = this.orderedColumns.find((column) => column.isFirst);\n\n const {\n targetColumn,\n side,\n }: {\n targetColumn?: HdsAdvancedTableColumn;\n side: HdsAdvancedTableColumnReorderSide;\n } =\n position === 'start'\n ? {\n targetColumn: firstColumn,\n side: HdsAdvancedTableColumnReorderSideValues.Left,\n }\n : {\n targetColumn: this.orderedColumns[this.orderedColumns.length - 1],\n side: HdsAdvancedTableColumnReorderSideValues.Right,\n };\n\n if (targetColumn === undefined) {\n return;\n }\n\n // Move the column to the target position\n this.moveColumnToTarget(column, targetColumn, side);\n }\n\n @action\n moveColumnToTarget(\n sourceColumn: HdsAdvancedTableColumn,\n targetColumn: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ): void {\n const sourceKey = sourceColumn.key;\n const targetKey = targetColumn.key;\n\n const oldIndex = this.columnOrder.indexOf(sourceKey);\n const newIndex = this.columnOrder.indexOf(targetKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const updated = [...this.columnOrder];\n\n updated.splice(oldIndex, 1); // Remove from old position\n\n // Calculate the insertion index based on the side\n // If dropping to the right of the target, insert after the target\n // If dropping to the left of the target, insert before the target\n // Adjust for the shift in indices caused by removing the source column\n const adjustedIndex =\n side === HdsAdvancedTableColumnReorderSideValues.Right\n ? newIndex > oldIndex\n ? newIndex\n : newIndex + 1\n : newIndex > oldIndex\n ? newIndex - 1\n : newIndex;\n\n updated.splice(adjustedIndex, 0, sourceColumn.key); // Insert at new position\n\n this.columnOrder = updated;\n\n for (const row of this.rows) {\n row.columnOrder = updated;\n }\n\n // we need to wait until the reposition has finished\n requestAnimationFrame(() => {\n sourceColumn.thElement?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n });\n\n sourceColumn.isBeingDragged = false;\n\n this.onColumnReorder?.({\n column: sourceColumn,\n newOrder: updated,\n insertedAt: updated.indexOf(sourceColumn.key),\n });\n });\n }\n }\n\n @action\n moveColumnToDropTarget(\n targetColumn: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ) {\n const sourceColumn = this.reorderDraggedColumn;\n\n if (sourceColumn == null || sourceColumn === targetColumn) {\n return;\n }\n\n this.moveColumnToTarget(sourceColumn, targetColumn, side);\n }\n}\n"],"names":["getVisibleRows","rows","reduce","acc","row","push","isOpen","children","getChildrenCount","HdsAdvancedTableTableModel","g","prototype","tracked","i","void 0","undefined","HdsAdvancedTableThSortOrderValues","Asc","childrenKey","hasReorderableColumns","hasResizableColumns","onColumnReorder","onSort","constructor","args","model","columns","columnOrder","sortBy","sortOrder","setupData","isEmpty","map","column","key","hasColumnBeingDragged","reorderDraggedColumn","reorderDraggedColumnCells","flattenedVisibleRows","cell","cells","find","columnKey","orderedColumns","sortCriteria","currentColumn","sortingFunction","sortedRows","criteria","length","sort","split","a","b","valueA","valueB","totalRowCount","lastVisibleRow","hasRowsWithChildren","some","hasChildren","allRowsAreOpen","expandState","setTransientColumnWidths","options","roundValues","forEach","pxTransientWidth","Math","round","pxWidth","resetTransientColumnWidths","getColumnByKey","HdsAdvancedTableColumn","table","HdsAdvancedTableRow","n","action","restoreColumnWidths","width","originalWidth","setSortBy","Desc","openAll","collapseAll","toggleAll","stepColumn","step","oldIndex","indexOf","newIndex","targetColumn","side","HdsAdvancedTableColumnReorderSideValues","Right","Left","moveColumnToTarget","moveColumnToTerminalPosition","position","firstColumn","isFirst","sourceColumn","sourceKey","targetKey","updated","splice","adjustedIndex","requestAnimationFrame","thElement","scrollIntoView","behavior","block","inline","isBeingDragged","newOrder","insertedAt","moveColumnToDropTarget"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../../../src/components/hds/advanced-table/models/table.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport HdsAdvancedTableRow from './row.ts';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { isEmpty } from '@ember/utils';\nimport HdsAdvancedTableColumn from './column.ts';\nimport {\n HdsAdvancedTableColumnReorderSideValues,\n HdsAdvancedTableThSortOrderValues,\n} from '../types.ts';\n\nimport type { HdsAdvancedTableSignature } from '../index.ts';\nimport type {\n HdsAdvancedTableExpandState,\n HdsAdvancedTableCell,\n HdsAdvancedTableColumnReorderCallback,\n HdsAdvancedTableColumnReorderSide,\n HdsAdvancedTableSortingFunction,\n} from '../types';\n\ntype HdsAdvancedTableTableArgs = Pick<\n HdsAdvancedTableSignature['Args'],\n | 'model'\n | 'columns'\n | 'columnOrder'\n | 'childrenKey'\n | 'hasReorderableColumns'\n | 'hasResizableColumns'\n | 'sortBy'\n | 'sortOrder'\n | 'onSort'\n | 'onColumnReorder'\n | 'onColumnResize'\n>;\n\nfunction getVisibleRows(rows: HdsAdvancedTableRow[]): HdsAdvancedTableRow[] {\n return rows.reduce((acc, row) => {\n acc.push(row);\n\n if (row.isOpen && row.children) {\n acc.push(...getVisibleRows(row.children));\n }\n\n return acc;\n }, [] as HdsAdvancedTableRow[]);\n}\n\nfunction getChildrenCount(rows: HdsAdvancedTableRow[]): number {\n return rows.reduce(\n (acc, row) => acc + 1 + getChildrenCount(row.children ?? []),\n 0\n );\n}\n\nexport default class HdsAdvancedTableTableModel {\n @tracked columns: HdsAdvancedTableColumn[] = [];\n @tracked columnOrder: string[] = [];\n @tracked reorderDraggedColumn: HdsAdvancedTableColumn | null = null;\n @tracked reorderHoveredColumn: HdsAdvancedTableColumn | null = null;\n @tracked rows: HdsAdvancedTableRow[] = [];\n @tracked sortBy: HdsAdvancedTableTableArgs['sortBy'] = undefined;\n @tracked sortOrder: HdsAdvancedTableTableArgs['sortOrder'] =\n HdsAdvancedTableThSortOrderValues.Asc;\n @tracked gridElement?: HTMLDivElement = undefined;\n\n childrenKey?: HdsAdvancedTableTableArgs['childrenKey'];\n hasReorderableColumns?: HdsAdvancedTableTableArgs['hasReorderableColumns'];\n hasResizableColumns?: HdsAdvancedTableTableArgs['hasResizableColumns'];\n onColumnReorder?: HdsAdvancedTableColumnReorderCallback;\n onSort?: HdsAdvancedTableSignature['Args']['onSort'];\n\n constructor(args: HdsAdvancedTableTableArgs) {\n const {\n model,\n columns,\n columnOrder,\n childrenKey,\n hasReorderableColumns,\n hasResizableColumns,\n sortBy,\n sortOrder,\n onColumnReorder,\n onSort,\n } = args;\n\n this.childrenKey = childrenKey;\n this.hasReorderableColumns = hasReorderableColumns;\n this.hasResizableColumns = hasResizableColumns;\n this.onSort = onSort;\n\n this.setupData({ model, columns, sortBy, sortOrder });\n\n // set initial column order\n if (this.hasReorderableColumns) {\n this.columnOrder = isEmpty(columnOrder)\n ? this.columns.map((column) => column.key)\n : columnOrder!; // ensured non-empty\n\n this.onColumnReorder = onColumnReorder;\n }\n }\n\n get hasColumnBeingDragged(): boolean {\n return this.reorderDraggedColumn !== null;\n }\n\n get reorderDraggedColumnCells(): HdsAdvancedTableCell[] {\n if (this.reorderDraggedColumn === null) {\n return [];\n }\n\n const { key } = this.reorderDraggedColumn;\n\n return this.flattenedVisibleRows.map((row) => {\n const cell = row.cells.find((cell) => cell.columnKey === key);\n\n return cell!;\n });\n }\n\n get orderedColumns(): HdsAdvancedTableColumn[] {\n if (this.hasReorderableColumns) {\n return this.columnOrder.reduce<HdsAdvancedTableColumn[]>((acc, key) => {\n const column = this.columns.find((column) => column.key === key);\n\n if (column !== undefined) {\n acc.push(column);\n }\n\n return acc;\n }, []);\n } else {\n return this.columns;\n }\n }\n\n get sortCriteria(): string | HdsAdvancedTableSortingFunction<unknown> {\n // get the current column\n const currentColumn = this.columns.find(\n (column) => column.key === this.sortBy\n );\n\n if (\n // check if there is a custom sorting function associated with the current `sortBy` column (we assume the column has `isSortable`)\n currentColumn?.sortingFunction &&\n typeof currentColumn.sortingFunction === 'function'\n ) {\n return currentColumn.sortingFunction;\n } else {\n // otherwise fallback to the default format \"sortBy:sortOrder\"\n return `${this.sortBy}:${this.sortOrder}`;\n }\n }\n\n get sortedRows(): HdsAdvancedTableRow[] {\n const criteria = this.sortCriteria;\n const rows = this.rows;\n\n if (rows.length <= 1 || criteria === undefined) {\n return rows;\n }\n\n if (typeof criteria === 'function') {\n // Use custom sort function\n return [...rows].sort(criteria);\n } else {\n // Parse the criteria string format \"sortBy:sortOrder\"\n const [sortBy, sortOrder] = criteria.split(':');\n\n if (!sortBy) {\n return rows;\n }\n\n return [...rows].sort((a, b) => {\n const valueA = a[sortBy] as string | number | boolean;\n const valueB = b[sortBy] as string | number | boolean;\n\n if (valueA < valueB) {\n return sortOrder === 'asc' ? -1 : 1;\n }\n if (valueA > valueB) {\n return sortOrder === 'asc' ? 1 : -1;\n }\n\n return 0;\n });\n }\n }\n\n get totalRowCount(): number {\n return getChildrenCount(this.sortedRows);\n }\n\n get flattenedVisibleRows(): HdsAdvancedTableRow[] {\n return getVisibleRows(this.sortedRows);\n }\n\n get lastVisibleRow(): HdsAdvancedTableRow | undefined {\n return this.flattenedVisibleRows[this.flattenedVisibleRows.length - 1];\n }\n\n get hasRowsWithChildren(): boolean {\n return this.rows.some((row) => row.hasChildren);\n }\n\n get allRowsAreOpen(): boolean {\n return this.flattenedVisibleRows.length === this.totalRowCount;\n }\n\n get expandState(): HdsAdvancedTableExpandState {\n if (this.allRowsAreOpen) {\n return true;\n } else {\n return false;\n }\n }\n\n setTransientColumnWidths(options: { roundValues?: boolean } = {}): void {\n const roundValues = options.roundValues ?? false;\n\n this.columns.forEach((column) => {\n column.pxTransientWidth = roundValues\n ? Math.round(column.pxWidth)\n : column.pxWidth;\n });\n }\n\n resetTransientColumnWidths(): void {\n this.columns.forEach((column) => {\n column.pxTransientWidth = undefined;\n });\n }\n\n getColumnByKey(key: string): HdsAdvancedTableColumn | undefined {\n return this.columns.find((column) => column.key === key);\n }\n\n @action\n setupData(\n args: Pick<\n HdsAdvancedTableTableArgs,\n 'model' | 'columns' | 'sortBy' | 'sortOrder'\n >\n ) {\n const { model, columns, sortBy, sortOrder } = args;\n\n this.sortBy = sortBy;\n this.sortOrder = sortOrder ?? HdsAdvancedTableThSortOrderValues.Asc;\n\n this.columns = columns.map(\n (column) =>\n new HdsAdvancedTableColumn({\n column,\n table: this,\n })\n );\n\n this.rows = model.map((row) => {\n return new HdsAdvancedTableRow({\n ...row,\n childrenKey: this.childrenKey,\n columns,\n table: this,\n });\n });\n }\n\n @action\n restoreColumnWidths(): void {\n this.columns.forEach((column) => {\n column.width = column.originalWidth;\n });\n }\n\n @action\n setSortBy(column: string): void {\n if (this.sortBy === column) {\n // check to see if the column is already sorted and invert the sort order if so\n this.sortOrder =\n this.sortOrder === HdsAdvancedTableThSortOrderValues.Asc\n ? HdsAdvancedTableThSortOrderValues.Desc\n : HdsAdvancedTableThSortOrderValues.Asc;\n } else {\n // otherwise, set the sort order to ascending\n this.sortBy = column;\n this.sortOrder = HdsAdvancedTableThSortOrderValues.Asc;\n }\n\n if (typeof this.onSort === 'function') {\n this.onSort(this.sortBy, this.sortOrder);\n }\n }\n\n @action\n openAll() {\n this.rows.forEach((row) => row.openAll());\n }\n\n @action\n collapseAll() {\n this.rows.forEach((row) => row.collapseAll());\n }\n\n @action\n toggleAll() {\n if (this.allRowsAreOpen) {\n this.collapseAll();\n } else {\n this.openAll();\n }\n }\n\n @action\n stepColumn(column: HdsAdvancedTableColumn, step: number): void {\n const { table } = column;\n const oldIndex = table.orderedColumns.indexOf(column);\n const newIndex = oldIndex + step;\n\n // Check if the new position is within the array bounds.\n if (newIndex < 0 || newIndex >= table.orderedColumns.length) {\n return;\n }\n\n const targetColumn = table.orderedColumns[newIndex];\n\n if (targetColumn === undefined) {\n return;\n }\n\n // Determine the side based on the step direction.\n const side: HdsAdvancedTableColumnReorderSide =\n step > 0\n ? HdsAdvancedTableColumnReorderSideValues.Right\n : HdsAdvancedTableColumnReorderSideValues.Left;\n\n table.moveColumnToTarget(column, targetColumn, side);\n }\n\n @action\n moveColumnToTerminalPosition(\n column: HdsAdvancedTableColumn,\n position: 'start' | 'end'\n ): void {\n const firstColumn = this.orderedColumns.find((column) => column.isFirst);\n\n const {\n targetColumn,\n side,\n }: {\n targetColumn?: HdsAdvancedTableColumn;\n side: HdsAdvancedTableColumnReorderSide;\n } =\n position === 'start'\n ? {\n targetColumn: firstColumn,\n side: HdsAdvancedTableColumnReorderSideValues.Left,\n }\n : {\n targetColumn: this.orderedColumns[this.orderedColumns.length - 1],\n side: HdsAdvancedTableColumnReorderSideValues.Right,\n };\n\n if (targetColumn === undefined) {\n return;\n }\n\n // Move the column to the target position\n this.moveColumnToTarget(column, targetColumn, side);\n }\n\n @action\n moveColumnToTarget(\n sourceColumn: HdsAdvancedTableColumn,\n targetColumn: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ): void {\n const sourceKey = sourceColumn.key;\n const targetKey = targetColumn.key;\n\n const oldIndex = this.columnOrder.indexOf(sourceKey);\n const newIndex = this.columnOrder.indexOf(targetKey);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const updated = [...this.columnOrder];\n\n updated.splice(oldIndex, 1); // Remove from old position\n\n // Calculate the insertion index based on the side\n // If dropping to the right of the target, insert after the target\n // If dropping to the left of the target, insert before the target\n // Adjust for the shift in indices caused by removing the source column\n const adjustedIndex =\n side === HdsAdvancedTableColumnReorderSideValues.Right\n ? newIndex > oldIndex\n ? newIndex\n : newIndex + 1\n : newIndex > oldIndex\n ? newIndex - 1\n : newIndex;\n\n updated.splice(adjustedIndex, 0, sourceColumn.key); // Insert at new position\n\n this.columnOrder = updated;\n\n // we need to wait until the reposition has finished\n requestAnimationFrame(() => {\n sourceColumn.thElement?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n });\n\n sourceColumn.isBeingDragged = false;\n\n this.onColumnReorder?.({\n column: sourceColumn,\n newOrder: updated,\n insertedAt: updated.indexOf(sourceColumn.key),\n });\n });\n }\n }\n\n @action\n moveColumnToDropTarget(\n targetColumn: HdsAdvancedTableColumn,\n side: HdsAdvancedTableColumnReorderSide\n ) {\n const sourceColumn = this.reorderDraggedColumn;\n\n if (sourceColumn == null || sourceColumn === targetColumn) {\n return;\n }\n\n this.moveColumnToTarget(sourceColumn, targetColumn, side);\n }\n}\n"],"names":["getVisibleRows","rows","reduce","acc","row","push","isOpen","children","getChildrenCount","HdsAdvancedTableTableModel","g","prototype","tracked","i","void 0","undefined","HdsAdvancedTableThSortOrderValues","Asc","childrenKey","hasReorderableColumns","hasResizableColumns","onColumnReorder","onSort","constructor","args","model","columns","columnOrder","sortBy","sortOrder","setupData","isEmpty","map","column","key","hasColumnBeingDragged","reorderDraggedColumn","reorderDraggedColumnCells","flattenedVisibleRows","cell","cells","find","columnKey","orderedColumns","sortCriteria","currentColumn","sortingFunction","sortedRows","criteria","length","sort","split","a","b","valueA","valueB","totalRowCount","lastVisibleRow","hasRowsWithChildren","some","hasChildren","allRowsAreOpen","expandState","setTransientColumnWidths","options","roundValues","forEach","pxTransientWidth","Math","round","pxWidth","resetTransientColumnWidths","getColumnByKey","HdsAdvancedTableColumn","table","HdsAdvancedTableRow","n","action","restoreColumnWidths","width","originalWidth","setSortBy","Desc","openAll","collapseAll","toggleAll","stepColumn","step","oldIndex","indexOf","newIndex","targetColumn","side","HdsAdvancedTableColumnReorderSideValues","Right","Left","moveColumnToTarget","moveColumnToTerminalPosition","position","firstColumn","isFirst","sourceColumn","sourceKey","targetKey","updated","splice","adjustedIndex","requestAnimationFrame","thElement","scrollIntoView","behavior","block","inline","isBeingDragged","newOrder","insertedAt","moveColumnToDropTarget"],"mappings":"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"}
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
2
2
  import { precompileTemplate } from '@ember/template-compilation';
3
3
  import { setComponentTemplate } from '@ember/component';
4
4
 
5
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class=\"hds-app-footer__copyright\" ...attributes>\n <Hds::Icon @name=\"hashicorp\" />\n <Hds::Text::Body @tag=\"span\" @size=\"100\">\n {{hds-t\n \"hds.components.app-footer.copyright.copyright-text\"\n default=(concat \"© \" this.year \" HashiCorp\")\n year=this.year\n }}\n </Hds::Text::Body>\n</div>");
5
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class=\"hds-app-footer__copyright\" ...attributes>\n <Hds::Icon @name=\"hashicorp\" />\n <Hds::Text::Body @tag=\"span\" @size=\"100\" @align=\"center\">\n {{hds-t\n \"hds.components.app-footer.copyright.copyright-text\"\n default=(concat \"© \" this.year \" HashiCorp, an IBM Company\")\n year=this.year\n }}\n </Hds::Text::Body>\n</div>");
6
6
 
7
7
  /**
8
8
  * Copyright (c) HashiCorp, Inc.
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
2
2
  import { precompileTemplate } from '@ember/template-compilation';
3
3
  import { setComponentTemplate } from '@ember/component';
4
4
 
5
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<Hds::Copy::Button\n class=\"hds-code-block__copy-button\"\n @text={{this.text}}\n @isIconOnly={{true}}\n @size=\"small\"\n @targetToCopy={{@targetToCopy}}\n @onSuccess={{@onCopy}}\n ...attributes\n/>");
5
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<Hds::Copy::Button\n class=\"hds-code-block__copy-button\"\n @text={{this.text}}\n @isIconOnly={{true}}\n @size=\"small\"\n @targetToCopy={{@targetToCopy}}\n @onSuccess={{@onCopy}}\n @ariaMessageText={{@copySuccessMessageText}}\n ...attributes\n/>");
6
6
 
7
7
  /**
8
8
  * Copyright (c) HashiCorp, Inc.
@@ -1 +1 @@
1
- {"version":3,"file":"copy-button.js","sources":["../../../../src/components/hds/code-block/copy-button.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n\nimport type { HdsCopyButtonSignature } from '../copy/button';\n\nexport interface HdsCodeBlockCopyButtonSignature {\n Args: {\n targetToCopy?: HdsCopyButtonSignature['Args']['targetToCopy'];\n text?: HdsCopyButtonSignature['Args']['text'];\n onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsCopyButtonSignature['Element'];\n}\n\nexport default class HdsCodeBlockCopyButton extends Component<HdsCodeBlockCopyButtonSignature> {\n get text(): HdsCopyButtonSignature['Args']['text'] {\n return this.args.text ? this.args.text : 'Copy';\n }\n}\n"],"names":["HdsCodeBlockCopyButton","Component","text","args","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAkBe,MAAMA,sBAAsB,SAASC,SAAS,CAAkC;EAC7F,IAAIC,IAAIA,GAA2C;AACjD,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,IAAI,GAAG,IAAI,CAACC,IAAI,CAACD,IAAI,GAAG,MAAM;AACjD,EAAA;AACF;AAACE,oBAAA,CAAAC,QAAA,EAJoBL,sBAAsB,CAAA;;;;"}
1
+ {"version":3,"file":"copy-button.js","sources":["../../../../src/components/hds/code-block/copy-button.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n\nimport type { HdsCopyButtonSignature } from '../copy/button';\n\nexport interface HdsCodeBlockCopyButtonSignature {\n Args: {\n targetToCopy?: HdsCopyButtonSignature['Args']['targetToCopy'];\n text?: HdsCopyButtonSignature['Args']['text'];\n onCopy?: HdsCopyButtonSignature['Args']['onSuccess'];\n copySuccessMessageText?: HdsCopyButtonSignature['Args']['ariaMessageText'];\n };\n Blocks: {\n default: [];\n };\n Element: HdsCopyButtonSignature['Element'];\n}\n\nexport default class HdsCodeBlockCopyButton extends Component<HdsCodeBlockCopyButtonSignature> {\n get text(): HdsCopyButtonSignature['Args']['text'] {\n return this.args.text ? this.args.text : 'Copy';\n }\n}\n"],"names":["HdsCodeBlockCopyButton","Component","text","args","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAmBe,MAAMA,sBAAsB,SAASC,SAAS,CAAkC;EAC7F,IAAIC,IAAIA,GAA2C;AACjD,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,IAAI,GAAG,IAAI,CAACC,IAAI,CAACD,IAAI,GAAG,MAAM;AACjD,EAAA;AACF;AAACE,oBAAA,CAAAC,QAAA,EAJoBL,sBAAsB,CAAA;;;;"}
@@ -26,7 +26,7 @@ import { precompileTemplate } from '@ember/template-compilation';
26
26
  import { g, i, n } from 'decorator-transforms/runtime';
27
27
  import { setComponentTemplate } from '@ember/component';
28
28
 
29
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class={{this.classNames}} ...attributes {{this._setUpCodeObserver}}>\n <div class=\"hds-code-block__header\">\n {{~yield (hash Title=(component \"hds/code-block/title\" didInsertNode=this.registerTitleElement))~}}\n {{~yield\n (hash Description=(component \"hds/code-block/description\" didInsertNode=this.registerDescriptionElement))\n ~}}\n </div>\n <div class=\"hds-code-block__body\">\n {{! content within pre tag is whitespace-sensitive; do not add new lines! }}\n <pre\n class=\"hds-code-block__code\"\n {{style maxHeight=this.maxHeight}}\n data-line={{@highlightLines}}\n data-start={{@lineNumberStart}}\n id={{this._preCodeId}}\n aria-label={{@ariaLabel}}\n aria-labelledby={{this.ariaLabelledBy}}\n aria-describedby={{this.ariaDescribedBy}}\n tabindex=\"0\"\n ><code {{this._setUpCodeBlockCode}}>\n {{~this._prismCode~}}\n </code></pre>\n\n {{#if @hasCopyButton}}\n <Hds::CodeBlock::CopyButton\n @targetToCopy=\"#{{this._preCodeId}}\"\n aria-describedby={{this._preCodeId}}\n @text={{this.copyButtonText}}\n @onCopy={{@onCopy}}\n />\n {{/if}}\n </div>\n {{#if this.showFooter}}\n <div class=\"hds-code-block__overlay-footer\">\n <Hds::Button\n class=\"hds-code-block__height-toggle-button\"\n @text={{if this._isExpanded \"Show less code\" \"Show more code\"}}\n @color=\"secondary\"\n @icon={{if this._isExpanded \"unfold-close\" \"unfold-open\"}}\n @size=\"small\"\n {{on \"click\" this.toggleExpanded}}\n />\n </div>\n {{/if}}\n</div>");
29
+ var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n\n<div class={{this.classNames}} ...attributes {{this._setUpCodeObserver}}>\n <div class=\"hds-code-block__header\">\n {{~yield (hash Title=(component \"hds/code-block/title\" didInsertNode=this.registerTitleElement))~}}\n {{~yield\n (hash Description=(component \"hds/code-block/description\" didInsertNode=this.registerDescriptionElement))\n ~}}\n </div>\n <div class=\"hds-code-block__body\">\n {{! content within pre tag is whitespace-sensitive; do not add new lines! }}\n <pre\n class=\"hds-code-block__code\"\n {{style maxHeight=this.maxHeight}}\n data-line={{@highlightLines}}\n data-start={{@lineNumberStart}}\n id={{this._preCodeId}}\n aria-label={{@ariaLabel}}\n aria-labelledby={{this.ariaLabelledBy}}\n aria-describedby={{this.ariaDescribedBy}}\n tabindex=\"0\"\n ><code {{this._setUpCodeBlockCode}}>\n {{~this._prismCode~}}\n </code></pre>\n\n {{#if @hasCopyButton}}\n <Hds::CodeBlock::CopyButton\n @targetToCopy=\"#{{this._preCodeId}}\"\n aria-describedby={{this._preCodeId}}\n @text={{this.copyButtonText}}\n @onCopy={{@onCopy}}\n @copySuccessMessageText={{@copySuccessMessageText}}\n />\n {{/if}}\n </div>\n {{#if this.showFooter}}\n <div class=\"hds-code-block__overlay-footer\">\n <Hds::Button\n class=\"hds-code-block__height-toggle-button\"\n @text={{if this._isExpanded \"Show less code\" \"Show more code\"}}\n @color=\"secondary\"\n @icon={{if this._isExpanded \"unfold-close\" \"unfold-open\"}}\n @size=\"small\"\n {{on \"click\" this.toggleExpanded}}\n />\n </div>\n {{/if}}\n</div>");
30
30
 
31
31
  /**
32
32
  * Copyright (c) HashiCorp, Inc.