@telia-ace/alliance-ui 1.0.14 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/components/alliance-link.d.ts +2 -0
  3. package/components/alliance-link.js +4 -150
  4. package/components/alliance-link.js.map +1 -1
  5. package/components/alliance-modal.d.ts +12 -0
  6. package/components/alliance-modal.js +7 -237
  7. package/components/alliance-modal.js.map +1 -1
  8. package/components/alliance-paginator.d.ts +13 -0
  9. package/components/alliance-paginator.js +6 -308
  10. package/components/alliance-paginator.js.map +1 -1
  11. package/components/alliance-table.d.ts +2 -0
  12. package/components/alliance-table.js +6 -144
  13. package/components/alliance-table.js.map +1 -1
  14. package/components/alliance-view.d.ts +32 -0
  15. package/components/alliance-view.js +291 -0
  16. package/components/alliance-view.js.map +1 -0
  17. package/components/chunk-ADFC4JKF.js +315 -0
  18. package/components/chunk-ADFC4JKF.js.map +1 -0
  19. package/components/chunk-B6YHD7BN.js +4 -0
  20. package/components/chunk-B6YHD7BN.js.map +1 -0
  21. package/components/chunk-JQ76TOQT.js +4 -0
  22. package/components/chunk-JQ76TOQT.js.map +1 -0
  23. package/components/chunk-LYU2K33W.js +464 -0
  24. package/components/chunk-LYU2K33W.js.map +1 -0
  25. package/components/chunk-NB6ODBZJ.js +13 -0
  26. package/components/chunk-NB6ODBZJ.js.map +1 -0
  27. package/components/chunk-P2AWWJPH.js +3 -0
  28. package/components/chunk-P2AWWJPH.js.map +1 -0
  29. package/components/chunk-WYQTL7R3.js +167 -0
  30. package/components/chunk-WYQTL7R3.js.map +1 -0
  31. package/components/chunk-XPHFAKEI.js +164 -0
  32. package/components/chunk-XPHFAKEI.js.map +1 -0
  33. package/components/index.d.ts +2 -6
  34. package/components/index.js +10 -18
  35. package/components/index.js.map +1 -1
  36. package/package.json +9 -13
  37. package/voca/components/telia-accordion-item.d.ts +1 -1
  38. package/voca/components/telia-accordion-item.js +3 -70
  39. package/voca/components/telia-accordion-item.js.map +1 -1
  40. package/voca/components/telia-accordion.d.ts +2 -1
  41. package/voca/components/telia-accordion.js +3 -104
  42. package/voca/components/telia-accordion.js.map +1 -1
  43. package/voca/components/telia-badge.d.ts +2 -1
  44. package/voca/components/telia-badge.js +3 -83
  45. package/voca/components/telia-badge.js.map +1 -1
  46. package/voca/components/telia-button.d.ts +2 -1
  47. package/voca/components/telia-button.js +3 -6
  48. package/voca/components/telia-button.js.map +1 -1
  49. package/voca/components/telia-card-frame-link.d.ts +2 -1
  50. package/voca/components/telia-card-frame-link.js +3 -46
  51. package/voca/components/telia-card-frame-link.js.map +1 -1
  52. package/voca/components/telia-card-frame.d.ts +2 -1
  53. package/voca/components/telia-card-frame.js +3 -4
  54. package/voca/components/telia-card-frame.js.map +1 -1
  55. package/voca/components/telia-checkbox.d.ts +2 -1
  56. package/voca/components/telia-checkbox.js +3 -102
  57. package/voca/components/telia-checkbox.js.map +1 -1
  58. package/voca/components/telia-chip-choice.d.ts +2 -1
  59. package/voca/components/telia-chip-choice.js +3 -70
  60. package/voca/components/telia-chip-choice.js.map +1 -1
  61. package/voca/components/telia-chip-filter.d.ts +2 -1
  62. package/voca/components/telia-chip-filter.js +3 -50
  63. package/voca/components/telia-chip-filter.js.map +1 -1
  64. package/voca/components/telia-col.d.ts +2 -1
  65. package/voca/components/telia-col.js +3 -47
  66. package/voca/components/telia-col.js.map +1 -1
  67. package/voca/components/telia-color-dot.d.ts +2 -1
  68. package/voca/components/telia-color-dot.js +3 -39
  69. package/voca/components/telia-color-dot.js.map +1 -1
  70. package/voca/components/telia-counter-badge.d.ts +2 -1
  71. package/voca/components/telia-counter-badge.js +3 -45
  72. package/voca/components/telia-counter-badge.js.map +1 -1
  73. package/voca/components/telia-cta-link.d.ts +2 -1
  74. package/voca/components/telia-cta-link.js +3 -58
  75. package/voca/components/telia-cta-link.js.map +1 -1
  76. package/voca/components/telia-date-picker.d.ts +2 -1
  77. package/voca/components/telia-date-picker.js +3 -591
  78. package/voca/components/telia-date-picker.js.map +1 -1
  79. package/voca/components/telia-divider.d.ts +2 -1
  80. package/voca/components/telia-divider.js +3 -46
  81. package/voca/components/telia-divider.js.map +1 -1
  82. package/voca/components/telia-field-assistive-text.d.ts +2 -1
  83. package/voca/components/telia-field-assistive-text.js +3 -4
  84. package/voca/components/telia-field-assistive-text.js.map +1 -1
  85. package/voca/components/telia-field-error.d.ts +2 -1
  86. package/voca/components/telia-field-error.js +3 -7
  87. package/voca/components/telia-field-error.js.map +1 -1
  88. package/voca/components/telia-field-valid.d.ts +2 -1
  89. package/voca/components/telia-field-valid.js +3 -7
  90. package/voca/components/telia-field-valid.js.map +1 -1
  91. package/voca/components/telia-fieldset.d.ts +2 -1
  92. package/voca/components/telia-fieldset.js +3 -56
  93. package/voca/components/telia-fieldset.js.map +1 -1
  94. package/voca/components/telia-focus-trap.d.ts +2 -1
  95. package/voca/components/telia-focus-trap.js +3 -78
  96. package/voca/components/telia-focus-trap.js.map +1 -1
  97. package/voca/components/telia-form.d.ts +2 -1
  98. package/voca/components/telia-form.js +3 -59
  99. package/voca/components/telia-form.js.map +1 -1
  100. package/voca/components/telia-grid.d.ts +2 -1
  101. package/voca/components/telia-grid.js +3 -29
  102. package/voca/components/telia-grid.js.map +1 -1
  103. package/voca/components/telia-heading.d.ts +2 -1
  104. package/voca/components/telia-heading.js +3 -4
  105. package/voca/components/telia-heading.js.map +1 -1
  106. package/voca/components/telia-icon.d.ts +2 -1
  107. package/voca/components/telia-icon.js +3 -5
  108. package/voca/components/telia-icon.js.map +1 -1
  109. package/voca/components/telia-image.d.ts +2 -1
  110. package/voca/components/telia-image.js +3 -42
  111. package/voca/components/telia-image.js.map +1 -1
  112. package/voca/components/telia-label.d.ts +2 -1
  113. package/voca/components/telia-label.js +3 -4
  114. package/voca/components/telia-label.js.map +1 -1
  115. package/voca/components/telia-link-image.d.ts +2 -1
  116. package/voca/components/telia-link-image.js +3 -55
  117. package/voca/components/telia-link-image.js.map +1 -1
  118. package/voca/components/telia-link.d.ts +2 -1
  119. package/voca/components/telia-link.js +3 -5
  120. package/voca/components/telia-link.js.map +1 -1
  121. package/voca/components/telia-list.d.ts +2 -1
  122. package/voca/components/telia-list.js +3 -69
  123. package/voca/components/telia-list.js.map +1 -1
  124. package/voca/components/telia-logo.d.ts +2 -1
  125. package/voca/components/telia-logo.js +3 -54
  126. package/voca/components/telia-logo.js.map +1 -1
  127. package/voca/components/telia-notification.d.ts +2 -1
  128. package/voca/components/telia-notification.js +3 -87
  129. package/voca/components/telia-notification.js.map +1 -1
  130. package/voca/components/telia-overlay.d.ts +2 -1
  131. package/voca/components/telia-overlay.js +3 -31
  132. package/voca/components/telia-overlay.js.map +1 -1
  133. package/voca/components/telia-p.d.ts +2 -1
  134. package/voca/components/telia-p.js +3 -51
  135. package/voca/components/telia-p.js.map +1 -1
  136. package/voca/components/telia-pictogram.d.ts +2 -1
  137. package/voca/components/telia-pictogram.js +3 -112
  138. package/voca/components/telia-pictogram.js.map +1 -1
  139. package/voca/components/telia-radio-button.d.ts +2 -1
  140. package/voca/components/telia-radio-button.js +3 -54
  141. package/voca/components/telia-radio-button.js.map +1 -1
  142. package/voca/components/telia-row.d.ts +2 -1
  143. package/voca/components/telia-row.js +3 -37
  144. package/voca/components/telia-row.js.map +1 -1
  145. package/voca/components/telia-search-input.d.ts +2 -1
  146. package/voca/components/telia-search-input.js +3 -134
  147. package/voca/components/telia-search-input.js.map +1 -1
  148. package/voca/components/telia-select.d.ts +2 -1
  149. package/voca/components/telia-select.js +3 -114
  150. package/voca/components/telia-select.js.map +1 -1
  151. package/voca/components/telia-skeleton.d.ts +2 -1
  152. package/voca/components/telia-skeleton.js +3 -32
  153. package/voca/components/telia-skeleton.js.map +1 -1
  154. package/voca/components/telia-status-badge.d.ts +2 -1
  155. package/voca/components/telia-status-badge.js +3 -58
  156. package/voca/components/telia-status-badge.js.map +1 -1
  157. package/voca/components/telia-style-link.d.ts +2 -1
  158. package/voca/components/telia-style-link.js +3 -4
  159. package/voca/components/telia-style-link.js.map +1 -1
  160. package/voca/components/telia-tab-content.d.ts +2 -1
  161. package/voca/components/telia-tab-content.js +3 -44
  162. package/voca/components/telia-tab-content.js.map +1 -1
  163. package/voca/components/telia-tab-header.d.ts +2 -1
  164. package/voca/components/telia-tab-header.js +3 -6
  165. package/voca/components/telia-tab-header.js.map +1 -1
  166. package/voca/components/telia-tab.d.ts +2 -1
  167. package/voca/components/telia-tab.js +3 -160
  168. package/voca/components/telia-tab.js.map +1 -1
  169. package/voca/components/telia-text-input.d.ts +2 -1
  170. package/voca/components/telia-text-input.js +3 -14
  171. package/voca/components/telia-text-input.js.map +1 -1
  172. package/voca/components/telia-text-spacing.d.ts +2 -1
  173. package/voca/components/telia-text-spacing.js +3 -29
  174. package/voca/components/telia-text-spacing.js.map +1 -1
  175. package/voca/components/telia-textarea.d.ts +2 -1
  176. package/voca/components/telia-textarea.js +3 -111
  177. package/voca/components/telia-textarea.js.map +1 -1
  178. package/voca/components/telia-toggle.d.ts +2 -1
  179. package/voca/components/telia-toggle.js +3 -143
  180. package/voca/components/telia-toggle.js.map +1 -1
  181. package/voca/components/telia-visually-hidden.d.ts +2 -1
  182. package/voca/components/telia-visually-hidden.js +3 -4
  183. package/voca/components/telia-visually-hidden.js.map +1 -1
  184. package/voca/foundations/component-library-styling.d.ts +2 -1
  185. package/voca/foundations/component-library-styling.js +3 -3
  186. package/voca/foundations/component-library-styling.js.map +1 -1
  187. package/voca/foundations/index.d.ts +6 -4
  188. package/voca/foundations/index.js +161 -162
  189. package/voca/foundations/index.js.map +1 -1
  190. package/voca/icons/index.js +3 -338
  191. package/voca/icons/index.js.map +1 -1
  192. package/chunks/check-circle-filled-42095247.js +0 -5
  193. package/chunks/check-circle-filled-42095247.js.map +0 -1
  194. package/chunks/chevron-down-50d47dd6.js +0 -5
  195. package/chunks/chevron-down-50d47dd6.js.map +0 -1
  196. package/chunks/chevron-right-788ce8a9.js +0 -6
  197. package/chunks/chevron-right-788ce8a9.js.map +0 -1
  198. package/chunks/close-7d423291.js +0 -5
  199. package/chunks/close-7d423291.js.map +0 -1
  200. package/chunks/close-ac6e4f1c.js +0 -5
  201. package/chunks/close-ac6e4f1c.js.map +0 -1
  202. package/chunks/error-9925a844.js +0 -7
  203. package/chunks/error-9925a844.js.map +0 -1
  204. package/chunks/error-filled-8de50bdd.js +0 -5
  205. package/chunks/error-filled-8de50bdd.js.map +0 -1
  206. package/chunks/getSvgContent-f2389ce0.js +0 -14
  207. package/chunks/getSvgContent-f2389ce0.js.map +0 -1
  208. package/chunks/index-514c4fef.js +0 -213
  209. package/chunks/index-514c4fef.js.map +0 -1
  210. package/chunks/index-eef143db.js +0 -531
  211. package/chunks/index-eef143db.js.map +0 -1
  212. package/chunks/query-assigned-elements-6cda07f5.js +0 -856
  213. package/chunks/query-assigned-elements-6cda07f5.js.map +0 -1
  214. package/chunks/repeat-aaedbe31.js +0 -143
  215. package/chunks/repeat-aaedbe31.js.map +0 -1
  216. package/chunks/stringCombiner-10b57054.js +0 -50
  217. package/chunks/stringCombiner-10b57054.js.map +0 -1
  218. package/chunks/telia-button-c9ba09a9.js +0 -86
  219. package/chunks/telia-button-c9ba09a9.js.map +0 -1
  220. package/chunks/telia-card-frame-340f3315.js +0 -39
  221. package/chunks/telia-card-frame-340f3315.js.map +0 -1
  222. package/chunks/telia-field-assistive-text-173ba2fb.js +0 -32
  223. package/chunks/telia-field-assistive-text-173ba2fb.js.map +0 -1
  224. package/chunks/telia-field-error-f978aeb3.js +0 -40
  225. package/chunks/telia-field-error-f978aeb3.js.map +0 -1
  226. package/chunks/telia-field-valid-5d8f121e.js +0 -39
  227. package/chunks/telia-field-valid-5d8f121e.js.map +0 -1
  228. package/chunks/telia-heading-38ae44ae.js +0 -104
  229. package/chunks/telia-heading-38ae44ae.js.map +0 -1
  230. package/chunks/telia-icon-d0e7c715.js +0 -73
  231. package/chunks/telia-icon-d0e7c715.js.map +0 -1
  232. package/chunks/telia-label-f4c1eb47.js +0 -36
  233. package/chunks/telia-label-f4c1eb47.js.map +0 -1
  234. package/chunks/telia-link-42cb2e68.js +0 -51
  235. package/chunks/telia-link-42cb2e68.js.map +0 -1
  236. package/chunks/telia-style-link-bb7bfd94.js +0 -56
  237. package/chunks/telia-style-link-bb7bfd94.js.map +0 -1
  238. package/chunks/telia-tab-header-890fc7c8.js +0 -98
  239. package/chunks/telia-tab-header-890fc7c8.js.map +0 -1
  240. package/chunks/telia-text-input-289394d8.js +0 -169
  241. package/chunks/telia-text-input-289394d8.js.map +0 -1
  242. package/chunks/telia-visually-hidden-9015e8cd.js +0 -34
  243. package/chunks/telia-visually-hidden-9015e8cd.js.map +0 -1
  244. package/chunks/telia-vst2-dfb33a56.js +0 -41
  245. package/chunks/telia-vst2-dfb33a56.js.map +0 -1
  246. package/chunks/uniqueId-0daf01ec.js +0 -5
  247. package/chunks/uniqueId-0daf01ec.js.map +0 -1
  248. package/chunks/variables-ecb680f0.js +0 -8
  249. package/chunks/variables-ecb680f0.js.map +0 -1
  250. package/components/alliance-link/alliance-link.d.ts +0 -27
  251. package/components/alliance-link/index.d.ts +0 -1
  252. package/components/alliance-modal/alliance-modal.d.ts +0 -43
  253. package/components/alliance-modal/index.d.ts +0 -2
  254. package/components/alliance-paginator/alliance-page-selector.d.ts +0 -22
  255. package/components/alliance-paginator/alliance-paginator-button.d.ts +0 -17
  256. package/components/alliance-paginator/alliance-paginator.d.ts +0 -32
  257. package/components/alliance-paginator/index.d.ts +0 -4
  258. package/components/alliance-paginator/utils.d.ts +0 -13
  259. package/components/alliance-table/alliance-table-body.d.ts +0 -5
  260. package/components/alliance-table/alliance-table-data.d.ts +0 -5
  261. package/components/alliance-table/alliance-table-head.d.ts +0 -7
  262. package/components/alliance-table/alliance-table-row.d.ts +0 -6
  263. package/components/alliance-table/alliance-table.d.ts +0 -5
  264. package/components/alliance-table/index.d.ts +0 -5
  265. package/style.css +0 -1
@@ -0,0 +1,291 @@
1
+ import { __name, define } from './chunk-NB6ODBZJ.js';
2
+ import { LitElement, css, html } from 'lit';
3
+ import { property } from 'lit/decorators.js';
4
+
5
+ function _ts_decorate(decorators, target, key, desc) {
6
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
8
+ r = Reflect.decorate(decorators, target, key, desc);
9
+ else
10
+ for (var i = decorators.length - 1; i >= 0; i--)
11
+ if (d = decorators[i])
12
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ }
15
+ __name(_ts_decorate, "_ts_decorate");
16
+ function _ts_metadata(k, v) {
17
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
18
+ return Reflect.metadata(k, v);
19
+ }
20
+ __name(_ts_metadata, "_ts_metadata");
21
+ var viewElementPrefix = "alliance-view-";
22
+ var viewElementSelector = "app-view";
23
+ var ViewElementType;
24
+ (function(ViewElementType2) {
25
+ ViewElementType2["Main"] = "main";
26
+ ViewElementType2["Aside"] = "aside";
27
+ ViewElementType2["Body"] = "body";
28
+ })(ViewElementType || (ViewElementType = {}));
29
+ function viewElementTag(appName) {
30
+ return `${viewElementPrefix}${appName}`;
31
+ }
32
+ __name(viewElementTag, "viewElementTag");
33
+ function registerViewElement(appName, onRender) {
34
+ let ViewElement = class ViewElement extends LitElement {
35
+ static {
36
+ __name(this, "ViewElement");
37
+ }
38
+ static styles = css`
39
+ .loader {
40
+ background-color: rgba(255, 255, 255, 0.4);
41
+ z-index: var(--layer-modal);
42
+ position: absolute;
43
+ inset: 0;
44
+ display: flex;
45
+ justify-content: center;
46
+ align-items: center;
47
+
48
+ > div {
49
+ display: inline-block;
50
+ position: relative;
51
+ width: 80px;
52
+ height: 80px;
53
+
54
+ > div {
55
+ animation: alliance-app-loader 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
56
+ transform-origin: 40px 40px;
57
+
58
+ &:after {
59
+ content: ' ';
60
+ display: block;
61
+ position: absolute;
62
+ width: 7px;
63
+ height: 7px;
64
+ border-radius: 50%;
65
+ background: var(--purple-850);
66
+ margin: -4px 0 0 -4px;
67
+ }
68
+ &:nth-child(1) {
69
+ animation-delay: -0.036s;
70
+ }
71
+ &:nth-child(1):after {
72
+ top: 63px;
73
+ left: 63px;
74
+ }
75
+ &:nth-child(2) {
76
+ animation-delay: -0.072s;
77
+ }
78
+ &:nth-child(2):after {
79
+ top: 68px;
80
+ left: 56px;
81
+ }
82
+ &:nth-child(3) {
83
+ animation-delay: -0.108s;
84
+ }
85
+ &:nth-child(3):after {
86
+ top: 71px;
87
+ left: 48px;
88
+ }
89
+ &:nth-child(4) {
90
+ animation-delay: -0.144s;
91
+ }
92
+ &:nth-child(4):after {
93
+ top: 72px;
94
+ left: 40px;
95
+ }
96
+ &:nth-child(5) {
97
+ animation-delay: -0.18s;
98
+ }
99
+ &:nth-child(5):after {
100
+ top: 71px;
101
+ left: 32px;
102
+ }
103
+ &:nth-child(6) {
104
+ animation-delay: -0.216s;
105
+ }
106
+ &:nth-child(6):after {
107
+ top: 68px;
108
+ left: 24px;
109
+ }
110
+ &:nth-child(7) {
111
+ animation-delay: -0.252s;
112
+ }
113
+ &:nth-child(7):after {
114
+ top: 63px;
115
+ left: 17px;
116
+ }
117
+ &:nth-child(8) {
118
+ animation-delay: -0.288s;
119
+ }
120
+ &:nth-child(8):after {
121
+ top: 56px;
122
+ left: 12px;
123
+ }
124
+ }
125
+ }
126
+ }
127
+ @keyframes alliance-app-loader {
128
+ 0% {
129
+ transform: rotate(0deg);
130
+ }
131
+ 100% {
132
+ transform: rotate(360deg);
133
+ }
134
+ }
135
+ `;
136
+ constructor() {
137
+ super();
138
+ this.appView = true;
139
+ this.loading = true;
140
+ this.mounted = false;
141
+ this.args = {};
142
+ this.app = appName;
143
+ this.capability = "launch";
144
+ this.complete = (result) => {
145
+ this.dispatchEvent(new CustomEvent("complete", {
146
+ detail: result
147
+ }));
148
+ };
149
+ }
150
+ init(props) {
151
+ for (const [key, value] of Object.entries(props)) {
152
+ if (value) {
153
+ this[key] = value;
154
+ }
155
+ }
156
+ }
157
+ async connectedCallback() {
158
+ super.connectedCallback();
159
+ if (!this.id) {
160
+ this.id = crypto.randomUUID();
161
+ }
162
+ await onRender(this);
163
+ this.loading = false;
164
+ this.mounted = true;
165
+ }
166
+ renderLoader() {
167
+ return html`
168
+ <div class="loader">
169
+ <div>
170
+ <div></div>
171
+ <div></div>
172
+ <div></div>
173
+ <div></div>
174
+ <div></div>
175
+ <div></div>
176
+ <div></div>
177
+ <div></div>
178
+ </div>
179
+ </div>
180
+ `;
181
+ }
182
+ renderTypeStyling() {
183
+ switch (this.type) {
184
+ case "body":
185
+ return html`
186
+ <style>
187
+ :host .app-loader {
188
+ display: none;
189
+ }
190
+ </style>
191
+ `;
192
+ case "aside":
193
+ return html`
194
+ <style>
195
+ :host {
196
+ height: 100vh;
197
+ width: auto;
198
+ z-index: 3;
199
+ position: fixed;
200
+ top: 0;
201
+ left: 0;
202
+ }
203
+ :host .app-loader {
204
+ display: none;
205
+ }
206
+ </style>
207
+ `;
208
+ default:
209
+ case "main":
210
+ return html`
211
+ <style>
212
+ :host {
213
+ position: relative;
214
+ display: block;
215
+ height: 100%;
216
+ width: 100%;
217
+ }
218
+ </style>
219
+ `;
220
+ }
221
+ }
222
+ render() {
223
+ return html`
224
+ ${this.renderTypeStyling()} ${this.loading ? this.renderLoader() : ""}
225
+ <slot></slot>
226
+ `;
227
+ }
228
+ };
229
+ _ts_decorate([
230
+ property({
231
+ type: Boolean,
232
+ attribute: viewElementSelector,
233
+ reflect: true
234
+ }),
235
+ _ts_metadata("design:type", Boolean)
236
+ ], ViewElement.prototype, "appView", void 0);
237
+ _ts_decorate([
238
+ property({
239
+ type: Boolean,
240
+ attribute: true,
241
+ reflect: true
242
+ }),
243
+ _ts_metadata("design:type", Object)
244
+ ], ViewElement.prototype, "mounted", void 0);
245
+ _ts_decorate([
246
+ property({
247
+ type: Boolean,
248
+ attribute: true,
249
+ reflect: true
250
+ }),
251
+ _ts_metadata("design:type", Object)
252
+ ], ViewElement.prototype, "loading", void 0);
253
+ _ts_decorate([
254
+ property({
255
+ type: String,
256
+ attribute: false,
257
+ reflect: true
258
+ }),
259
+ _ts_metadata("design:type", Object)
260
+ ], ViewElement.prototype, "app", void 0);
261
+ _ts_decorate([
262
+ property({
263
+ type: String,
264
+ attribute: true,
265
+ reflect: true
266
+ }),
267
+ _ts_metadata("design:type", Object)
268
+ ], ViewElement.prototype, "type", void 0);
269
+ _ts_decorate([
270
+ property({
271
+ type: String,
272
+ attribute: true,
273
+ reflect: true
274
+ }),
275
+ _ts_metadata("design:type", Object)
276
+ ], ViewElement.prototype, "capability", void 0);
277
+ _ts_decorate([
278
+ property({
279
+ type: Object,
280
+ attribute: true,
281
+ reflect: true
282
+ }),
283
+ _ts_metadata("design:type", Object)
284
+ ], ViewElement.prototype, "args", void 0);
285
+ define(viewElementTag(appName), ViewElement);
286
+ }
287
+ __name(registerViewElement, "registerViewElement");
288
+
289
+ export { ViewElementType, registerViewElement, viewElementPrefix, viewElementSelector, viewElementTag };
290
+ //# sourceMappingURL=out.js.map
291
+ //# sourceMappingURL=alliance-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/alliance-view/alliance-view.ts"],"names":["LitElement","css","html","property","viewElementPrefix","viewElementSelector","ViewElementType","viewElementTag","appName","registerViewElement","onRender","ViewElement","styles","constructor","appView","loading","mounted","args","app","capability","complete","result","dispatchEvent","CustomEvent","detail","init","props","key","value","Object","entries","connectedCallback","id","crypto","randomUUID","renderLoader","renderTypeStyling","type","render","Boolean","attribute","reflect","String","define"],"mappings":";;;;;;AAIA,SAASA,YAAYC,KAAKC,YAAY;AACtC,SAASC,gBAAgB;;;;;;;;;;;;;;;;;AAIlB,IAAMC,oBAAoB;AAE1B,IAAMC,sBAAsB;;UAEvBC,kBAAAA;;;;GAAAA,oBAAAA,kBAAAA,CAAAA,EAAAA;AAML,SAASC,eAAeC,SAAe;AAC1C,SAAO,GAAGJ,iBAAAA,GAAoBI,OAAAA;AAClC;AAFgBD;AAwBT,SAASE,oBACZD,SACAE,UAAqD;AAErD,MAAMC,cAAN,MAAMA,oBAAoBX,WAAAA;WAAAA;;;IACtB,OAAOY,SAASX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmGhBY,cAAc;AACV,YAAK;AACL,WAAKC,UAAU;AACf,WAAKC,UAAU;AACf,WAAKC,UAAU;AACf,WAAKC,OAAO,CAAC;AACb,WAAKC,MAAMV;AACX,WAAKW,aAAa;AAClB,WAAKC,WAAW,CAACC,WAAAA;AACb,aAAKC,cAAc,IAAIC,YAAY,YAAY;UAAEC,QAAQH;QAAO,CAAA,CAAA;MACpE;IACJ;IAEAI,KAAKC,OAAsB;AACvB,iBAAW,CAACC,KAAKC,KAAAA,KAAUC,OAAOC,QAAQJ,KAAAA,GAAQ;AAC9C,YAAIE,OAAO;AAEP,eAAKD,GAAAA,IAAOC;QAChB;MACJ;IACJ;IAyBA,MAAMG,oBAAoB;AACtB,YAAMA,kBAAAA;AACN,UAAI,CAAC,KAAKC,IAAI;AACV,aAAKA,KAAKC,OAAOC,WAAU;MAC/B;AACA,YAAMxB,SAAS,IAAI;AACnB,WAAKK,UAAU;AACf,WAAKC,UAAU;IACnB;IAEQmB,eAAe;AACnB,aAAOjC;;;;;;;;;;;;;;IAcX;IAEQkC,oBAAoB;AACxB,cAAQ,KAAKC,MAAI;QACb,KAAA;AACI,iBAAOnC;;;;;;;QAOX,KAAA;AACI,iBAAOA;;;;;;;;;;;;;;;QAeX;QACA,KAAA;AACI,iBAAOA;;;;;;;;;;MAUf;IACJ;IAEUoC,SAAS;AACf,aAAOpC;kBACD,KAAKkC,kBAAiB,CAAA,IAAM,KAAKrB,UAAU,KAAKoB,aAAY,IAAK,EAAA;;;IAG3E;EACJ;;IAjGKhC,SAAS;MAAEkC,MAAME;MAASC,WAAWnC;MAAqBoC,SAAS;IAAK,CAAA;;KA1HvE9B,YAAAA,WAAAA,WAAAA,MAAAA;;IA6HDR,SAAS;MAAEkC,MAAME;MAASC,WAAW;MAAMC,SAAS;IAAK,CAAA;;KA7HxD9B,YAAAA,WAAAA,WAAAA,MAAAA;;IAgIDR,SAAS;MAAEkC,MAAME;MAASC,WAAW;MAAMC,SAAS;IAAK,CAAA;;KAhIxD9B,YAAAA,WAAAA,WAAAA,MAAAA;;IAmIDR,SAAS;MAAEkC,MAAMK;MAAQF,WAAW;MAAOC,SAAS;IAAK,CAAA;;KAnIxD9B,YAAAA,WAAAA,OAAAA,MAAAA;;IAsIDR,SAAS;MAAEkC,MAAMK;MAAQF,WAAW;MAAMC,SAAS;IAAK,CAAA;;KAtIvD9B,YAAAA,WAAAA,QAAAA,MAAAA;;IAyIDR,SAAS;MAAEkC,MAAMK;MAAQF,WAAW;MAAMC,SAAS;IAAK,CAAA;;KAzIvD9B,YAAAA,WAAAA,cAAAA,MAAAA;;IA4IDR,SAAS;MAAEkC,MAAMR;MAAQW,WAAW;MAAMC,SAAS;IAAK,CAAA;;KA5IvD9B,YAAAA,WAAAA,QAAAA,MAAAA;AA6NNgC,SAAOpC,eAAeC,OAAAA,GAAUG,WAAAA;AACpC;AAlOgBF","sourcesContent":["import type {\n Promisable,\n SerializeableObject,\n} from '@telia-ace/alliance-internal-client-utilities';\nimport { LitElement, css, html } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { define } from '@/utils';\n\nexport const viewElementPrefix = 'alliance-view-';\n\nexport const viewElementSelector = 'app-view';\n\nexport enum ViewElementType {\n Main = 'main',\n Aside = 'aside',\n Body = 'body',\n}\n\nexport function viewElementTag(appName: string) {\n return `${viewElementPrefix}${appName}`;\n}\n\nexport type ViewInitProps = {\n app?: IViewElement['app'];\n capability?: IViewElement['capability'];\n id?: IViewElement['id'];\n args?: IViewElement['args'];\n type?: IViewElement['type'];\n complete?: IViewElement['complete'];\n};\n\nexport interface IViewElement extends LitElement {\n init: (props: ViewInitProps) => void;\n complete: (result: SerializeableObject | null) => void;\n app: string;\n capability: string;\n args: SerializeableObject;\n mounted: boolean;\n loading: boolean;\n type?: ViewElementType;\n}\n\nexport function registerViewElement(\n appName: string,\n onRender: (element: IViewElement) => Promisable<void>,\n) {\n class ViewElement extends LitElement implements IViewElement {\n static styles = css`\n .loader {\n background-color: rgba(255, 255, 255, 0.4);\n z-index: var(--layer-modal);\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n\n > div {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n\n > div {\n animation: alliance-app-loader 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n transform-origin: 40px 40px;\n\n &:after {\n content: ' ';\n display: block;\n position: absolute;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: var(--purple-850);\n margin: -4px 0 0 -4px;\n }\n &:nth-child(1) {\n animation-delay: -0.036s;\n }\n &:nth-child(1):after {\n top: 63px;\n left: 63px;\n }\n &:nth-child(2) {\n animation-delay: -0.072s;\n }\n &:nth-child(2):after {\n top: 68px;\n left: 56px;\n }\n &:nth-child(3) {\n animation-delay: -0.108s;\n }\n &:nth-child(3):after {\n top: 71px;\n left: 48px;\n }\n &:nth-child(4) {\n animation-delay: -0.144s;\n }\n &:nth-child(4):after {\n top: 72px;\n left: 40px;\n }\n &:nth-child(5) {\n animation-delay: -0.18s;\n }\n &:nth-child(5):after {\n top: 71px;\n left: 32px;\n }\n &:nth-child(6) {\n animation-delay: -0.216s;\n }\n &:nth-child(6):after {\n top: 68px;\n left: 24px;\n }\n &:nth-child(7) {\n animation-delay: -0.252s;\n }\n &:nth-child(7):after {\n top: 63px;\n left: 17px;\n }\n &:nth-child(8) {\n animation-delay: -0.288s;\n }\n &:nth-child(8):after {\n top: 56px;\n left: 12px;\n }\n }\n }\n }\n @keyframes alliance-app-loader {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `;\n\n constructor() {\n super();\n this.appView = true;\n this.loading = true;\n this.mounted = false;\n this.args = {};\n this.app = appName;\n this.capability = 'launch';\n this.complete = (result) => {\n this.dispatchEvent(new CustomEvent('complete', { detail: result }));\n };\n }\n\n init(props: ViewInitProps) {\n for (const [key, value] of Object.entries(props)) {\n if (value) {\n // @ts-ignore\n this[key] = value;\n }\n }\n }\n\n @property({ type: Boolean, attribute: viewElementSelector, reflect: true })\n private declare appView: boolean;\n\n @property({ type: Boolean, attribute: true, reflect: true })\n declare mounted: IViewElement['mounted'];\n\n @property({ type: Boolean, attribute: true, reflect: true })\n declare loading: IViewElement['loading'];\n\n @property({ type: String, attribute: false, reflect: true })\n declare app: IViewElement['app'];\n\n @property({ type: String, attribute: true, reflect: true })\n declare type: IViewElement['type'];\n\n @property({ type: String, attribute: true, reflect: true })\n declare capability: IViewElement['capability'];\n\n @property({ type: Object, attribute: true, reflect: true })\n declare args: IViewElement['args'];\n\n declare complete: IViewElement['complete'];\n\n async connectedCallback() {\n super.connectedCallback();\n if (!this.id) {\n this.id = crypto.randomUUID();\n }\n await onRender(this);\n this.loading = false;\n this.mounted = true;\n }\n\n private renderLoader() {\n return html`\n <div class=\"loader\">\n <div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n `;\n }\n\n private renderTypeStyling() {\n switch (this.type) {\n case ViewElementType.Body:\n return html`\n <style>\n :host .app-loader {\n display: none;\n }\n </style>\n `;\n case ViewElementType.Aside:\n return html`\n <style>\n :host {\n height: 100vh;\n width: auto;\n z-index: 3;\n position: fixed;\n top: 0;\n left: 0;\n }\n :host .app-loader {\n display: none;\n }\n </style>\n `;\n default:\n case ViewElementType.Main:\n return html`\n <style>\n :host {\n position: relative;\n display: block;\n height: 100%;\n width: 100%;\n }\n </style>\n `;\n }\n }\n\n protected render() {\n return html`\n ${this.renderTypeStyling()} ${this.loading ? this.renderLoader() : ''}\n <slot></slot>\n `;\n }\n }\n\n define(viewElementTag(appName), ViewElement);\n}\n"]}
@@ -0,0 +1,315 @@
1
+ import { layers, colors, borders, shadows, breakpoints, spacing } from './chunk-B6YHD7BN.js';
2
+ import { __name, define } from './chunk-NB6ODBZJ.js';
3
+ import { close } from '@teliads/components/icons';
4
+ import { LitElement, css, unsafeCSS, html } from 'lit';
5
+ import { property, state } from 'lit/decorators.js';
6
+ import { repeat } from 'lit/directives/repeat.js';
7
+
8
+ function _ts_decorate(decorators, target, key, desc) {
9
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
11
+ r = Reflect.decorate(decorators, target, key, desc);
12
+ else
13
+ for (var i = decorators.length - 1; i >= 0; i--)
14
+ if (d = decorators[i])
15
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17
+ }
18
+ __name(_ts_decorate, "_ts_decorate");
19
+ function _ts_metadata(k, v) {
20
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
21
+ return Reflect.metadata(k, v);
22
+ }
23
+ __name(_ts_metadata, "_ts_metadata");
24
+ var Modal = class extends LitElement {
25
+ static {
26
+ __name(this, "Modal");
27
+ }
28
+ constructor() {
29
+ super();
30
+ this.header = "";
31
+ this.actions = [];
32
+ this.required = false;
33
+ this.scrollMode = "outside";
34
+ this.hasSubHeader = false;
35
+ }
36
+ static styles = css`
37
+ :host {
38
+ display: block;
39
+ inset: 0;
40
+ z-index: ${unsafeCSS(parseInt(layers.modal) - 2)};
41
+ }
42
+
43
+ .backdrop {
44
+ inset: 0;
45
+ z-index: ${unsafeCSS(parseInt(layers.modal) - 1)};
46
+ background-color: ${unsafeCSS(colors.black)};
47
+ opacity: 0.3;
48
+ }
49
+
50
+ .container {
51
+ margin: 0 auto;
52
+ display: flex;
53
+ justify-content: center;
54
+ height: 100%;
55
+ width: 100%;
56
+ }
57
+
58
+ dialog {
59
+ background-color: ${unsafeCSS(colors.white)};
60
+ border-radius: ${unsafeCSS(borders.radiusLg)};
61
+ box-shadow: ${unsafeCSS(shadows.md)};
62
+ z-index: ${unsafeCSS(parseInt(layers.modal))};
63
+ max-width: ${unsafeCSS(breakpoints.breakpointLg)};
64
+ position: static;
65
+ padding: 0;
66
+ border: none;
67
+ }
68
+
69
+ .header {
70
+ position: relative;
71
+ display: flex;
72
+ align-items: center;
73
+ padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};
74
+ border-bottom: ${unsafeCSS(borders.widthXs)} solid ${unsafeCSS(colors.gray200)};
75
+ min-height: 40px;
76
+ }
77
+
78
+ .header telia-button {
79
+ position: absolute;
80
+ top: ${unsafeCSS(spacing.spacing20)};
81
+ right: ${unsafeCSS(spacing.spacing24)};
82
+ }
83
+
84
+ .sub-header {
85
+ padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};
86
+ border-bottom: ${unsafeCSS(borders.widthXs)} solid ${unsafeCSS(colors.gray200)};
87
+ display: none;
88
+ }
89
+
90
+ .body {
91
+ min-width: calc(${unsafeCSS(spacing.spacing128)} * 2);
92
+ }
93
+
94
+ .footer {
95
+ display: flex;
96
+ justify-content: flex-end;
97
+ gap: ${unsafeCSS(spacing.spacing16)};
98
+ }
99
+ `;
100
+ containStyling = () => {
101
+ if (!this.contain) {
102
+ return html`<style>
103
+ :host {
104
+ position: fixed;
105
+ }
106
+
107
+ .backdrop {
108
+ position: absolute;
109
+ }
110
+ </style>`;
111
+ }
112
+ return html`<style>
113
+ :host {
114
+ height: 500px;
115
+ position: static;
116
+ }
117
+ .backdrop {
118
+ position: absolute;
119
+ }
120
+ </style>`;
121
+ };
122
+ scrollStyling = () => {
123
+ if (this.scrollMode === "inside") {
124
+ return html`<style>
125
+ .container {
126
+ align-items: center;
127
+ }
128
+
129
+ dialog {
130
+ max-height: 80%;
131
+ display: flex;
132
+ flex-direction: column;
133
+ }
134
+
135
+ .body {
136
+ flex: 1;
137
+ padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};
138
+ height: 80%;
139
+ overflow-x: hidden;
140
+ overflow-y: auto;
141
+ }
142
+
143
+ .footer {
144
+ border-top: ${unsafeCSS(borders.widthXs)} solid ${unsafeCSS(colors.gray200)};
145
+ padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};
146
+ }
147
+ </style>`;
148
+ }
149
+ return html`<style>
150
+ .container {
151
+ overflow-x: hidden;
152
+ overflow-y: overlay;
153
+ align-items: flex-start;
154
+ }
155
+
156
+ dialog {
157
+ display: block;
158
+ margin: ${unsafeCSS(spacing.spacing128)} ${unsafeCSS(spacing.spacing24)};
159
+ }
160
+
161
+ .footer,
162
+ .body {
163
+ margin: ${unsafeCSS(spacing.spacing24)} 0;
164
+ padding: 0 ${unsafeCSS(spacing.spacing32)};
165
+ }
166
+ </style>`;
167
+ };
168
+ subHeaderStyling = () => {
169
+ if (this.hasSubHeader) {
170
+ return html`<style>
171
+ div.sub-header {
172
+ display: block;
173
+ }
174
+ </style>`;
175
+ }
176
+ };
177
+ closeButton = () => {
178
+ if (this.required) {
179
+ return "";
180
+ }
181
+ return html`<telia-button
182
+ size="sm"
183
+ variant="text"
184
+ data-testid="close-modal-button"
185
+ @click=${this.onCloseClick}
186
+ ><telia-icon size="md" svg="${close.svg}"
187
+ /></telia-button>`;
188
+ };
189
+ footer = () => {
190
+ if (!this.actions.length) {
191
+ return "";
192
+ }
193
+ return html`
194
+ <div class="footer">
195
+ ${repeat(this.actions, ({ disabled, variant, action, label }) => html`
196
+ <telia-button
197
+ disabled="${disabled ? "true" : "false"}"
198
+ variant="${variant || "primary"}"
199
+ size="sm"
200
+ @click=${() => this.action(action)}
201
+ data-testid="${action}-action-button"
202
+ >
203
+ ${label}
204
+ </telia-button>
205
+ `)}
206
+ </div>
207
+ `;
208
+ };
209
+ onBackdropClick = () => {
210
+ if (this.required) {
211
+ return;
212
+ }
213
+ return this.action("close");
214
+ };
215
+ onCloseClick = () => {
216
+ if (this.required) {
217
+ return;
218
+ }
219
+ return this.action("close");
220
+ };
221
+ onKeyDown = (event) => {
222
+ if (event.defaultPrevented) {
223
+ return;
224
+ }
225
+ if (!this.required && event.key === "Escape") {
226
+ this.action("close");
227
+ }
228
+ };
229
+ // The slotchange event is only triggered if slot changes content
230
+ // So if event is triggered, that means sub-header is populated and should be shown
231
+ onSubHeaderSlotChange = () => {
232
+ this.hasSubHeader = true;
233
+ };
234
+ connectedCallback() {
235
+ super.connectedCallback();
236
+ window.addEventListener("keydown", this.onKeyDown);
237
+ }
238
+ disconnectedCallback() {
239
+ window.removeEventListener("keydown", this.onKeyDown);
240
+ super.disconnectedCallback();
241
+ }
242
+ action = (action) => {
243
+ const event = new CustomEvent("action", {
244
+ bubbles: true,
245
+ composed: true,
246
+ detail: {
247
+ action
248
+ },
249
+ cancelable: true
250
+ });
251
+ return this.dispatchEvent(event);
252
+ };
253
+ render() {
254
+ return html`
255
+ ${this.containStyling()} ${this.scrollStyling()} ${this.subHeaderStyling()}
256
+ <div class="backdrop" @click=${this.onBackdropClick}></div>
257
+ <div class="container">
258
+ <dialog open>
259
+ <div class="header">
260
+ <telia-heading tag="h3" variant="title-100">${this.header}</telia-heading>
261
+ ${this.closeButton()}
262
+ </div>
263
+ <div class="sub-header">
264
+ <slot name="sub-header" @slotchange=${this.onSubHeaderSlotChange}></slot>
265
+ </div>
266
+ <div class="body">
267
+ <slot></slot>
268
+ </div>
269
+ ${this.footer()}
270
+ </dialog>
271
+ </div>
272
+ `;
273
+ }
274
+ };
275
+ _ts_decorate([
276
+ property({
277
+ type: String,
278
+ attribute: "header"
279
+ }),
280
+ _ts_metadata("design:type", String)
281
+ ], Modal.prototype, "header", void 0);
282
+ _ts_decorate([
283
+ property({
284
+ type: Array
285
+ }),
286
+ _ts_metadata("design:type", Array)
287
+ ], Modal.prototype, "actions", void 0);
288
+ _ts_decorate([
289
+ property({
290
+ type: Boolean,
291
+ attribute: "required"
292
+ }),
293
+ _ts_metadata("design:type", Boolean)
294
+ ], Modal.prototype, "required", void 0);
295
+ _ts_decorate([
296
+ property({
297
+ type: String,
298
+ attribute: "scroll-mode"
299
+ }),
300
+ _ts_metadata("design:type", String)
301
+ ], Modal.prototype, "scrollMode", void 0);
302
+ _ts_decorate([
303
+ state(),
304
+ _ts_metadata("design:type", Boolean)
305
+ ], Modal.prototype, "hasSubHeader", void 0);
306
+ _ts_decorate([
307
+ property({
308
+ type: Boolean,
309
+ attribute: "contain"
310
+ }),
311
+ _ts_metadata("design:type", Boolean)
312
+ ], Modal.prototype, "contain", void 0);
313
+ define("alliance-modal", Modal);
314
+ //# sourceMappingURL=out.js.map
315
+ //# sourceMappingURL=chunk-ADFC4JKF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/alliance-modal/alliance-modal.ts"],"names":["close","LitElement","css","html","unsafeCSS","property","state","repeat","Modal","constructor","header","actions","required","scrollMode","hasSubHeader","styles","parseInt","layers","modal","colors","black","white","borders","radiusLg","shadows","md","breakpoints","breakpointLg","spacing","spacing24","spacing32","widthXs","gray200","spacing20","spacing128","spacing16","containStyling","contain","scrollStyling","subHeaderStyling","closeButton","onCloseClick","svg","footer","length","disabled","variant","action","label","onBackdropClick","onKeyDown","event","defaultPrevented","key","onSubHeaderSlotChange","connectedCallback","window","addEventListener","disconnectedCallback","removeEventListener","CustomEvent","bubbles","composed","detail","cancelable","dispatchEvent","render","type","String","attribute","Array","Boolean","define"],"mappings":"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","sourcesContent":["import type { ButtonVariantType } from '@teliads/components/dist/types/types/ButtonVariant';\nimport { close } from '@teliads/components/icons';\nimport { LitElement, css, html, unsafeCSS } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport { define } from '@/utils';\nimport '@/voca/components/telia-button';\nimport '@/voca/components/telia-heading';\nimport '@/voca/components/telia-icon';\nimport { borders, breakpoints, colors, layers, shadows, spacing } from '@/voca/foundations';\n\nexport type Action = {\n variant: ButtonVariantType;\n label: string;\n action: string;\n disabled?: boolean;\n};\n\n/**\n * Event dispatched when clicking the close button, the backdrop, an action button or pressing escape.\n *\n * Event: `action`\n *\n * Detail: Object containing the property `action`.\n */\nexport type ActionEvent = CustomEvent<{ action: string }>;\n\nexport class Modal extends LitElement {\n constructor() {\n super();\n this.header = '';\n this.actions = [];\n this.required = false;\n this.scrollMode = 'outside';\n this.hasSubHeader = false;\n }\n\n static styles = css`\n :host {\n display: block;\n inset: 0;\n z-index: ${unsafeCSS(parseInt(layers.modal) - 2)};\n }\n\n .backdrop {\n inset: 0;\n z-index: ${unsafeCSS(parseInt(layers.modal) - 1)};\n background-color: ${unsafeCSS(colors.black)};\n opacity: 0.3;\n }\n\n .container {\n margin: 0 auto;\n display: flex;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n\n dialog {\n background-color: ${unsafeCSS(colors.white)};\n border-radius: ${unsafeCSS(borders.radiusLg)};\n box-shadow: ${unsafeCSS(shadows.md)};\n z-index: ${unsafeCSS(parseInt(layers.modal))};\n max-width: ${unsafeCSS(breakpoints.breakpointLg)};\n position: static;\n padding: 0;\n border: none;\n }\n\n .header {\n position: relative;\n display: flex;\n align-items: center;\n padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};\n border-bottom: ${unsafeCSS(borders.widthXs)} solid ${unsafeCSS(colors.gray200)};\n min-height: 40px;\n }\n\n .header telia-button {\n position: absolute;\n top: ${unsafeCSS(spacing.spacing20)};\n right: ${unsafeCSS(spacing.spacing24)};\n }\n\n .sub-header {\n padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};\n border-bottom: ${unsafeCSS(borders.widthXs)} solid ${unsafeCSS(colors.gray200)};\n display: none;\n }\n\n .body {\n min-width: calc(${unsafeCSS(spacing.spacing128)} * 2);\n }\n\n .footer {\n display: flex;\n justify-content: flex-end;\n gap: ${unsafeCSS(spacing.spacing16)};\n }\n `;\n\n @property({ type: String, attribute: 'header' })\n declare header: string;\n\n @property({ type: Array })\n declare actions: Action[];\n\n @property({ type: Boolean, attribute: 'required' })\n declare required: boolean;\n\n @property({ type: String, attribute: 'scroll-mode' })\n declare scrollMode: 'outside' | 'inside';\n\n @state()\n declare hasSubHeader: boolean;\n\n // Internal usage only\n // Used in Storybook to contain modal in story\n @property({ type: Boolean, attribute: 'contain' })\n declare contain?: boolean;\n\n containStyling = () => {\n if (!this.contain) {\n return html`<style>\n :host {\n position: fixed;\n }\n\n .backdrop {\n position: absolute;\n }\n </style>`;\n }\n\n return html`<style>\n :host {\n height: 500px;\n position: static;\n }\n .backdrop {\n position: absolute;\n }\n </style>`;\n };\n\n scrollStyling = () => {\n if (this.scrollMode === 'inside') {\n return html`<style>\n .container {\n align-items: center;\n }\n\n dialog {\n max-height: 80%;\n display: flex;\n flex-direction: column;\n }\n\n .body {\n flex: 1;\n padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};\n height: 80%;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .footer {\n border-top: ${unsafeCSS(borders.widthXs)} solid ${unsafeCSS(colors.gray200)};\n padding: ${unsafeCSS(spacing.spacing24)} ${unsafeCSS(spacing.spacing32)};\n }\n </style>`;\n }\n\n return html`<style>\n .container {\n overflow-x: hidden;\n overflow-y: overlay;\n align-items: flex-start;\n }\n\n dialog {\n display: block;\n margin: ${unsafeCSS(spacing.spacing128)} ${unsafeCSS(spacing.spacing24)};\n }\n\n .footer,\n .body {\n margin: ${unsafeCSS(spacing.spacing24)} 0;\n padding: 0 ${unsafeCSS(spacing.spacing32)};\n }\n </style>`;\n };\n\n subHeaderStyling = () => {\n if (this.hasSubHeader) {\n return html`<style>\n div.sub-header {\n display: block;\n }\n </style>`;\n }\n };\n\n closeButton = () => {\n if (this.required) {\n return '';\n }\n\n return html`<telia-button\n size=\"sm\"\n variant=\"text\"\n data-testid=\"close-modal-button\"\n @click=${this.onCloseClick}\n ><telia-icon size=\"md\" svg=\"${close.svg}\"\n /></telia-button>`;\n };\n\n footer = () => {\n if (!this.actions.length) {\n return '';\n }\n\n return html`\n <div class=\"footer\">\n ${repeat(\n this.actions,\n ({ disabled, variant, action, label }) => html`\n <telia-button\n disabled=\"${disabled ? 'true' : 'false'}\"\n variant=\"${variant || 'primary'}\"\n size=\"sm\"\n @click=${() => this.action(action)}\n data-testid=\"${action}-action-button\"\n >\n ${label}\n </telia-button>\n `,\n )}\n </div>\n `;\n };\n\n onBackdropClick = () => {\n if (this.required) {\n return;\n }\n\n return this.action('close');\n };\n\n onCloseClick = () => {\n if (this.required) {\n return;\n }\n\n return this.action('close');\n };\n\n onKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented) {\n return;\n }\n\n if (!this.required && event.key === 'Escape') {\n this.action('close');\n }\n };\n\n // The slotchange event is only triggered if slot changes content\n // So if event is triggered, that means sub-header is populated and should be shown\n onSubHeaderSlotChange = () => {\n this.hasSubHeader = true;\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('keydown', this.onKeyDown);\n }\n\n disconnectedCallback() {\n window.removeEventListener('keydown', this.onKeyDown);\n super.disconnectedCallback();\n }\n\n action = (action: string) => {\n const event: ActionEvent = new CustomEvent('action', {\n bubbles: true,\n composed: true,\n detail: { action },\n cancelable: true,\n });\n return this.dispatchEvent(event);\n };\n\n render() {\n return html`\n ${this.containStyling()} ${this.scrollStyling()} ${this.subHeaderStyling()}\n <div class=\"backdrop\" @click=${this.onBackdropClick}></div>\n <div class=\"container\">\n <dialog open>\n <div class=\"header\">\n <telia-heading tag=\"h3\" variant=\"title-100\">${this.header}</telia-heading>\n ${this.closeButton()}\n </div>\n <div class=\"sub-header\">\n <slot name=\"sub-header\" @slotchange=${this.onSubHeaderSlotChange}></slot>\n </div>\n <div class=\"body\">\n <slot></slot>\n </div>\n ${this.footer()}\n </dialog>\n </div>\n `;\n }\n}\n\ndefine('alliance-modal', Modal);\n"]}
@@ -0,0 +1,4 @@
1
+ export { borders, breakpoints, colors, layers, motion, shadows, spacing } from '@teliads/components/foundations';
2
+ export { default as focus } from '@teliads/components/foundations/focus/variables.json';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=chunk-B6YHD7BN.js.map