@ukic/web-components 2.11.0 → 2.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  3. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-button_3.cjs.entry.js +18 -2
  5. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-popover-menu.cjs.entry.js +9 -3
  11. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-side-navigation.cjs.entry.js +6 -0
  13. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-text-field.cjs.entry.js +47 -10
  15. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/collection/components/ic-alert/ic-alert.css +0 -1
  18. package/dist/collection/components/ic-button/ic-button.js +18 -2
  19. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  20. package/dist/collection/components/ic-footer/ic-footer.js +1 -1
  21. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  22. package/dist/collection/components/ic-footer-link/ic-footer-link.css +2 -3
  23. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js +8 -1
  24. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js.map +1 -1
  25. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +9 -3
  26. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  27. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js +3 -0
  28. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js.map +1 -1
  29. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js +8 -1
  30. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js.map +1 -1
  31. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +10 -1
  32. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  33. package/dist/collection/components/ic-text-field/ic-text-field.js +87 -11
  34. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  35. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +20 -0
  36. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  37. package/dist/components/ic-alert2.js +1 -1
  38. package/dist/components/ic-alert2.js.map +1 -1
  39. package/dist/components/ic-button2.js +18 -2
  40. package/dist/components/ic-button2.js.map +1 -1
  41. package/dist/components/ic-footer-link.js +1 -1
  42. package/dist/components/ic-footer-link.js.map +1 -1
  43. package/dist/components/ic-footer.js +1 -1
  44. package/dist/components/ic-footer.js.map +1 -1
  45. package/dist/components/ic-popover-menu.js +9 -3
  46. package/dist/components/ic-popover-menu.js.map +1 -1
  47. package/dist/components/ic-side-navigation.js +9 -1
  48. package/dist/components/ic-side-navigation.js.map +1 -1
  49. package/dist/components/ic-text-field2.js +52 -10
  50. package/dist/components/ic-text-field2.js.map +1 -1
  51. package/dist/core/core.esm.js +1 -1
  52. package/dist/core/core.esm.js.map +1 -1
  53. package/dist/core/{p-5894f6aa.entry.js → p-19c28c65.entry.js} +2 -2
  54. package/dist/core/p-19c28c65.entry.js.map +1 -0
  55. package/dist/core/{p-9b8ab047.entry.js → p-23980b58.entry.js} +2 -2
  56. package/dist/core/p-23980b58.entry.js.map +1 -0
  57. package/dist/core/{p-22208df0.entry.js → p-32a480d5.entry.js} +2 -2
  58. package/dist/core/p-32a480d5.entry.js.map +1 -0
  59. package/dist/core/{p-f9452975.entry.js → p-330e1439.entry.js} +2 -2
  60. package/dist/core/p-330e1439.entry.js.map +1 -0
  61. package/dist/core/{p-5adaf5c3.entry.js → p-5e6ad4a5.entry.js} +2 -2
  62. package/dist/core/{p-5adaf5c3.entry.js.map → p-5e6ad4a5.entry.js.map} +1 -1
  63. package/dist/core/p-9e4c8a09.entry.js +2 -0
  64. package/dist/core/p-9e4c8a09.entry.js.map +1 -0
  65. package/dist/core/p-bb1a0018.entry.js +2 -0
  66. package/dist/core/p-bb1a0018.entry.js.map +1 -0
  67. package/dist/esm/core.js +1 -1
  68. package/dist/esm/ic-alert.entry.js +1 -1
  69. package/dist/esm/ic-alert.entry.js.map +1 -1
  70. package/dist/esm/ic-button_3.entry.js +18 -2
  71. package/dist/esm/ic-button_3.entry.js.map +1 -1
  72. package/dist/esm/ic-footer-link.entry.js +1 -1
  73. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  74. package/dist/esm/ic-footer.entry.js +1 -1
  75. package/dist/esm/ic-footer.entry.js.map +1 -1
  76. package/dist/esm/ic-popover-menu.entry.js +9 -3
  77. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  78. package/dist/esm/ic-side-navigation.entry.js +6 -0
  79. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  80. package/dist/esm/ic-text-field.entry.js +47 -10
  81. package/dist/esm/ic-text-field.entry.js.map +1 -1
  82. package/dist/esm/loader.js +1 -1
  83. package/dist/types/components/ic-button/ic-button.d.ts +1 -0
  84. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +4 -0
  85. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +2 -1
  86. package/dist/types/components/ic-text-field/ic-text-field.d.ts +13 -0
  87. package/dist/types/components.d.ts +18 -2
  88. package/hydrate/index.js +88 -18
  89. package/package.json +2 -2
  90. package/vscode-data.json +10 -2
  91. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js +0 -21
  92. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js.map +0 -1
  93. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js +0 -23
  94. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js.map +0 -1
  95. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js +0 -11
  96. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js.map +0 -1
  97. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js +0 -11
  98. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js.map +0 -1
  99. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js +0 -38
  100. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js.map +0 -1
  101. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js +0 -86
  102. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js.map +0 -1
  103. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js +0 -23
  104. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js.map +0 -1
  105. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js +0 -50
  106. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js.map +0 -1
  107. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js +0 -21
  108. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js.map +0 -1
  109. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js +0 -21
  110. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js.map +0 -1
  111. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js +0 -11
  112. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js.map +0 -1
  113. package/dist/core/p-22208df0.entry.js.map +0 -1
  114. package/dist/core/p-5894f6aa.entry.js.map +0 -1
  115. package/dist/core/p-9b8ab047.entry.js.map +0 -1
  116. package/dist/core/p-a6143c94.entry.js +0 -2
  117. package/dist/core/p-a6143c94.entry.js.map +0 -1
  118. package/dist/core/p-f62982ae.entry.js +0 -2
  119. package/dist/core/p-f62982ae.entry.js.map +0 -1
  120. package/dist/core/p-f9452975.entry.js.map +0 -1
  121. package/dist/types/components/ic-card/test/a11y/ic-card.test.a11y.d.ts +0 -1
  122. package/dist/types/components/ic-chip/test/a11y/ic-chip.test.a11y.d.ts +0 -1
  123. package/dist/types/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.d.ts +0 -1
  124. package/dist/types/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.d.ts +0 -1
  125. package/dist/types/components/ic-footer/test/a11y/ic-footer.test.a11y.d.ts +0 -1
  126. package/dist/types/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.d.ts +0 -1
  127. package/dist/types/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.d.ts +0 -1
  128. package/dist/types/components/ic-link/test/a11y/ic-link.test.a11y.d.ts +0 -1
@@ -1,86 +0,0 @@
1
- import { newSpecPage } from "@stencil/core/testing";
2
- import { EmptyState } from "../../ic-empty-state";
3
- import { Button } from "../../../ic-button/ic-button";
4
- describe("ic-empty state", () => {
5
- it("should render", async () => {
6
- const page = await newSpecPage({
7
- components: [EmptyState],
8
- html: `<ic-empty-state heading="Empty state title"></ic-empty-state>`,
9
- });
10
- expect(page.root).toMatchSnapshot();
11
- });
12
- it("should render with subheading and body text", async () => {
13
- const page = await newSpecPage({
14
- components: [EmptyState],
15
- html: `<ic-empty-state heading="Empty state title" subheading="Empty state subtitle" body="Body text for empty state."></ic-empty-state>`,
16
- });
17
- expect(page.root).toMatchSnapshot();
18
- });
19
- it("should render with a slotted image", async () => {
20
- const page = await newSpecPage({
21
- components: [EmptyState],
22
- html: `<ic-empty-state heading="Empty state title">
23
- <svg slot="image" xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
24
- <path d="M0 0h24v24H0z" fill="none"/>
25
- <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
26
- <title>close icon</title>
27
- </svg>
28
- </ic-empty-state>`,
29
- });
30
- expect(page.root).toMatchSnapshot();
31
- });
32
- it("should render with actions", async () => {
33
- const page = await newSpecPage({
34
- components: [EmptyState, Button],
35
- html: `<ic-empty-state heading="Empty state title">
36
- <ic-button slot="actions">Action</ic-button>
37
- </ic-empty-state>`,
38
- });
39
- expect(page.root).toMatchSnapshot();
40
- });
41
- it("should render right aligned", async () => {
42
- const page = await newSpecPage({
43
- components: [EmptyState],
44
- html: `<ic-empty-state heading="Empty state title" subheading="Empty state subtitle" body="Body text for empty state." aligned="right"></ic-empty-state>`,
45
- });
46
- expect(page.rootInstance.aligned).toMatch("right");
47
- expect(page.root.classList.contains("right")).toBeTruthy();
48
- });
49
- it("should render centre aligned", async () => {
50
- const page = await newSpecPage({
51
- components: [EmptyState],
52
- html: `<ic-empty-state heading="Empty state title" subheading="Empty state subtitle" body="Body text for empty state." aligned="center"></ic-empty-state>`,
53
- });
54
- expect(page.rootInstance.aligned).toMatch("center");
55
- expect(page.root.classList.contains("center")).toBeTruthy();
56
- });
57
- it("should render with a small image size", async () => {
58
- const page = await newSpecPage({
59
- components: [EmptyState],
60
- html: `<ic-empty-state heading="Empty state title" subheading="Empty state subtitle" body="Body text for empty state." image-size="small">
61
- <svg slot="image" xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
62
- <path d="M0 0h24v24H0z" fill="none"/>
63
- <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
64
- <title>close icon</title>
65
- </svg>
66
- </ic-empty-state>`,
67
- });
68
- expect(page.rootInstance.imageSize).toMatch("small");
69
- expect(page.root.classList.contains("image-small")).toBeTruthy();
70
- });
71
- it("should render with a large image size", async () => {
72
- const page = await newSpecPage({
73
- components: [EmptyState],
74
- html: `<ic-empty-state heading="Empty state title" subheading="Empty state subtitle" body="Body text for empty state." image-size="large">
75
- <svg slot="image" xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
76
- <path d="M0 0h24v24H0z" fill="none"/>
77
- <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
78
- <title>close icon</title>
79
- </svg>
80
- </ic-empty-state>`,
81
- });
82
- expect(page.rootInstance.imageSize).toMatch("large");
83
- expect(page.root.classList.contains("image-large")).toBeTruthy();
84
- });
85
- });
86
- //# sourceMappingURL=ic-empty-state.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-empty-state.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-empty-state/test/basic/ic-empty-state.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { EmptyState } from \"../../ic-empty-state\";\nimport { Button } from \"../../../ic-button/ic-button\";\n\ndescribe(\"ic-empty state\", () => {\n it(\"should render\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\"></ic-empty-state>`,\n });\n\n expect(page.root).toMatchSnapshot();\n });\n\n it(\"should render with subheading and body text\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\" subheading=\"Empty state subtitle\" body=\"Body text for empty state.\"></ic-empty-state>`,\n });\n\n expect(page.root).toMatchSnapshot();\n });\n\n it(\"should render with a slotted image\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\">\n <svg slot=\"image\" xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n <title>close icon</title>\n </svg>\n </ic-empty-state>`,\n });\n\n expect(page.root).toMatchSnapshot();\n });\n\n it(\"should render with actions\", async () => {\n const page = await newSpecPage({\n components: [EmptyState, Button],\n html: `<ic-empty-state heading=\"Empty state title\">\n <ic-button slot=\"actions\">Action</ic-button>\n </ic-empty-state>`,\n });\n\n expect(page.root).toMatchSnapshot();\n });\n\n it(\"should render right aligned\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\" subheading=\"Empty state subtitle\" body=\"Body text for empty state.\" aligned=\"right\"></ic-empty-state>`,\n });\n\n expect(page.rootInstance.aligned).toMatch(\"right\");\n expect(page.root.classList.contains(\"right\")).toBeTruthy();\n });\n\n it(\"should render centre aligned\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\" subheading=\"Empty state subtitle\" body=\"Body text for empty state.\" aligned=\"center\"></ic-empty-state>`,\n });\n\n expect(page.rootInstance.aligned).toMatch(\"center\");\n expect(page.root.classList.contains(\"center\")).toBeTruthy();\n });\n\n it(\"should render with a small image size\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\" subheading=\"Empty state subtitle\" body=\"Body text for empty state.\" image-size=\"small\">\n <svg slot=\"image\" xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n <title>close icon</title>\n </svg>\n </ic-empty-state>`,\n });\n\n expect(page.rootInstance.imageSize).toMatch(\"small\");\n expect(page.root.classList.contains(\"image-small\")).toBeTruthy();\n });\n\n it(\"should render with a large image size\", async () => {\n const page = await newSpecPage({\n components: [EmptyState],\n html: `<ic-empty-state heading=\"Empty state title\" subheading=\"Empty state subtitle\" body=\"Body text for empty state.\" image-size=\"large\">\n <svg slot=\"image\" xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"currentColor\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n <title>close icon</title>\n </svg>\n </ic-empty-state>`,\n });\n\n expect(page.rootInstance.imageSize).toMatch(\"large\");\n expect(page.root.classList.contains(\"image-large\")).toBeTruthy();\n });\n});\n"]}
@@ -1,23 +0,0 @@
1
- import { fixture } from "@open-wc/testing-helpers";
2
- import { axe } from "jest-axe";
3
- import { checkShadowElementRendersCorrectly } from "../../../../utils/testa11y.helpers";
4
- beforeEach(() => {
5
- // IntersectionObserver isn't available in test environment
6
- const mockResizeObserver = jest.fn();
7
- mockResizeObserver.mockReturnValue({
8
- observe: jest.fn().mockReturnValue(null),
9
- unobserve: jest.fn().mockReturnValue(null),
10
- disconnect: jest.fn().mockReturnValue(null),
11
- });
12
- window.ResizeObserver = mockResizeObserver;
13
- const matchMedia = jest.fn().mockReturnValue(true);
14
- window.matchMedia = matchMedia;
15
- });
16
- describe("ic-footer", () => {
17
- it("passes accessibility", async () => {
18
- const el = await fixture(`<ic-footer></ic-footer>`);
19
- checkShadowElementRendersCorrectly(el);
20
- expect(await axe(el)).toHaveNoViolations();
21
- });
22
- });
23
- //# sourceMappingURL=ic-footer.test.a11y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-footer.test.a11y.js","sourceRoot":"","sources":["../../../../../src/components/ic-footer/test/a11y/ic-footer.test.a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAExF,UAAU,CAAC,GAAG,EAAE;IACd,2DAA2D;IAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,eAAe,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,GAAG,kBAAkB,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACpD,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from \"@open-wc/testing-helpers\";\nimport { axe } from \"jest-axe\";\nimport { checkShadowElementRendersCorrectly } from \"../../../../utils/testa11y.helpers\";\n\nbeforeEach(() => {\n // IntersectionObserver isn't available in test environment\n const mockResizeObserver = jest.fn();\n mockResizeObserver.mockReturnValue({\n observe: jest.fn().mockReturnValue(null),\n unobserve: jest.fn().mockReturnValue(null),\n disconnect: jest.fn().mockReturnValue(null),\n });\n window.ResizeObserver = mockResizeObserver;\n const matchMedia = jest.fn().mockReturnValue(true);\n window.matchMedia = matchMedia;\n});\n\ndescribe(\"ic-footer\", () => {\n it(\"passes accessibility\", async () => {\n const el = await fixture(`<ic-footer></ic-footer>`);\n checkShadowElementRendersCorrectly(el);\n expect(await axe(el)).toHaveNoViolations();\n });\n});\n"]}
@@ -1,50 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- const pageWidth = 700;
3
- const pageHeight = 600;
4
- describe("ic-footer", () => {
5
- it("renders", async () => {
6
- const page = await newE2EPage();
7
- await page.setContent(`<ic-footer description="Description">
8
- <ic-footer-link-group slot="link" group-title="Link group 1">
9
- <ic-footer-link href="/">Link 1</ic-footer-link>
10
- <ic-footer-link href="/">Link 2</ic-footer-link>
11
- </ic-footer-link-group>
12
- <ic-footer-link-group slot="link" group-title="Link group 2">
13
- <ic-footer-link href="/">Link 1</ic-footer-link>
14
- <ic-footer-link href="/">Link 2</ic-footer-link>
15
- </ic-footer-link-group>
16
- </ic-footer>`);
17
- const element = await page.find("ic-footer");
18
- expect(element).toHaveClass("hydrated");
19
- });
20
- it("should toggle the link groups when clicked", async () => {
21
- const page = await newE2EPage();
22
- await page.setContent(`<ic-footer description="Description">
23
- <ic-footer-link-group slot="link" group-title="Link group 1">
24
- <ic-footer-link href="/">Link 1</ic-footer-link>
25
- <ic-footer-link href="/">Link 2</ic-footer-link>
26
- </ic-footer-link-group>
27
- <ic-footer-link-group slot="link" group-title="Link group 2">
28
- <ic-footer-link href="/">Link 1</ic-footer-link>
29
- <ic-footer-link href="/">Link 2</ic-footer-link>
30
- </ic-footer-link-group>
31
- </ic-footer>`);
32
- await page.setViewport({
33
- width: pageWidth,
34
- height: pageHeight,
35
- });
36
- await page.waitForChanges();
37
- const element = await page.find("ic-footer");
38
- let dropdownListLinks = await page.find("ic-footer-link-group >>> .footer-link-group-links");
39
- expect(element).not.toBeNull();
40
- expect(dropdownListLinks).toBeNull();
41
- await page.evaluate(() => {
42
- const footerLinkGroup = document.querySelector("ic-footer-link-group");
43
- footerLinkGroup.click();
44
- });
45
- await page.waitForChanges();
46
- dropdownListLinks = await page.find("ic-footer-link-group >>> .footer-link-group-links");
47
- expect(dropdownListLinks).not.toBeNull();
48
- });
49
- });
50
- //# sourceMappingURL=ic-footer.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-footer.e2e.js","sourceRoot":"","sources":["../../../../../src/components/ic-footer/test/basic/ic-footer.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CACnB;;;;;;;;;qBASe,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7C,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CACnB;;;;;;;;;qBASe,CAChB,CAAC;QAEF,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CACrC,mDAAmD,CACpD,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvB,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;YACvE,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CACjC,mDAAmD,CACpD,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newE2EPage } from \"@stencil/core/testing\";\n\nconst pageWidth = 700;\nconst pageHeight = 600;\n\ndescribe(\"ic-footer\", () => {\n it(\"renders\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-footer description=\"Description\">\n <ic-footer-link-group slot=\"link\" group-title=\"Link group 1\">\n <ic-footer-link href=\"/\">Link 1</ic-footer-link>\n <ic-footer-link href=\"/\">Link 2</ic-footer-link>\n </ic-footer-link-group>\n <ic-footer-link-group slot=\"link\" group-title=\"Link group 2\">\n <ic-footer-link href=\"/\">Link 1</ic-footer-link>\n <ic-footer-link href=\"/\">Link 2</ic-footer-link>\n </ic-footer-link-group>\n </ic-footer>`\n );\n\n const element = await page.find(\"ic-footer\");\n\n expect(element).toHaveClass(\"hydrated\");\n });\n\n it(\"should toggle the link groups when clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-footer description=\"Description\">\n <ic-footer-link-group slot=\"link\" group-title=\"Link group 1\">\n <ic-footer-link href=\"/\">Link 1</ic-footer-link>\n <ic-footer-link href=\"/\">Link 2</ic-footer-link>\n </ic-footer-link-group>\n <ic-footer-link-group slot=\"link\" group-title=\"Link group 2\">\n <ic-footer-link href=\"/\">Link 1</ic-footer-link>\n <ic-footer-link href=\"/\">Link 2</ic-footer-link>\n </ic-footer-link-group>\n </ic-footer>`\n );\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n await page.waitForChanges();\n\n const element = await page.find(\"ic-footer\");\n let dropdownListLinks = await page.find(\n \"ic-footer-link-group >>> .footer-link-group-links\"\n );\n\n expect(element).not.toBeNull();\n expect(dropdownListLinks).toBeNull();\n\n await page.evaluate(() => {\n const footerLinkGroup = document.querySelector(\"ic-footer-link-group\");\n footerLinkGroup.click();\n });\n\n await page.waitForChanges();\n\n dropdownListLinks = await page.find(\n \"ic-footer-link-group >>> .footer-link-group-links\"\n );\n\n expect(dropdownListLinks).not.toBeNull();\n });\n});\n"]}
@@ -1,21 +0,0 @@
1
- import { fixture } from "@open-wc/testing-helpers";
2
- import { axe } from "jest-axe";
3
- import { checkShadowElementRendersCorrectly } from "../../../../utils/testa11y.helpers";
4
- beforeEach(() => {
5
- // IntersectionObserver isn't available in test environment
6
- const mockResizeObserver = jest.fn();
7
- mockResizeObserver.mockReturnValue({
8
- observe: jest.fn().mockReturnValue(null),
9
- unobserve: jest.fn().mockReturnValue(null),
10
- disconnect: jest.fn().mockReturnValue(null),
11
- });
12
- window.ResizeObserver = mockResizeObserver;
13
- });
14
- describe("ic-footer-link", () => {
15
- it("passes accessibility", async () => {
16
- const el = await fixture(`<ic-footer-link></ic-footer-link>`);
17
- checkShadowElementRendersCorrectly(el);
18
- expect(await axe(el)).toHaveNoViolations();
19
- });
20
- });
21
- //# sourceMappingURL=ic-footer-link.test.a11y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-footer-link.test.a11y.js","sourceRoot":"","sources":["../../../../../src/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAExF,UAAU,CAAC,GAAG,EAAE;IACd,2DAA2D;IAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,eAAe,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,GAAG,kBAAkB,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC9D,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from \"@open-wc/testing-helpers\";\nimport { axe } from \"jest-axe\";\nimport { checkShadowElementRendersCorrectly } from \"../../../../utils/testa11y.helpers\";\n\nbeforeEach(() => {\n // IntersectionObserver isn't available in test environment\n const mockResizeObserver = jest.fn();\n mockResizeObserver.mockReturnValue({\n observe: jest.fn().mockReturnValue(null),\n unobserve: jest.fn().mockReturnValue(null),\n disconnect: jest.fn().mockReturnValue(null),\n });\n window.ResizeObserver = mockResizeObserver;\n});\n\ndescribe(\"ic-footer-link\", () => {\n it(\"passes accessibility\", async () => {\n const el = await fixture(`<ic-footer-link></ic-footer-link>`);\n checkShadowElementRendersCorrectly(el);\n expect(await axe(el)).toHaveNoViolations();\n });\n});\n"]}
@@ -1,21 +0,0 @@
1
- import { fixture } from "@open-wc/testing-helpers";
2
- import { axe } from "jest-axe";
3
- import { checkShadowElementRendersCorrectly } from "../../../../utils/testa11y.helpers";
4
- beforeEach(() => {
5
- // IntersectionObserver isn't available in test environment
6
- const mockResizeObserver = jest.fn();
7
- mockResizeObserver.mockReturnValue({
8
- observe: jest.fn().mockReturnValue(null),
9
- unobserve: jest.fn().mockReturnValue(null),
10
- disconnect: jest.fn().mockReturnValue(null),
11
- });
12
- window.ResizeObserver = mockResizeObserver;
13
- });
14
- describe("ic-footer-link-group", () => {
15
- it("passes accessibility", async () => {
16
- const el = await fixture(`<ic-footer-link-group group-title="A11y footer links"><ic-footer-link></ic-footer-link></ic-footer-link-group>`);
17
- checkShadowElementRendersCorrectly(el);
18
- expect(await axe(el)).toHaveNoViolations();
19
- });
20
- });
21
- //# sourceMappingURL=ic-footer-link-group.test.a11y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-footer-link-group.test.a11y.js","sourceRoot":"","sources":["../../../../../src/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAExF,UAAU,CAAC,GAAG,EAAE;IACd,2DAA2D;IAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,eAAe,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,GAAG,kBAAkB,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,gHAAgH,CACjH,CAAC;QACF,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from \"@open-wc/testing-helpers\";\nimport { axe } from \"jest-axe\";\nimport { checkShadowElementRendersCorrectly } from \"../../../../utils/testa11y.helpers\";\n\nbeforeEach(() => {\n // IntersectionObserver isn't available in test environment\n const mockResizeObserver = jest.fn();\n mockResizeObserver.mockReturnValue({\n observe: jest.fn().mockReturnValue(null),\n unobserve: jest.fn().mockReturnValue(null),\n disconnect: jest.fn().mockReturnValue(null),\n });\n window.ResizeObserver = mockResizeObserver;\n});\n\ndescribe(\"ic-footer-link-group\", () => {\n it(\"passes accessibility\", async () => {\n const el = await fixture(\n `<ic-footer-link-group group-title=\"A11y footer links\"><ic-footer-link></ic-footer-link></ic-footer-link-group>`\n );\n checkShadowElementRendersCorrectly(el);\n expect(await axe(el)).toHaveNoViolations();\n });\n});\n"]}
@@ -1,11 +0,0 @@
1
- import { fixture } from "@open-wc/testing-helpers";
2
- import { axe } from "jest-axe";
3
- import { checkShadowElementRendersCorrectly } from "../../../../utils/testa11y.helpers";
4
- describe("ic-link", () => {
5
- it("passes accessibility", async () => {
6
- const el = await fixture(`<ic-link>Link component</ic-link>`);
7
- checkShadowElementRendersCorrectly(el);
8
- expect(await axe(el)).toHaveNoViolations();
9
- });
10
- });
11
- //# sourceMappingURL=ic-link.test.a11y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-link.test.a11y.js","sourceRoot":"","sources":["../../../../../src/components/ic-link/test/a11y/ic-link.test.a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAExF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC9D,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from \"@open-wc/testing-helpers\";\nimport { axe } from \"jest-axe\";\nimport { checkShadowElementRendersCorrectly } from \"../../../../utils/testa11y.helpers\";\n\ndescribe(\"ic-link\", () => {\n it(\"passes accessibility\", async () => {\n const el = await fixture(`<ic-link>Link component</ic-link>`);\n checkShadowElementRendersCorrectly(el);\n expect(await axe(el)).toHaveNoViolations();\n });\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icSideNavigationCss","SideNavigation","this","ANIMATION_DURATION","parseInt","getCssProperty","IC_NAVIGATION_ITEM","resizeObserver","COLLAPSED_ICON_LABELS_END","COLLAPSED_ICON_LABELS_START","menuButton","emitSideNavigationExpanded","objDetails","sideNavExpanded","emit","sideNavMobile","toggleMenu","menuOpen","setMobileMenuAriaAttributes","arrangeSlottedNavigationItem","setToggleMenuFlyoutMenuVisibility","sideNav","el","shadowRoot","querySelector","sideNavInner","bottomWrapper","menuVisibilityVisible","classList","add","setTimeout","remove","setAttribute","setAndRemoveNoWrapAfterMenuExpanded","appTitle","toggleMenuExpanded","menuExpanded","style","setProperty","addEventListener","e","propertyName","displayTooltipWithExpandedLongLabel","collapsedIconLabels","animateCollapsedIconLabels","setExpandedButtonHeight","navItems","querySelectorAll","forEach","navItem","isNamedSlot","isSlotUsed","isUnnamedSlot","children","getAttribute","navItemSlot","iconWrapper","document","createElement","icon","label","textContent","trim","icTypography","height","append","styleSlottedCollapsedIconLabels","styleSlottedIconLabels","marginTop","whiteSpace","overflow","textOverflow","appStatusWrapper","offsetHeight","opacity","visibility","transition","transitionHandler","type","primaryNavigationWrapper","secondaryNavigationWrapper","classToRemove","classToAdd","transitionEndHandler","paddingIconWidth","navItemLink","navItemSVG","navStyles","gap","window","getComputedStyle","iconWidth","width","paddingLeft","Object","values","reduce","prev","curr","timer","sideNavWidth","clientWidth","navigationItems","Array","from","paddingIconDelta","length","navigationItem","icTypographyScrollWidth","_a","scrollWidth","_b","clearTimeout","setMenuExpanded","expanded","setParentPaddingTop","value","parentElement","setParentPaddingLeft","renderAppTitle","isAppNameSubtitleVariant","displayShortAppTitle","deviceSize","DEVICE_SIZES","S","isEmptyString","shortAppTitle","h","variant","undefined","resizeObserverCallback","currSize","isSmallAndDisableTopBar","disableTopBarBehaviour","disableAutoParentStyling","topBarHeight","scrollHeight","inline","L","M","static","runResizeObserver","ResizeObserver","getCurrentDeviceSize","deviceSizeAppTitle","observe","body","box","setCollapsedIconLabels","styleSlottedCollapsedIconLabel","dynamicSlottedIcTypographyComps","contains","renderTopBar","isSDevice","foregroundColor","href","hasTitle","isPropDefined","Component","attrs","class","id","size","appearance","onClick","ariaOwnsId","ref","slot","innerHTML","closeIcon","menuIcon","assign","name","getThemeForegroundColor","componentWillLoad","hasSecondaryNavigation","componentDidLoad","checkResizeObserver","onComponentRequiredPropUndefined","prop","propName","disconnectedCallback","disconnect","removeEventListener","themeChangeHandler","detail","mode","render","status","version","isMdDevice","isLgDevice","displayExpandBtn","topBarProps","Host","IcThemeForegroundEnum","Dark","hasClassificationBanner","chevronIcon"],"sources":["src/components/ic-side-navigation/ic-side-navigation.css?tag=ic-side-navigation&encapsulation=shadow","src/components/ic-side-navigation/ic-side-navigation.tsx"],"sourcesContent":["/**\n * @prop --ic-z-index-side-navigation: z-index of side navigation panel\n */\n\n:host {\n display: block;\n\n --side-navigation-position: fixed;\n --side-navigation-position-left: 0;\n --side-navigation-position-top: var(--ic-space-xxl);\n --side-navigation-height: var(--ic-space-xxl);\n --sm-side-navigation-top-bar-height: 3.5rem;\n --sm-side-navigation-collapsed-labels-width: 6rem;\n --sm-side-navigation-expand-transition-duration: var(\n --ic-transition-duration-slow\n );\n --side-navigation-width: 20rem;\n --sm-side-navigation-bottom-bar-height: 3.5rem;\n\n z-index: var(--ic-z-index-side-navigation);\n}\n\n:host > * {\n box-sizing: border-box;\n}\n\n.side-navigation {\n display: flex;\n flex-direction: column;\n width: var(--side-navigation-width);\n color: var(--ic-theme-text);\n position: var(--side-navigation-position);\n top: var(--side-navigation-position-top);\n left: calc(var(--side-navigation-width) * -1);\n bottom: 0;\n background-color: var(--ic-theme-primary);\n z-index: var(--ic-z-index-side-navigation);\n}\n\n:host(.inline) .side-navigation {\n position: absolute;\n height: 100%;\n}\n\n:host(.anchor-right) .side-navigation {\n right: calc(var(--side-navigation-width) * -1);\n}\n\n.classification-spacing {\n margin-bottom: var(--ic-space-lg);\n}\n\n.navigation-list {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\n.side-navigation-inner {\n background-color: var(--ic-theme-primary);\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n overflow: auto;\n}\n\n:host(.inline) .side-navigation-inner {\n flex: 1;\n}\n\n:host(.xs-menu-open) .side-navigation {\n transition: left var(--ic-easing-transition-slow);\n left: 0;\n}\n\n:host(:has(.xs-menu-open, .xs-menu-close)) ::slotted(ic-navigation-item) {\n --navigation-item-side-nav-right: var(--ic-space-xl);\n}\n\n:host(.xs-menu-close) .side-navigation {\n left: calc(var(--side-navigation-width) * -1);\n transition: left var(--ic-easing-transition-slow);\n}\n\n:host(.xs-menu-close) .side-navigation > * {\n visibility: hidden;\n}\n\n:host(.anchor-right.xs-menu-open) .side-navigation {\n right: 0;\n left: auto;\n}\n\n:host(.anchor-right.xs-menu-close) .side-navigation {\n right: calc(var(--side-navigation-width) * -1);\n left: auto;\n transition: right var(--ic-easing-transition-slow);\n}\n\n.bottom-wrapper {\n border-top: var(--ic-keyline-lighten);\n bottom: 0;\n left: 0;\n z-index: 2;\n box-shadow: -0.188rem -0.188rem 0.5rem rgb(0 0 0 / 20%);\n background-color: var(--ic-theme-primary);\n display: flex;\n flex-direction: column;\n}\n\n:host(.inline) .bottom-wrapper {\n position: sticky;\n}\n\n:host(.dark) .bottom-wrapper {\n border-top: var(--ic-keyline-darken);\n}\n\n/* Mobile Top Bar */\n\n.top-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: var(--side-navigation-height);\n padding: var(--ic-space-xs);\n box-sizing: border-box;\n background-color: var(--ic-theme-primary);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n border-bottom: var(--ic-keyline-darken);\n box-shadow: var(--ic-elevation-overlay);\n z-index: 2;\n overflow: hidden;\n visibility: visible;\n}\n\n:host(.inline) .top-bar {\n position: absolute;\n}\n\n.top-bar.dark a:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n.top-bar.light {\n border-bottom: var(--ic-keyline-lighten);\n}\n\n.app-title-wrapper {\n display: flex;\n margin-left: var(--ic-space-xs);\n border-left: var(--ic-keyline-darken);\n padding-left: var(--ic-space-xxs);\n color: var(--ic-theme-text);\n align-items: center;\n}\n\n.app-title-wrapper ic-typography h1 {\n margin: 0;\n}\n\n@media screen and (min-width: 340px) {\n .app-title-wrapper ic-typography {\n margin-left: var(--ic-space-xs);\n }\n}\n\n:host .title-link {\n display: flex;\n align-items: center;\n transition: box-shadow var(--ic-easing-transition-fast),\n background-color var(--ic-easing-transition-fast);\n text-decoration: none;\n padding: var(--ic-space-xxs);\n color: var(--ic-theme-text);\n}\n\n:host .title-link:visited,\n:host .title-link:active {\n color: var(--ic-theme-text);\n}\n\nslot[name=\"app-title\"]::slotted(a),\nslot[name=\"app-icon\"]::slotted(a) {\n color: var(--ic-theme-text);\n outline: none;\n text-decoration: none;\n display: flex;\n}\n\nslot[name=\"app-title\"]::slotted(ic-typography),\nslot[name=\"app-title\"]::slotted(a) {\n margin-left: var(--ic-space-xs) !important;\n}\n\nslot[name=\"app-title\"]::slotted(a) {\n font: var(--ic-font-subtitle-small);\n}\n\n@media screen and (min-width: 577px) {\n :host(.sm-collapsed) slot[name=\"app-title\"]::slotted(ic-typography),\n :host(.sm-collapsed) slot[name=\"app-title\"]::slotted(a) {\n position: absolute;\n left: -9999px;\n opacity: 0;\n transition: opacity var(--ic-easing-transition-slow);\n }\n\n :host(.sm-expanded) slot[name=\"app-title\"]::slotted(a) {\n font: var(--ic-font-h3) !important;\n font-weight: var(--ic-font-weight-semibold) !important;\n margin-left: var(--ic-space-xs) !important;\n }\n}\n\n:host .title-link:hover {\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-theme-hover);\n}\n\n:host .title-link:active {\n background-color: var(--ic-theme-active);\n}\n\n:host .title-link:focus,\n:host .title-link:focus-within {\n border-radius: var(--ic-border-radius);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n background-color: transparent;\n}\n\n:host .title-link ic-typography {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.app-title-wrapper ::slotted(svg) {\n fill: var(--ic-theme-text);\n}\n\n.app-icon-container {\n display: none;\n}\n\n.button-label {\n display: flex;\n align-items: center;\n}\n\n.mobile-top-bar-menu-icon {\n display: flex;\n}\n\n.menu-button {\n width: 6.5rem;\n}\n\n.app-status-wrapper {\n inset: 0 var(--ic-space-sm) 0 3.5rem;\n width: auto;\n display: flex;\n gap: var(--ic-space-xs);\n padding: var(--ic-space-sm) 0;\n justify-content: flex-end;\n align-items: flex-end;\n pointer-events: none;\n height: fit-content;\n margin: 0 var(--ic-space-xs);\n}\n\n.app-status-wrapper .app-version {\n display: flex;\n overflow-wrap: break-word;\n padding-bottom: var(--ic-space-xxs);\n}\n\n.app-status-wrapper .app-status {\n display: flex;\n border-radius: 1rem;\n background-color: var(--ic-theme-text);\n color: var(--ic-color-primary-text);\n padding: var(--ic-space-xxs) var(--ic-space-lg);\n min-width: 1rem;\n}\n\n.app-status-wrapper .app-status-text {\n overflow-wrap: break-word;\n}\n\n:host(.dark) .app-status-wrapper .app-status {\n color: var(--ic-color-white-text);\n}\n\n.navigation-landmark-title {\n position: absolute;\n width: var(--ic-space-1px);\n height: var(--ic-space-1px);\n padding: 0;\n margin: calc(-1 * var(--ic-space-1px));\n overflow: hidden;\n}\n\n/* Navigation Group */\n\n::slotted(ic-navigation-group) {\n --navigation-group-height: 2.75rem;\n --navigation-group-width: 100%;\n --navigation-group-justify-content: space-between;\n --navigation-group-hover: var(--ic-theme-hover);\n --navigation-group-text-hover: var(--ic-theme-text);\n --navigation-item-child-height: 3.5rem;\n --navigation-item-child-active: var(--ic-action-dark-bg-active);\n --navigation-item-child-color: var(--ic-theme-text);\n --navigation-group-expand-toggle-padding: 0.25rem;\n}\n\n/* Navigation Items */\n\n::slotted(ic-navigation-item),\n::slotted(ic-navigation-group) {\n --navigation-item-justify-content: flex-start;\n --navigation-item-min-height: 56px;\n --navigation-item-height: 100%;\n}\n\n/* Toggle Chevron */\n\n.bottom-side-nav {\n position: relative;\n align-content: flex-end;\n min-height: var(--sm-side-navigation-top-bar-height);\n}\n\n.bottom-side-nav ic-divider {\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.primary-navigation {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n\n /* Hide scrollbar when required but keep functionality */\n scrollbar-width: none;\n}\n\n.primary-navigation::-webkit-scrollbar {\n display: none;\n}\n\n.primary-navigation,\n.secondary-navigation {\n overflow-x: hidden;\n}\n\n.bottom-side-nav .menu-expand-button {\n position: absolute;\n display: none;\n}\n\n.menu-visibility-visible {\n visibility: visible;\n width: 100%;\n}\n\n.app-title-show {\n min-width: 15.5rem;\n}\n\n:host(.side-display) {\n display: flex;\n flex-direction: column;\n height: 100vh;\n position: var(--side-navigation-position);\n left: 0;\n top: 0;\n bottom: 0;\n}\n\n:host(.side-display) .app-icon-container {\n height: 40px;\n display: flex;\n align-items: center;\n}\n\n:host(.side-display) .top-bar {\n --side-navigation-height: var(--sm-side-navigation-top-bar-height);\n\n position: relative;\n padding: 0;\n box-shadow: -0.188rem 0.188rem 0.5rem rgb(0 0 0 / 20%);\n}\n\n:host(.inline.side-display) .top-bar {\n position: sticky;\n}\n\n:host(.anchor-right.side-display) .top-bar {\n box-shadow: 0.188rem 0.188rem 0.5rem rgb(0 0 0 / 20%);\n}\n\n:host(.anchor-right.side-display) .bottom-wrapper {\n box-shadow: 0.188rem -0.188rem 0.5rem rgb(0 0 0 / 20%);\n}\n\n:host(.side-display) .side-navigation,\n:host(.side-display) .top-bar {\n width: var(--sm-side-navigation-top-bar-height);\n}\n\n:host(.sm-collapsed.side-display) {\n width: var(--sm-side-navigation-top-bar-height);\n transition: width var(--ic-easing-transition-slow);\n}\n\n:host(.sm-collapsed.collapsed-labels.side-display) {\n width: var(--sm-side-navigation-collapsed-labels-width);\n}\n\n:host(.sm-expanded.side-display) {\n width: var(--side-navigation-width);\n transition: width var(--ic-easing-transition-slow);\n box-shadow: var(--ic-elevation-overlay);\n}\n\n:host(.side-display) .side-navigation {\n --side-navigation-position-top: 0;\n\n flex: 1;\n position: relative;\n top: auto;\n left: auto;\n bottom: auto;\n}\n\n:host(.inline.side-display) .side-navigation {\n position: relative;\n}\n\n:host(.anchor-right.side-display) .side-navigation {\n left: auto;\n right: 0;\n}\n\n:host(.side-display) .app-title-wrapper {\n margin-left: 0;\n border-left: none;\n padding: var(--ic-space-xs) var(--ic-space-sm);\n}\n\n:host(.side-display) .app-title-wrapper ::slotted(svg) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n}\n\n:host(.side-display) .app-title-wrapper ic-typography {\n font-weight: var(--ic-font-weight-semibold);\n}\n\n:host(.sm-collapsed.side-display) .app-title-wrapper ic-typography {\n position: absolute;\n left: -9999px;\n opacity: 0;\n transition: opacity var(--ic-easing-transition-slow);\n}\n\n:host(.sm-expanded.side-display) ic-typography {\n position: relative;\n left: 0;\n}\n\n:host(.sm-expanded.side-display) :is(.side-navigation, .top-bar) {\n width: var(--side-navigation-width);\n transition: width var(--ic-easing-transition-slow);\n}\n\n:host(.sm-collapsed.side-display) :is(.side-navigation, .top-bar) {\n width: var(--sm-side-navigation-top-bar-height);\n transition: width var(--ic-easing-transition-slow);\n}\n\n:host(.anchor-right.sm-expanded.side-display) :is(.side-navigation, .top-bar) {\n left: auto;\n right: 0;\n}\n\n:host(.side-display) .app-status-wrapper,\n:host(.sm-collapsed.side-display) .app-status-wrapper {\n display: none;\n margin-left: 0;\n}\n\n:host(.sm-expanded.side-display) .app-status-wrapper {\n display: flex;\n max-width: 16rem;\n margin-right: calc(var(--ic-space-xxxs) + var(--ic-space-xs));\n}\n\n:host(.side-display) .bottom-side-nav {\n justify-items: flex-end;\n align-items: flex-end;\n justify-content: flex-end;\n display: flex;\n outline: none;\n}\n\n:host(.side-display) .bottom-side-nav .menu-expand-button {\n padding-left: var(--ic-space-md);\n height: var(--sm-side-navigation-top-bar-height);\n width: 100%;\n color: var(--ic-theme-text);\n background-color: transparent;\n outline: var(--ic-hc-focus-outline);\n border: none;\n cursor: pointer;\n display: flex;\n transition: var(--ic-easing-transition-fast);\n}\n\n:host(.sm-expanded.side-display) .bottom-side-nav .menu-expand-button {\n height: 100%;\n}\n\n:host(.side-display) .bottom-side-nav .menu-expand-button svg {\n justify-items: flex-start;\n align-self: center;\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.side-display) .bottom-side-nav .menu-expand-button:hover {\n background-color: var(--ic-theme-hover);\n}\n\n:host(.side-display) .bottom-side-nav .menu-expand-button:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n background-color: transparent;\n}\n\n:host(.sm-collapsed.side-display) .bottom-side-nav .menu-expand-button svg {\n transform: scaleX(1);\n transition: transform var(--ic-easing-transition-slow);\n}\n\n:host(.sm-expanded.side-display) .bottom-side-nav .menu-expand-button svg {\n transform: scaleX(-1);\n transition: transform var(--ic-easing-transition-slow);\n align-self: flex-end;\n margin-bottom: 0.875rem;\n}\n\n:host(.anchor-right.sm-collapsed.side-display)\n .bottom-side-nav\n .menu-expand-button\n svg {\n transform: scaleX(-1);\n}\n\n:host(.anchor-right.sm-expanded.side-display)\n .bottom-side-nav\n .menu-expand-button\n svg {\n transform: scaleX(1);\n}\n\n:host(.sm-collapsed.side-display) ::slotted(ic-navigation-item) {\n --navigation-item-label-opacity: 1;\n}\n\n:host(.sm-collapsed.side-display) ::slotted(ic-navigation-item),\n:host(.sm-collapsed.side-display) ::slotted(ic-navigation-group) {\n --navigation-item-label-opacity: 0;\n --navigation-item-min-height: 56px;\n --navigation-item-height: 56px;\n}\n\n:host(.sm-expanded.side-display) ::slotted(ic-navigation-item),\n:host(.sm-expanded.side-display) ::slotted(ic-navigation-group) {\n --navigation-item-label-opacity: 1;\n --navigation-item-height: 100%;\n --navigation-item-min-height: 56px;\n --navigation-item-width: 320px;\n --navigation-item-side-nav-right: var(--ic-space-xl);\n}\n\n:host(.sm-collapsed.side-display) ::slotted(ic-navigation-group) {\n --navigation-group-title-position: absolute;\n --navigation-group-title-position-left: -9999px;\n --navigation-group-title-opacity: none;\n}\n\n:host(.sm-expanded.side-display) ::slotted(ic-navigation-group) {\n --navigation-group-title-position: relative;\n --navigation-group-title-position-left: 0;\n --navigation-group-expand-toggle-padding: 0.25rem;\n --navigation-group-title-opacity: flex;\n}\n\n:host(.sm-collapsed.collapsed-labels.side-display) .side-navigation,\n:host(.sm-collapsed.collapsed-labels.side-display) .top-bar {\n width: var(--sm-side-navigation-collapsed-labels-width);\n}\n\n:host(.sm-collapsed.collapsed-labels.side-display) .menu-expand-button {\n padding: 0;\n}\n\n:host(.sm-collapsed.collapsed-labels.side-display) .app-title-wrapper {\n width: 100%;\n justify-content: center;\n}\n\n:host(.sm-collapsed.collapsed-labels.side-display)\n ::slotted(ic-navigation-group) {\n --navigation-group-justify-content: center;\n --navigation-item-label-opacity: 1;\n --navigation-group-item-min-width: 100%;\n --navigation-group-expand-toggle-padding: 1rem;\n}\n\n:host(.collapsed-labels.side-display) .bottom-side-nav .menu-expand-button {\n justify-content: center;\n}\n\n:host(.side-display) .collapsed-icon-labels-start {\n visibility: hidden;\n opacity: 0;\n}\n\n:host(.side-display) .collapsed-icon-labels-end {\n visibility: visible;\n opacity: 1;\n transition: visibility 0s, opacity var(--ic-easing-transition-slow);\n}\n\n/* Media Queries */\n\n@media screen and (min-width: 340px) {\n .app-icon-container {\n display: flex;\n }\n}\n\n@media screen and (min-width: 993px) {\n :host(.side-display) {\n position: sticky;\n left: auto;\n top: 0;\n bottom: 0;\n }\n\n :host(.sm-expanded.side-display) {\n box-shadow: none;\n }\n}\n\n@media (forced-colors: active) {\n .side-navigation,\n .top-bar {\n border-right: var(--ic-hc-border);\n }\n\n slot[name=\"app-icon\"]::slotted(svg) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Listen,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\n\nimport menuIcon from \"../../assets/hamburger-menu-icon.svg\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\nimport {\n getCurrentDeviceSize,\n DEVICE_SIZES,\n checkResizeObserver,\n isSlotUsed,\n getThemeForegroundColor,\n getCssProperty,\n hasClassificationBanner,\n onComponentRequiredPropUndefined,\n isEmptyString,\n isPropDefined,\n} from \"../../utils/helpers\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcTopBar, IcExpandedDetail } from \"./ic-side-navigation.types\";\n\n/**\n * @slot app-icon - Content will be rendered adjacent to the app title at the very top of the side navigation.\n * @slot app-title - Handle routing by nesting a route in the app title.\n * @slot primary-navigation - Content will be rendered at the top of the side navigation.\n * @slot secondary-navigation - Content will be rendered at the bottom of the side navigation.\n */\n\n@Component({\n tag: \"ic-side-navigation\",\n styleUrl: \"ic-side-navigation.css\",\n shadow: true,\n})\nexport class SideNavigation {\n private ANIMATION_DURATION =\n parseInt(getCssProperty(\"--ic-transition-duration-slow\")) || 0;\n private IC_NAVIGATION_ITEM: string = \"ic-navigation-item\";\n private resizeObserver: ResizeObserver = null;\n private COLLAPSED_ICON_LABELS_END = \"collapsed-icon-labels-end\";\n private COLLAPSED_ICON_LABELS_START = \"collapsed-icon-labels-start\";\n private menuButton: HTMLIcButtonElement = null;\n\n @Element() el: HTMLIcSideNavigationElement;\n\n @State() deviceSize: number = getCurrentDeviceSize();\n @State() deviceSizeAppTitle = DEVICE_SIZES.S;\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n @State() hasSecondaryNavigation: boolean = false;\n @State() menuExpanded: boolean = false;\n @State() menuOpen: boolean = false;\n\n /**\n * The app title to be displayed. This is required, unless a slotted app title link is used.\n */\n @Prop() appTitle: string;\n\n /**\n * If `true`, the icon and label will appear when side navigation is collapsed.\n */\n @Prop() collapsedIconLabels: boolean = false;\n\n /**\n * If `true`, automatic parent wrapper styling will be disabled.\n */\n @Prop() disableAutoParentStyling: boolean = false;\n\n /**\n * If `true`, the side navigation will not display as a top bar on small devices.\n */\n @Prop() disableTopBarBehaviour: boolean = false;\n\n /**\n * If `true`, the side navigation will load in an expanded state.\n */\n @Prop() expanded: boolean = false;\n\n /**\n * The URL that the app title link points to.\n */\n @Prop() href: string = \"/\";\n\n /**\n * @internal If `true`, side navigation will be contained by its parent element.\n */\n @Prop() inline: boolean = false;\n\n /**\n * The short title of the app to be displayed at small screen sizes in place of the app title.\n */\n @Prop() shortAppTitle: string = \"\";\n\n /**\n * If `true`, the menu expand button will be removed (PLEASE NOTE: This takes effect on screen sizes 992px and above).\n */\n @Prop() static: boolean = false;\n\n /**\n * The status of the app to be displayed.\n */\n @Prop() status: string;\n\n /**\n * The version of the app to be displayed.\n */\n @Prop() version: string;\n\n /**\n * Emitted when the side navigation is collapsed and expanded.\n */\n @Event() sideNavExpanded: EventEmitter<IcExpandedDetail>;\n\n componentWillLoad(): void {\n this.setMenuExpanded(this.expanded);\n\n if (this.collapsedIconLabels) {\n this.setCollapsedIconLabels();\n }\n\n this.hasSecondaryNavigation = isSlotUsed(this.el, \"secondary-navigation\");\n }\n\n componentDidLoad(): void {\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile:\n this.deviceSize === DEVICE_SIZES.S && !this.disableTopBarBehaviour,\n });\n\n checkResizeObserver(this.runResizeObserver);\n this.styleSlottedCollapsedIconLabel();\n this.arrangeSlottedNavigationItem(this.menuExpanded);\n this.displayTooltipWithExpandedLongLabel(this.menuExpanded);\n\n this.setExpandedButtonHeight();\n\n !isSlotUsed(this.el, \"app-title\") &&\n onComponentRequiredPropUndefined(\n [{ prop: this.appTitle, propName: \"app-title\" }],\n \"Side Navigation\"\n );\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n\n this.el.removeEventListener(\"transitionend\", this.transitionEndHandler);\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler({ detail }: CustomEvent): void {\n this.foregroundColor = (detail as IcTheme).mode;\n }\n\n private emitSideNavigationExpanded = (objDetails: {\n sideNavExpanded: boolean;\n sideNavMobile?: boolean;\n }): void => {\n this.sideNavExpanded.emit({\n sideNavExpanded: objDetails.sideNavExpanded,\n sideNavMobile: objDetails.sideNavMobile,\n });\n };\n\n private toggleMenu = (): void => {\n this.menuOpen = !this.menuOpen;\n this.setMobileMenuAriaAttributes(this.menuOpen);\n\n this.arrangeSlottedNavigationItem(this.menuOpen);\n\n this.setToggleMenuFlyoutMenuVisibility(this.menuOpen);\n\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuOpen,\n sideNavMobile: true,\n });\n };\n\n private setToggleMenuFlyoutMenuVisibility = (menuOpen: boolean) => {\n const sideNav = this.el.shadowRoot.querySelector(\n \"#side-navigation\"\n ) as HTMLDivElement;\n const sideNavInner = sideNav.querySelector(\n \".side-navigation-inner\"\n ) as HTMLElement;\n const bottomWrapper = sideNav.querySelector(\n \".bottom-wrapper\"\n ) as HTMLElement;\n\n const menuVisibilityVisible = \"menu-visibility-visible\";\n\n if (menuOpen) {\n bottomWrapper.classList.add(menuVisibilityVisible);\n sideNavInner.classList.add(menuVisibilityVisible);\n } else {\n setTimeout(() => {\n sideNavInner.classList.remove(menuVisibilityVisible);\n bottomWrapper.classList.remove(menuVisibilityVisible);\n }, this.ANIMATION_DURATION);\n }\n };\n\n private setMobileMenuAriaAttributes = (menuOpen: boolean) => {\n if (this.menuButton !== null) {\n this.menuButton.setAttribute(\"aria-expanded\", `${menuOpen}`);\n this.menuButton.setAttribute(\n \"aria-label\",\n `${menuOpen ? \"Close\" : \"Open\"} navigation menu`\n );\n }\n };\n\n private setAndRemoveNoWrapAfterMenuExpanded = () => {\n const appTitle =\n this.el.shadowRoot.querySelector(\".title-link ic-typography\") ||\n this.el.querySelector(\"[slot='app-title']\");\n\n appTitle.classList.add(\"ic-typography-no-wrap\");\n\n setTimeout(() => {\n appTitle.classList.remove(\"ic-typography-no-wrap\");\n }, this.ANIMATION_DURATION);\n };\n\n private toggleMenuExpanded = (): void => {\n this.menuExpanded = !this.menuExpanded;\n\n if (this.menuExpanded) {\n this.setAndRemoveNoWrapAfterMenuExpanded();\n this.el.shadowRoot\n .querySelector(\".app-title-inner-wrapper\")\n .classList.add(\"app-title-show\");\n } else {\n this.el.style.setProperty(\"--navigation-item-width\", \"320px\");\n this.el.shadowRoot\n .querySelector(\".app-title-inner-wrapper\")\n .classList.remove(\"app-title-show\");\n\n this.el.addEventListener(\"transitionend\", (e) => {\n if (e.propertyName === \"width\") {\n this.el.style.setProperty(\"--navigation-item-width\", null);\n }\n });\n }\n\n this.arrangeSlottedNavigationItem(this.menuExpanded);\n\n this.displayTooltipWithExpandedLongLabel(this.menuExpanded);\n\n if (this.collapsedIconLabels) {\n this.animateCollapsedIconLabels();\n }\n\n this.setExpandedButtonHeight();\n this.emitSideNavigationExpanded({ sideNavExpanded: this.menuExpanded });\n };\n\n /**\n * In order to style nested slotted elements (e.g. using React Router components), this method\n * rearranges the a tag and labels and adds inline styling expand/collaped animations as external CSS classes are not\n * do not take affect.\n * @param menuExpanded boolean - true or false depending on side navigation state\n */\n private arrangeSlottedNavigationItem = (menuExpanded?: boolean) => {\n const navItems = this.el.querySelectorAll(\"ic-navigation-item\");\n navItems.forEach((navItem) => {\n const isNamedSlot = isSlotUsed(navItem, \"navigation-item\");\n const isUnnamedSlot =\n navItem.children[0] && !navItem.children[0].getAttribute(\"slot\");\n if (isNamedSlot || isUnnamedSlot) {\n let navItemSlot;\n if (isNamedSlot) {\n navItemSlot = navItem.querySelector(\"[slot='navigation-item']\");\n } else {\n navItemSlot = navItem.children[0];\n }\n const iconWrapper = document.createElement(\"div\");\n const icon = navItemSlot.querySelector(\"svg\");\n const label = navItem.textContent.trim();\n const icTypography = document.createElement(\"ic-typography\");\n icTypography.classList.add(\n \"ic-typography-label\",\n \"hydrated\",\n \"navigation-item-side-nav-slotted-text\"\n );\n\n iconWrapper.style.height = \"var(--ic-space-lg)\";\n iconWrapper.append(icon);\n\n navItemSlot.textContent = \"\";\n\n icTypography.textContent = label;\n\n navItemSlot.append(iconWrapper);\n navItemSlot.append(icTypography);\n\n if (this.collapsedIconLabels) {\n this.styleSlottedCollapsedIconLabels(menuExpanded, icTypography);\n } else {\n this.styleSlottedIconLabels(menuExpanded, icTypography);\n }\n }\n });\n };\n\n private styleSlottedCollapsedIconLabels = (\n menuExpanded: boolean,\n icTypography: HTMLIcTypographyElement\n ) => {\n if (menuExpanded) {\n icTypography.style.marginTop = \"0\";\n icTypography.style.whiteSpace = \"nowrap\";\n icTypography.style.overflow = \"hidden\";\n icTypography.style.textOverflow = \"ellipsis\";\n } else {\n icTypography.style.marginTop = \"10px\";\n icTypography.style.whiteSpace = \"nowrap\";\n icTypography.style.overflow = \"hidden\";\n icTypography.style.textOverflow = \"ellipsis\";\n }\n };\n\n private setExpandedButtonHeight = () => {\n const appStatusWrapper = this.el.shadowRoot.querySelector(\n \"#side-navigation > .bottom-wrapper > .bottom-side-nav > .app-status-wrapper\"\n ) as HTMLDivElement;\n\n if (appStatusWrapper.offsetHeight !== 0) {\n this.el.style.setProperty(\n \"--sm-side-navigation-bottom-bar-height\",\n `${appStatusWrapper.offsetHeight}px`\n );\n }\n };\n\n private styleSlottedIconLabels = (\n menuExpanded: boolean,\n icTypography: HTMLSpanElement\n ) => {\n if (menuExpanded) {\n icTypography.style.opacity = \"1\";\n icTypography.style.visibility = \"visible\";\n icTypography.style.transition =\n \"visibility 0s, opacity var(--ic-easing-transition-slow)\";\n } else {\n icTypography.style.opacity = \"0\";\n icTypography.style.visibility = \"hidden\";\n icTypography.style.transition =\n \"visibility 0s, opacity var(--ic-easing-transition-slow)\";\n }\n };\n\n private transitionHandler = (type: string) => {\n const primaryNavigationWrapper = this.el.shadowRoot.querySelector(\n \".primary-navigation\"\n );\n\n const secondaryNavigationWrapper = this.el.shadowRoot.querySelector(\n \".bottom-wrapper > .secondary-navigation\"\n );\n\n const classToRemove =\n type === \"start\"\n ? this.COLLAPSED_ICON_LABELS_END\n : this.COLLAPSED_ICON_LABELS_START;\n\n const classToAdd =\n type === \"start\"\n ? this.COLLAPSED_ICON_LABELS_START\n : this.COLLAPSED_ICON_LABELS_END;\n\n if (primaryNavigationWrapper) {\n primaryNavigationWrapper.classList.remove(classToRemove);\n primaryNavigationWrapper.classList.add(classToAdd);\n }\n\n if (secondaryNavigationWrapper) {\n secondaryNavigationWrapper.classList.remove(classToRemove);\n secondaryNavigationWrapper.classList.add(classToAdd);\n }\n };\n\n private transitionEndHandler = () => {\n this.transitionHandler(\"end\");\n };\n\n private animateCollapsedIconLabels = () => {\n this.transitionHandler(\"start\");\n this.transitionEndHandler();\n\n this.el.addEventListener(\"transitionend\", this.transitionEndHandler);\n };\n\n private paddingIconWidth = (\n navItems: HTMLIcNavigationItemElement[]\n ): number => {\n const navItemLink =\n (navItems[0].shadowRoot &&\n (navItems[0].shadowRoot.querySelector(\"ic-tooltip a\") ||\n navItems[0].shadowRoot.querySelector(\"ic-tooltip div\"))) ||\n navItems[0].querySelector(\"a\") ||\n navItems[0].querySelector(\"div\");\n const navItemSVG = navItems[0].querySelector(\"svg\");\n\n const navStyles = {\n gap: window.getComputedStyle(navItemLink).gap,\n iconWidth: window.getComputedStyle(navItemSVG).width,\n paddingLeft: window.getComputedStyle(navItemLink).paddingLeft,\n };\n\n return Object.values(navStyles).reduce((prev, curr) => {\n return (prev += parseInt(curr));\n }, 0);\n };\n\n private displayTooltipWithExpandedLongLabel = (menuExpanded: boolean) => {\n let timer;\n\n if (menuExpanded) {\n timer = setTimeout(() => {\n const sideNavWidth = this.el.clientWidth;\n\n const navigationItems: HTMLIcNavigationItemElement[] = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n\n const paddingIconDelta = navigationItems.length\n ? this.paddingIconWidth(navigationItems)\n : 0;\n\n navigationItems.forEach(\n (navigationItem: HTMLIcNavigationItemElement) => {\n const icTypographyScrollWidth =\n (\n navigationItem.shadowRoot &&\n navigationItem.shadowRoot.querySelector(\n \"ic-tooltip .link ic-typography.ic-typography-label\"\n )\n )?.scrollWidth ||\n navigationItem.querySelector(\"ic-typography.ic-typography-label\")\n ?.scrollWidth;\n\n if (icTypographyScrollWidth > sideNavWidth - paddingIconDelta) {\n navigationItem.setAttribute(\"display-navigation-tooltip\", \"true\");\n }\n }\n );\n }, this.ANIMATION_DURATION);\n } else {\n clearTimeout(timer);\n\n const navigationItems: HTMLIcNavigationItemElement[] = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n navigationItems.forEach((navigationItem: HTMLIcNavigationItemElement) => {\n navigationItem.setAttribute(\"display-navigation-tooltip\", \"false\");\n });\n }\n };\n\n private setMenuExpanded = (expanded: boolean): void => {\n this.menuExpanded = expanded;\n };\n\n /**\n * As the mobile top bar is fixed, a padding top is required\n * to push main content down the height of the mobile top bar\n * @param value - padding-top css value\n */\n private setParentPaddingTop = (value: string) => {\n this.el.parentElement.style.setProperty(\"padding-top\", value);\n };\n\n private setParentPaddingLeft = (value: string) => {\n this.el.parentElement.style.setProperty(\"padding-left\", value);\n };\n\n private renderAppTitle = (isAppNameSubtitleVariant: boolean) => {\n const displayShortAppTitle =\n this.deviceSize <= DEVICE_SIZES.S && !isEmptyString(this.shortAppTitle);\n return (\n <ic-typography\n variant={\n displayShortAppTitle || isAppNameSubtitleVariant\n ? \"subtitle-small\"\n : \"h3\"\n }\n aria-label={\n displayShortAppTitle\n ? `${this.appTitle} (${this.shortAppTitle})`\n : undefined\n }\n >\n <h1>{displayShortAppTitle ? this.shortAppTitle : this.appTitle}</h1>\n </ic-typography>\n );\n };\n\n private resizeObserverCallback = (currSize: number) => {\n this.deviceSize = currSize;\n\n const isSmallAndDisableTopBar =\n currSize === DEVICE_SIZES.S && !this.disableTopBarBehaviour;\n\n if (!this.disableAutoParentStyling) {\n const topBarHeight =\n this.el.shadowRoot.querySelector(\".top-bar\")?.scrollHeight;\n this.setParentPaddingTop(\n isSmallAndDisableTopBar ? `${topBarHeight}px` : \"0\"\n );\n if (isSmallAndDisableTopBar) this.setParentPaddingLeft(\"0\");\n if (isSmallAndDisableTopBar && this.inline) {\n this.el.parentElement.style.setProperty(\n \"height\",\n `calc(100% - ${topBarHeight}px)`\n );\n } else if (!isSmallAndDisableTopBar) {\n this.el.parentElement.style.setProperty(\"height\", \"100%\");\n }\n }\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile: isSmallAndDisableTopBar,\n });\n\n if (!this.disableAutoParentStyling) {\n const paddingLeft = `calc(var(--ic-space-xxl) ${\n this.collapsedIconLabels ? \"* 2\" : \"+ var(--ic-space-xs)\"\n })`;\n\n if (currSize > DEVICE_SIZES.L) {\n this.setParentPaddingTop(\"0\");\n this.setParentPaddingLeft(\"0\");\n } else if (\n (currSize > DEVICE_SIZES.S || this.disableTopBarBehaviour) &&\n currSize <= DEVICE_SIZES.M &&\n this.static\n ) {\n this.setParentPaddingLeft(paddingLeft);\n } else if (\n (currSize > DEVICE_SIZES.S || this.disableTopBarBehaviour) &&\n currSize <= DEVICE_SIZES.L\n ) {\n this.setParentPaddingLeft(\n this.static && this.menuExpanded\n ? \"calc(var(--ic-space-xl) * 10)\"\n : paddingLeft\n );\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.deviceSizeAppTitle = currSize;\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(document.body, { box: \"content-box\" });\n };\n\n private setCollapsedIconLabels = () => {\n const navigationItems: HTMLIcNavigationItemElement[] = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n navigationItems.forEach((navigationItem: HTMLIcNavigationItemElement) => {\n navigationItem.setAttribute(\"collapsed-icon-label\", \"true\");\n });\n };\n\n private styleSlottedCollapsedIconLabel = () => {\n const dynamicSlottedIcTypographyComps: HTMLIcTypographyElement[] =\n Array.from(\n this.el.querySelectorAll(\".navigation-item-side-nav-slotted-text\")\n );\n\n dynamicSlottedIcTypographyComps.forEach((icTypography) => {\n if (\n icTypography?.parentElement?.parentElement?.classList.contains(\n \"navigation-item-side-nav-collapsed-with-label\"\n )\n ) {\n icTypography.style.whiteSpace = \"nowrap\";\n icTypography.style.overflow = \"hidden\";\n icTypography.style.textOverflow = \"ellipsis\";\n icTypography.style.marginTop = \"10px\";\n }\n });\n };\n\n private renderTopBar = ({\n isSDevice,\n foregroundColor,\n menuOpen,\n href,\n isAppNameSubtitleVariant,\n }: IcTopBar) => {\n const hasTitle = this.appTitle !== \"\" && isPropDefined(this.appTitle);\n\n const Component = isSlotUsed(this.el, \"app-title\") ? \"div\" : \"a\";\n\n const attrs = Component == \"a\" && {\n href: href,\n };\n\n return (\n <div\n class={{\n \"top-bar\": true,\n [this.foregroundColor]: true,\n }}\n >\n {isSDevice && (\n <nav\n aria-labelledby=\"menu-navigation-toggle-button-landmark\"\n aria-hidden=\"false\"\n >\n <ic-button\n aria-label=\"Open navigation menu\"\n class=\"menu-button\"\n id=\"menu-button\"\n variant=\"secondary\"\n size=\"small\"\n full-width=\"true\"\n appearance={foregroundColor}\n onClick={this.toggleMenu}\n ariaOwnsId=\"side-navigation\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n ref={(el) => (this.menuButton = el)}\n >\n <span\n class=\"mobile-top-bar-menu-icon\"\n slot=\"icon\"\n innerHTML={menuOpen ? closeIcon : menuIcon}\n ></span>\n {menuOpen ? \"Close\" : \"Menu\"}\n </ic-button>\n <span\n id=\"menu-navigation-toggle-button-landmark\"\n class=\"navigation-landmark-title\"\n aria-hidden=\"true\"\n >\n Navigation menu toggle button\n </span>\n </nav>\n )}\n <div class=\"app-title-wrapper\">\n {(hasTitle || isSlotUsed(this.el, \"app-title\")) && (\n <Component {...attrs} class=\"title-link\">\n <div class=\"app-icon-container\" aria-hidden=\"true\">\n <slot name=\"app-icon\"></slot>\n </div>\n <div class=\"app-title-inner-wrapper\">\n {isSlotUsed(this.el, \"app-title\") ? (\n <slot name=\"app-title\"></slot>\n ) : (\n this.renderAppTitle(isAppNameSubtitleVariant)\n )}\n </div>\n </Component>\n )}\n </div>\n </div>\n );\n };\n\n render() {\n const {\n appTitle,\n menuOpen,\n foregroundColor,\n menuExpanded,\n href,\n status,\n version,\n collapsedIconLabels,\n inline,\n } = this;\n\n const isSDevice =\n !this.disableTopBarBehaviour && this.deviceSize === DEVICE_SIZES.S;\n const isMdDevice = this.deviceSize === DEVICE_SIZES.M;\n const isLgDevice = this.deviceSize >= DEVICE_SIZES.L;\n const isAppNameSubtitleVariant = this.deviceSizeAppTitle === DEVICE_SIZES.S;\n const displayExpandBtn =\n isMdDevice || this.disableTopBarBehaviour || (isLgDevice && !this.static);\n\n const topBarProps: IcTopBar = {\n isSDevice,\n foregroundColor,\n menuOpen,\n href,\n isAppNameSubtitleVariant,\n appTitle,\n };\n\n return (\n <Host\n class={{\n \"xs-menu-open\": menuOpen && isSDevice,\n \"xs-menu-close\": !menuOpen && isSDevice,\n \"sm-collapsed\": !isSDevice && !menuExpanded,\n \"sm-expanded\": !isSDevice && menuExpanded,\n \"side-display\":\n this.deviceSize > DEVICE_SIZES.S || this.disableTopBarBehaviour,\n [IcThemeForegroundEnum.Dark]:\n foregroundColor === IcThemeForegroundEnum.Dark,\n [\"collapsed-labels\"]:\n !isSDevice && !menuExpanded && collapsedIconLabels,\n [\"inline\"]: inline,\n }}\n >\n {isSDevice && this.renderTopBar({ ...topBarProps })}\n <div class=\"side-navigation\" id=\"side-navigation\">\n {!isSDevice && this.renderTopBar({ ...topBarProps })}\n <div class=\"side-navigation-inner\">\n {isSlotUsed(this.el, \"primary-navigation\") && (\n <nav\n class=\"primary-navigation\"\n aria-labelledby=\"primary-navigation-landmark\"\n >\n <span\n aria-hidden=\"true\"\n class=\"navigation-landmark-title\"\n id=\"primary-navigation-landmark\"\n >\n Primary\n </span>\n <ul class=\"navigation-list\">\n <slot name=\"primary-navigation\"></slot>\n </ul>\n </nav>\n )}\n </div>\n <div\n class={{\n [\"bottom-wrapper\"]: true,\n [\"classification-spacing\"]: hasClassificationBanner(),\n }}\n >\n {isSlotUsed(this.el, \"secondary-navigation\") && (\n <nav\n class=\"secondary-navigation\"\n aria-labelledby=\"secondary-navigation-landmark\"\n >\n <span\n aria-hidden=\"true\"\n class=\"navigation-landmark-title\"\n id=\"secondary-navigation-landmark\"\n >\n Secondary\n </span>\n <ul class=\"navigation-list\">\n <slot name=\"secondary-navigation\"></slot>\n </ul>\n </nav>\n )}\n <div class=\"bottom-side-nav\">\n {this.hasSecondaryNavigation && <ic-divider></ic-divider>}\n {displayExpandBtn && (\n <button\n class=\"menu-expand-button\"\n innerHTML={chevronIcon}\n onClick={this.toggleMenuExpanded}\n aria-label={`${\n menuExpanded ? \"Collapse\" : \"Expand\"\n } side navigation`}\n ></button>\n )}\n <div class=\"app-status-wrapper\">\n {status !== \"\" && (\n <div\n class={{\n [\"app-status\"]: true,\n }}\n >\n <ic-typography\n aria-label=\"app tag\"\n variant=\"label-uppercase\"\n class=\"app-status-text\"\n >\n {status}\n </ic-typography>\n </div>\n )}\n {version !== \"\" && (\n <ic-typography\n variant=\"label\"\n class=\"app-version\"\n aria-label=\"app version\"\n >\n {version}\n </ic-typography>\n )}\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icAlertCss","Alert","this","dismissAction","dismiss","emit","icDismiss","componentDidLoad","alertTitleShouldWrap","handleClick","visible","titleHeight","_a","el","shadowRoot","querySelector","clientHeight","alertTitleWrap","render","variant","heading","message","titleAbove","dismissible","announced","h","Host","role","class","IcThemeForegroundEnum","Dark","innerHTML","VARIANT_ICONS","icon","name","isSlotUsed","closeIcon","onClick","appearance","title"],"sources":["src/components/ic-alert/ic-alert.css?tag=ic-alert&encapsulation=shadow","src/components/ic-alert/ic-alert.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n}\n\n.container {\n min-height: 3.5rem;\n border-radius: var(--ic-border-radius);\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.container-neutral {\n background-color: var(--ic-status-unknown-light);\n}\n\n.container-info {\n background-color: var(--ic-status-info-light);\n}\n\n.container-warning {\n background-color: var(--ic-status-warning-light);\n}\n\n.container-error {\n background-color: var(--ic-status-error-light);\n}\n\n.container-success {\n background-color: var(--ic-status-success-light);\n}\n\n.alert-icon-container {\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.divider {\n height: 100%;\n width: var(--ic-space-xs);\n border-radius: var(--ic-space-xxxs) 0 0 var(--ic-space-xxxs);\n position: absolute;\n}\n\n.divider-neutral {\n background-color: var(--ic-status-unknown);\n}\n\n.divider-info {\n background-color: var(--ic-status-info);\n}\n\n.divider-warning {\n background-color: var(--ic-status-warning);\n}\n\n.divider-error {\n background-color: var(--ic-status-error);\n}\n\n.divider-success {\n background-color: var(--ic-status-success);\n}\n\n.alert-icon {\n height: var(--ic-space-lg);\n width: 1.375rem;\n margin-left: 1.125rem;\n}\n\n.alert-icon > svg {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n display: inline-block;\n}\n\n.icon-neutral > svg {\n fill: var(--ic-status-unknown);\n}\n\n:host([variant=\"info\"]) .alert-icon svg {\n fill: var(--ic-status-info);\n}\n\n:host([variant=\"warning\"]) .alert-icon svg {\n fill: var(--ic-status-warning);\n}\n\n:host([variant=\"error\"]) .alert-icon svg {\n fill: var(--ic-status-error);\n}\n\n:host([variant=\"success\"]) .alert-icon svg {\n fill: var(--ic-status-success);\n}\n\n.alert-content {\n display: flex;\n align-items: center;\n margin-left: 0.625rem;\n width: 100%;\n}\n\n.alert-message {\n display: flex;\n align-items: center;\n padding: var(--ic-space-xs) var(--ic-space-xs) var(--ic-space-xs) 0;\n flex: 1;\n}\n\n.alert-message-title-above {\n display: inline;\n font-size: 0;\n}\n\n.alert-title {\n margin-right: var(--ic-space-xs);\n}\n\n.alert-title-above {\n white-space: normal;\n}\n\n.alert-action-container {\n margin-right: var(--ic-space-xs);\n display: flex;\n align-items: center;\n}\n\n.dismiss-icon {\n margin-right: var(--ic-space-xxxs);\n margin-left: -0.375rem;\n padding: 0.375rem;\n border: none;\n border-radius: 50%;\n background-color: inherit;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.dismiss-icon:hover {\n cursor: pointer;\n}\n\n@media (max-width: 628px) {\n .alert-content {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n\n .alert-message {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n\n .alert-title {\n white-space: normal;\n }\n\n .alert-action-container {\n margin-bottom: var(--ic-space-xs);\n }\n}\n\n@media (forced-colors: active) {\n .container {\n border: var(--ic-hc-border);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n State,\n Listen,\n Prop,\n h,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { isSlotUsed } from \"../../utils/helpers\";\nimport { IcThemeForegroundEnum, IcStatusVariants } from \"../../utils/types\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\n\n/**\n * @slot message - Content is placed to the right of the title.\n * @slot action - Content is placed to the right of the message.\n */\n@Component({\n tag: \"ic-alert\",\n styleUrl: \"ic-alert.css\",\n shadow: true,\n})\nexport class Alert {\n @Element() el: HTMLIcAlertElement;\n\n @State() alertTitleWrap: boolean = false;\n @State() visible: boolean = true;\n\n /**\n * If `true`, the alert will have the 'alert' ARIA role and will be announced to screen readers.\n */\n @Prop() announced?: boolean = true;\n\n /**\n * If `true`, the alert will have a close icon at the end to dismiss it.\n */\n @Prop() dismissible?: boolean = false;\n\n /**\n * The optional title to display at the start of the alert.\n */\n @Prop() heading?: string = \"\";\n\n /**\n * The main body message of the alert.\n */\n @Prop() message?: string;\n\n /**\n * If `true`, the title and message will appear above and below instead of inline.\n */\n @Prop() titleAbove?: boolean = false;\n\n /**\n * The variant of the alert which will be rendered.\n */\n @Prop() variant?: IcStatusVariants = \"neutral\";\n\n /**\n * @deprecated This event should not be used anymore. Use icDismiss instead.\n */\n @Event() dismiss: EventEmitter<void>;\n\n /**\n * Is emitted when the user dismisses the alert.\n */\n @Event() icDismiss: EventEmitter<void>;\n\n componentDidLoad(): void {\n this.alertTitleShouldWrap();\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleClick(): void {\n this.visible = !this.visible;\n }\n\n private dismissAction = (): void => {\n this.dismiss.emit();\n this.icDismiss.emit();\n };\n\n private alertTitleShouldWrap() {\n const titleHeight =\n this.el.shadowRoot.querySelector(\".alert-title\")?.clientHeight;\n if (titleHeight > 24) this.alertTitleWrap = true;\n }\n\n render() {\n const {\n variant,\n heading,\n message,\n titleAbove,\n dismissible,\n announced,\n visible,\n } = this;\n\n return (\n visible && (\n <Host\n role={announced && \"alert\"}\n class={{\n [IcThemeForegroundEnum.Dark]: true,\n }}\n >\n <div\n class={{\n [\"container\"]: true,\n [`container-${variant}`]: true,\n }}\n >\n <div class=\"alert-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n <span\n class={{\n [\"alert-icon\"]: true,\n [\"svg-container\"]: true,\n [`icon-${variant}`]: true,\n }}\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n </div>\n <div class=\"alert-content\">\n <div\n class={{\n [\"alert-message\"]: true,\n [\"alert-message-title-above\"]:\n titleAbove || this.alertTitleWrap,\n }}\n >\n {heading && (\n <ic-typography\n class={{\n [\"alert-title\"]: true,\n [\"alert-title-above\"]: titleAbove || this.alertTitleWrap,\n }}\n variant=\"subtitle-large\"\n >\n <p>{heading}</p>\n </ic-typography>\n )}\n <slot name=\"message\">\n <ic-typography variant=\"body\">{message}</ic-typography>\n </slot>\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"alert-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n <div class=\"dismiss-icon-container\">\n {dismissible && (\n <ic-button\n class={{\n [\"svg-container\"]: true,\n [\"dismiss-icon\"]: true,\n }}\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon\"\n appearance={IcThemeForegroundEnum.Dark}\n title=\"dismiss\"\n ></ic-button>\n )}\n </div>\n </div>\n </Host>\n )\n );\n }\n}\n"],"mappings":"mLAAA,MAAMA,EAAa,stJ,MCyBNC,EAAK,M,+FAuDRC,KAAAC,cAAgB,KACtBD,KAAKE,QAAQC,OACbH,KAAKI,UAAUD,MAAM,E,oBAtDY,M,aACP,K,eAKE,K,iBAKE,M,aAKL,G,uCAUI,M,aAKM,S,CAYrC,gBAAAE,GACEL,KAAKM,sB,CAIP,WAAAC,GACEP,KAAKQ,SAAWR,KAAKQ,O,CAQf,oBAAAF,G,MACN,MAAMG,GACJC,EAAAV,KAAKW,GAAGC,WAAWC,cAAc,mBAAe,MAAAH,SAAA,SAAAA,EAAEI,aACpD,GAAIL,EAAc,GAAIT,KAAKe,eAAiB,I,CAG9C,MAAAC,GACE,MAAMC,QACJA,EAAOC,QACPA,EAAOC,QACPA,EAAOC,WACPA,EAAUC,YACVA,EAAWC,UACXA,EAASd,QACTA,GACER,KAEJ,OACEQ,GACEe,EAACC,EAAI,CACHC,KAAMH,GAAa,QACnBI,MAAO,CACL,CAACC,EAAsBC,MAAO,OAGhCL,EAAA,OACEG,MAAO,CACL,CAAC,aAAc,KACf,CAAC,aAAaT,KAAY,OAG5BM,EAAA,OAAKG,MAAM,wBACTH,EAAA,OACEG,MAAO,CACL,CAAC,WAAY,KACb,CAAC,WAAWT,KAAY,QAG5BM,EAAA,QACEG,MAAO,CACL,CAAC,cAAe,KAChB,CAAC,iBAAkB,KACnB,CAAC,QAAQT,KAAY,MAEvBY,UAAWC,EAAcb,GAASc,QAGtCR,EAAA,OAAKG,MAAM,iBACTH,EAAA,OACEG,MAAO,CACL,CAAC,iBAAkB,KACnB,CAAC,6BACCN,GAAcpB,KAAKe,iBAGtBG,GACCK,EAAA,iBACEG,MAAO,CACL,CAAC,eAAgB,KACjB,CAAC,qBAAsBN,GAAcpB,KAAKe,gBAE5CE,QAAQ,kBAERM,EAAA,SAAIL,IAGRK,EAAA,QAAMS,KAAK,WACTT,EAAA,iBAAeN,QAAQ,QAAQE,KAGlCc,EAAWjC,KAAKW,GAAI,WACnBY,EAAA,OAAKG,MAAM,0BACTH,EAAA,QAAMS,KAAK,aAIjBT,EAAA,OAAKG,MAAM,0BACRL,GACCE,EAAA,aACEG,MAAO,CACL,CAAC,iBAAkB,KACnB,CAAC,gBAAiB,MAEpBG,UAAWK,EACXC,QAASnC,KAAKC,cACdgB,QAAQ,OACRmB,WAAYT,EAAsBC,KAClCS,MAAM,c"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icPopoverMenuCss","PopoverMenu","this","ARIA_LABEL","popoverMenuEls","setButtonFocus","_a","currentFocus","focus","findAnchorEl","anchor","anchorElement","undefined","submenuId","console","error","document","querySelector","indexOf","isNotPopoverMenuEl","ev","target","id","tagName","closeMenu","open","anchorEl","icPopoverClosed","emit","getNextItemToSelect","currentItem","movingDown","numButtons","length","nextItem","addMenuItems","elements","i","el","push","groupSlotWrapper","shadowRoot","menuGroupElements","getSlotElements","getMenuAriaLabel","ariaLabel","getAttribute","isPropDefined","submenuLevel","parentLabel","handleBackButtonClick","parentPopover","openFromChild","initPopperJS","popperInstance","createPopper","placement","modifiers","name","options","offset","fallbackPlacements","rootBoundary","watchOpenHandler","some","menuItem","unshift","backButton","setTimeout","destroy","disconnectedCallback","componentDidLoad","slotWrapper","popoverMenuElements","componentWillRender","componentDidRender","handleMenuItemClick","detail","hasSubMenu","label","handleSubmenuChange","childEl","submenuTriggerFor","openFromParent","handleClick","handleKeyDown","key","preventDefault","blur","openingFromChild","openingFromParent","render","h","Host","class","menu","tabindex","ref","onClick","slot","viewBox","fill","xmlns","d","variant","role"],"sources":["src/components/ic-popover-menu/ic-popover-menu.css?tag=ic-popover-menu&encapsulation=shadow","src/components/ic-popover-menu/ic-popover-menu.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n* @prop --ic-z-index-popover: z-index of popover menu. \n* @prop --max-height: Maximum height of the popover menu.\n* @prop --popover-width: Default width of the popover menu.\n*/\n\n@media (prefers-reduced-motion: no-preference) {\n :host .opening-from-parent {\n animation: slide-in var(--ic-transition-duration-slow) ease-in-out;\n }\n\n :host .opening-from-child {\n animation: slide-out var(--ic-transition-duration-slow) ease-in-out;\n }\n}\n\n:host {\n border-radius: var(--ic-border-radius);\n color: var(--ic-color-primary-text);\n background-color: var(--ic-architectural-white);\n position: relative;\n z-index: var(--ic-z-index-popover);\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n display: none;\n}\n\n:host(.on-dialog) {\n inset: auto !important;\n}\n\n:host(.on-dialog-fix-translate) {\n transform: translate(0, var(--ic-space-xs)) !important;\n}\n\n:host(.on-dialog-translate-y) {\n transform: translate(0, calc(-1 * var(--translate-y))) !important;\n}\n\n.menu {\n border: var(--ic-border-default);\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-architectural-white);\n visibility: hidden;\n height: 0;\n}\n\n.button {\n text-decoration: none;\n list-style-type: none;\n}\n\n:host(:focus-within) {\n box-shadow: var(--ic-border-focus);\n}\n\n.menu:focus-visible {\n outline: none;\n}\n\n:host(.open) {\n display: block;\n min-width: calc(20rem - var(--ic-space-xl));\n width: var(--popover-width, 20rem);\n max-width: calc(100vw - var(--ic-space-xl));\n}\n\n:host(.open) .menu {\n visibility: visible;\n height: fit-content;\n max-height: var(--max-height, fit-content);\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.parent-label {\n color: var(--ic-color-tertiary-text);\n margin: var(--ic-space-xs) var(--ic-space-xs) 0;\n}\n\n@keyframes slide-in {\n from {\n opacity: 0;\n transform: translateX(10rem);\n }\n\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes slide-out {\n from {\n opacity: 0;\n transform: translateX(-10rem);\n }\n\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n","import {\n Component,\n Element,\n Host,\n h,\n Prop,\n Listen,\n Watch,\n State,\n Method,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport { getSlotElements, isPropDefined } from \"../../utils/helpers\";\nimport { createPopper, Instance as PopperInstance } from \"@popperjs/core\";\n\n@Component({\n tag: \"ic-popover-menu\",\n styleUrl: \"ic-popover-menu.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class PopoverMenu {\n private anchorEl: HTMLElement;\n private ARIA_LABEL: string = \"aria-label\";\n private backButton: HTMLIcMenuItemElement;\n private currentFocus: number;\n private popoverMenuEls: HTMLIcMenuItemElement[] = [];\n private popperInstance: PopperInstance;\n\n @Element() el: HTMLIcPopoverMenuElement;\n\n @State() openingFromChild: boolean = false;\n @State() openingFromParent: boolean = false;\n\n /**\n * The ID of the element the popover menu will anchor itself to. This is required unless the popover is a submenu.\n */\n @Prop() anchor: string;\n\n /**\n * @internal The parent popover menu of a child popover menu.\n */\n @Prop() parentLabel?: string;\n\n /**\n * @internal The parent popover menu of a child popover menu.\n */\n @Prop() parentPopover?: HTMLIcPopoverMenuElement;\n\n /**\n * The unique identifier for a popover submenu.\n */\n @Prop() submenuId?: string;\n\n /**\n * @internal The level of menu being displayed.\n */\n @Prop() submenuLevel: number = 1;\n\n /**\n * If `true`, the popover menu will be displayed.\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = undefined;\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (this.open) {\n if (\n this.parentPopover !== undefined &&\n !this.popoverMenuEls.some((menuItem) => menuItem.id)\n ) {\n this.popoverMenuEls.unshift(this.backButton);\n }\n\n this.currentFocus = isPropDefined(this.submenuId) ? 1 : 0;\n // Needed so that anchorEl isn't always focused\n setTimeout(this.setButtonFocus, 50);\n } else {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n }\n\n /**\n * Emitted when the popover menu is closed.\n */\n @Event() icPopoverClosed: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n }\n\n componentDidLoad(): void {\n const slotWrapper = this.el.shadowRoot.querySelector(\"ul.button\");\n const popoverMenuElements = getSlotElements(slotWrapper);\n\n if (popoverMenuElements !== null) {\n this.addMenuItems(popoverMenuElements);\n }\n\n if (\n this.submenuId === undefined &&\n this.el.getAttribute(this.ARIA_LABEL) === null\n ) {\n console.error(\n `No aria-label specified for popover menu component - aria-label required`\n );\n }\n }\n\n componentWillRender(): void {\n this.anchorEl = this.findAnchorEl(this.anchor);\n }\n\n componentDidRender(): void {\n if (this.open && !this.popperInstance) {\n this.initPopperJS();\n }\n }\n\n @Listen(\"handleMenuItemClick\")\n handleMenuItemClick(ev: CustomEvent): void {\n if (!ev.detail.hasSubMenu && ev.detail.label !== \"Back\") {\n this.closeMenu();\n }\n }\n\n // This is listening for the event emitted when a menu item is acting as a trigger button\n @Listen(\"triggerPopoverMenuInstance\", { capture: true })\n handleSubmenuChange(ev: Event): void {\n // Finds the trigger menu item that has emitted the event\n const target = ev.target as HTMLIcMenuItemElement;\n this.open = false;\n\n // Find the popover menu that the menu item triggers (i.e. submenu-trigger-for === submenu-id).\n const childEl = document.querySelector(\n `ic-popover-menu[submenu-id=${target.submenuTriggerFor}]`\n ) as HTMLIcPopoverMenuElement;\n // Set the parent popover menu of the submenu and open the submenu\n childEl.parentPopover = this.el;\n childEl.anchor = this.anchor;\n childEl.ariaLabel = this.el.getAttribute(this.ARIA_LABEL);\n childEl.openFromParent();\n childEl.submenuLevel = this.submenuLevel + 1;\n // Set the label in the submenu using the label of the menu item that has emitted the event\n childEl.parentLabel = target.label;\n }\n\n @Listen(\"click\", { target: \"document\" })\n handleClick(ev: Event): void {\n if (this.open && this.isNotPopoverMenuEl(ev)) {\n // If menu is open and the next click on the document is not a popover El, close the popover\n this.closeMenu();\n }\n }\n\n // Manages the keyboard navigation in the popover menu\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyDown(ev: KeyboardEvent): void {\n switch (ev.key) {\n case \"ArrowDown\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, true);\n this.setButtonFocus();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, false);\n this.setButtonFocus();\n break;\n case \"Home\":\n //Sets home focus as first element, or back button\n this.currentFocus = 0;\n this.setButtonFocus();\n break;\n case \"End\":\n //Sets end focus as last element\n this.currentFocus = this.popoverMenuEls.length - 1;\n this.setButtonFocus();\n break;\n case \"Escape\":\n case \"Tab\":\n if (this.open) {\n this.closeMenu();\n this.el.blur();\n }\n break;\n }\n }\n\n /**\n * @internal Opens the menu from the child menu.\n */\n @Method()\n async openFromChild(): Promise<void> {\n this.open = true;\n this.openingFromChild = true;\n\n setTimeout(() => (this.openingFromChild = false), 1000);\n }\n\n /**\n * @internal Opens the menu from the parent menu.\n */\n @Method()\n async openFromParent(): Promise<void> {\n this.open = true;\n this.openingFromParent = true;\n\n setTimeout(() => (this.openingFromParent = false), 1000);\n }\n\n private setButtonFocus = () => {\n this.popoverMenuEls[this.currentFocus]?.focus();\n };\n\n // Checks that the popover menu has an anchor\n private findAnchorEl = (anchor: string): HTMLElement => {\n let anchorElement: HTMLElement = null;\n if (anchor === null || anchor === undefined) {\n this.submenuId === undefined &&\n console.error(\"No anchor specified for popover component\");\n } else {\n anchorElement = document.querySelector(\n anchor.indexOf(\"#\") === 0 ? anchor : \"#\" + anchor\n );\n if (anchorElement === null) {\n console.error(`Popover anchor element '${anchor}' not found`);\n }\n }\n return anchorElement;\n };\n\n private isNotPopoverMenuEl = (ev: Event) => {\n const target = ev.target as HTMLElement;\n return (\n target.id !== this.anchor &&\n target.tagName !== \"IC-MENU-ITEM\" &&\n target.tagName !== \"IC-MENU-GROUP\" &&\n target.tagName !== \"IC-POPOVER-MENU\"\n );\n };\n\n private closeMenu = () => {\n this.open = false;\n this.anchorEl?.focus();\n this.icPopoverClosed.emit();\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numButtons = this.popoverMenuEls.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n\n // Check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numButtons;\n } else if (nextItem > numButtons) {\n nextItem = 0;\n }\n\n return nextItem;\n };\n\n private addMenuItems = (elements: Element[] | NodeListOf<ChildNode>) => {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i] as HTMLIcMenuItemElement;\n if (el.tagName === \"IC-MENU-ITEM\") {\n this.popoverMenuEls.push(el);\n } else if (el.tagName === \"IC-MENU-GROUP\") {\n const groupSlotWrapper = el.shadowRoot.querySelector(\"ul\");\n const menuGroupElements = getSlotElements(groupSlotWrapper);\n\n this.addMenuItems(menuGroupElements);\n }\n }\n };\n\n private getMenuAriaLabel = (): string => {\n const ariaLabel = this.el.getAttribute(this.ARIA_LABEL);\n\n if (isPropDefined(this.submenuId)) {\n return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;\n } else {\n return ariaLabel;\n }\n };\n\n private handleBackButtonClick = (): void => {\n this.parentPopover.openFromChild();\n this.open = false;\n };\n\n private initPopperJS = () => {\n this.popperInstance = createPopper(this.anchorEl, this.el, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 4],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top-start\", \"top-end\", \"bottom-end\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n };\n\n render() {\n return (\n <Host class={{ open: this.open }}>\n <div\n id={\n this.parentPopover === undefined\n ? `ic-popover-submenu-${this.submenuId}`\n : \"\"\n }\n class={{\n menu: true,\n }}\n tabindex={open ? \"0\" : \"-1\"}\n >\n <div\n class={{\n \"opening-from-parent\": this.openingFromParent,\n \"opening-from-child\": this.openingFromChild,\n }}\n >\n {isPropDefined(this.submenuId) && (\n <div>\n <ic-menu-item\n class=\"ic-popover-submenu-back-button\"\n ref={(el) => (this.backButton = el)}\n label=\"Back\"\n onClick={this.handleBackButtonClick}\n id={`ic-popover-submenu-back-button-${this.submenuLevel}`}\n >\n <svg\n slot=\"icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"submenu-back-icon\"\n >\n <path\n d=\"M20 11H7.83L13.42 5.41L12 4L4 12L12 20L13.41 18.59L7.83 13H20V11Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-menu-item>\n <ic-typography variant=\"subtitle-small\" class=\"parent-label\">\n {this.parentLabel}\n </ic-typography>\n </div>\n )}\n <ul\n class=\"button\"\n aria-label={this.getMenuAriaLabel()}\n role=\"menu\"\n aria-owns={\n isPropDefined(this.submenuId)\n ? `ic-popover-submenu-back-button-${this.submenuLevel}`\n : false\n }\n aria-controls={\n isPropDefined(this.submenuId)\n ? `ic-popover-submenu-back-button-${this.submenuLevel}`\n : false\n }\n >\n <slot></slot>\n </ul>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}