@tylertech/forge 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +26 -12
  2. package/dist/esm/accordion/index.js +5 -5
  3. package/dist/esm/app-bar/help-button/index.js +7 -7
  4. package/dist/esm/app-bar/index.js +13 -13
  5. package/dist/esm/app-bar/menu-button/index.js +4 -4
  6. package/dist/esm/app-bar/notification-button/index.js +4 -4
  7. package/dist/esm/app-bar/profile-button/index.js +6 -6
  8. package/dist/esm/app-bar/search/index.js +3 -3
  9. package/dist/esm/autocomplete/index.js +9 -9
  10. package/dist/esm/banner/index.js +4 -4
  11. package/dist/esm/bottom-sheet/index.js +4 -4
  12. package/dist/esm/busy-indicator/index.js +3 -2
  13. package/dist/esm/button/index.js +2 -1
  14. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  15. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  16. package/dist/esm/calendar/index.js +5 -5
  17. package/dist/esm/checkbox/index.js +1 -1
  18. package/dist/esm/chip-field/index.js +6 -6
  19. package/dist/esm/chips/chip/index.js +4 -4
  20. package/dist/esm/chips/chip-set/index.js +4 -4
  21. package/dist/esm/chips/index.js +5 -5
  22. package/dist/esm/chunks/{chunk.AYOZGYGO.js → chunk.3AK3VGRT.js} +2 -2
  23. package/dist/esm/chunks/{chunk.AYOZGYGO.js.map → chunk.3AK3VGRT.js.map} +0 -0
  24. package/dist/esm/chunks/{chunk.52F6VUCF.js → chunk.3VR7VHL5.js} +26 -2
  25. package/dist/esm/chunks/{chunk.52F6VUCF.js.map → chunk.3VR7VHL5.js.map} +2 -2
  26. package/dist/esm/chunks/{chunk.D4XU5MZN.js → chunk.47D77ELY.js} +2 -2
  27. package/dist/esm/chunks/{chunk.D4XU5MZN.js.map → chunk.47D77ELY.js.map} +0 -0
  28. package/dist/esm/chunks/{chunk.FBUQQD2T.js → chunk.4ZBBOR4H.js} +2 -2
  29. package/dist/esm/chunks/{chunk.FBUQQD2T.js.map → chunk.4ZBBOR4H.js.map} +0 -0
  30. package/dist/esm/chunks/{chunk.OQRMHHPB.js → chunk.5CZWANU6.js} +3 -3
  31. package/dist/esm/chunks/{chunk.OQRMHHPB.js.map → chunk.5CZWANU6.js.map} +0 -0
  32. package/dist/esm/chunks/{chunk.7KILTPJ6.js → chunk.5INCRYSV.js} +2 -2
  33. package/dist/esm/chunks/{chunk.7KILTPJ6.js.map → chunk.5INCRYSV.js.map} +0 -0
  34. package/dist/esm/chunks/{chunk.NQOD2XB3.js → chunk.5VNEDRVC.js} +3 -3
  35. package/dist/esm/chunks/{chunk.NQOD2XB3.js.map → chunk.5VNEDRVC.js.map} +0 -0
  36. package/dist/esm/chunks/{chunk.2FXYTBYG.js → chunk.7M3P4QES.js} +6 -6
  37. package/dist/esm/chunks/{chunk.2FXYTBYG.js.map → chunk.7M3P4QES.js.map} +0 -0
  38. package/dist/esm/chunks/{chunk.EA7XMXI5.js → chunk.B425FZOZ.js} +2 -2
  39. package/dist/esm/chunks/{chunk.EA7XMXI5.js.map → chunk.B425FZOZ.js.map} +0 -0
  40. package/dist/esm/chunks/{chunk.COF6DD6T.js → chunk.BORNGK7Q.js} +2 -2
  41. package/dist/esm/chunks/{chunk.COF6DD6T.js.map → chunk.BORNGK7Q.js.map} +1 -1
  42. package/dist/esm/chunks/{chunk.J6LOWXOG.js → chunk.C44LSSHS.js} +2 -2
  43. package/dist/esm/chunks/{chunk.J6LOWXOG.js.map → chunk.C44LSSHS.js.map} +0 -0
  44. package/dist/esm/chunks/{chunk.2LSEVYAC.js → chunk.D4VIYWFB.js} +2 -2
  45. package/dist/esm/chunks/{chunk.2LSEVYAC.js.map → chunk.D4VIYWFB.js.map} +0 -0
  46. package/dist/esm/chunks/{chunk.KRW2IAIU.js → chunk.DKHOY6QU.js} +2 -2
  47. package/dist/esm/chunks/{chunk.KRW2IAIU.js.map → chunk.DKHOY6QU.js.map} +0 -0
  48. package/dist/esm/chunks/{chunk.MAGJQ2PP.js → chunk.DVYPTR7X.js} +3 -3
  49. package/dist/esm/chunks/{chunk.MAGJQ2PP.js.map → chunk.DVYPTR7X.js.map} +0 -0
  50. package/dist/esm/chunks/{chunk.O6UHX6FK.js → chunk.DWURTRGM.js} +6 -6
  51. package/dist/esm/chunks/{chunk.O6UHX6FK.js.map → chunk.DWURTRGM.js.map} +0 -0
  52. package/dist/esm/chunks/{chunk.SKISCNSC.js → chunk.EQCPRLUV.js} +2 -2
  53. package/dist/esm/chunks/{chunk.SKISCNSC.js.map → chunk.EQCPRLUV.js.map} +0 -0
  54. package/dist/esm/chunks/{chunk.D5DMZ7ZG.js → chunk.FF2RETWV.js} +3 -3
  55. package/dist/esm/chunks/{chunk.D5DMZ7ZG.js.map → chunk.FF2RETWV.js.map} +0 -0
  56. package/dist/esm/chunks/{chunk.XEF6G5NS.js → chunk.H3WRHPWA.js} +3 -3
  57. package/dist/esm/chunks/{chunk.XEF6G5NS.js.map → chunk.H3WRHPWA.js.map} +0 -0
  58. package/dist/esm/chunks/{chunk.XIDZXGD4.js → chunk.HFELDK4X.js} +4 -4
  59. package/dist/esm/chunks/{chunk.XIDZXGD4.js.map → chunk.HFELDK4X.js.map} +0 -0
  60. package/dist/esm/chunks/{chunk.4BG22DGY.js → chunk.HNKH3ZP5.js} +38 -38
  61. package/dist/esm/chunks/{chunk.4BG22DGY.js.map → chunk.HNKH3ZP5.js.map} +0 -0
  62. package/dist/esm/chunks/{chunk.ETP6HSXO.js → chunk.HVD3BBQG.js} +2 -2
  63. package/dist/esm/chunks/{chunk.ETP6HSXO.js.map → chunk.HVD3BBQG.js.map} +0 -0
  64. package/dist/esm/chunks/{chunk.RR7HDQU6.js → chunk.HWWCD755.js} +3 -3
  65. package/dist/esm/chunks/{chunk.RR7HDQU6.js.map → chunk.HWWCD755.js.map} +0 -0
  66. package/dist/esm/chunks/{chunk.7FC5CPLE.js → chunk.I5JCM7RT.js} +2 -2
  67. package/dist/esm/chunks/{chunk.7FC5CPLE.js.map → chunk.I5JCM7RT.js.map} +0 -0
  68. package/dist/esm/chunks/{chunk.EARNUKJ2.js → chunk.IYOZSEZ3.js} +2 -2
  69. package/dist/esm/chunks/{chunk.EARNUKJ2.js.map → chunk.IYOZSEZ3.js.map} +0 -0
  70. package/dist/esm/chunks/{chunk.XO3XVXWW.js → chunk.KQB2BYBK.js} +3 -3
  71. package/dist/esm/chunks/{chunk.XO3XVXWW.js.map → chunk.KQB2BYBK.js.map} +0 -0
  72. package/dist/esm/chunks/{chunk.BOWCSPCH.js → chunk.L65L5VJ6.js} +3 -3
  73. package/dist/esm/chunks/{chunk.BOWCSPCH.js.map → chunk.L65L5VJ6.js.map} +0 -0
  74. package/dist/esm/chunks/{chunk.ST3R6JEE.js → chunk.LKUKESRQ.js} +2 -2
  75. package/dist/esm/chunks/{chunk.ST3R6JEE.js.map → chunk.LKUKESRQ.js.map} +0 -0
  76. package/dist/esm/chunks/{chunk.JQQOZMKQ.js → chunk.MSCWHFJZ.js} +5 -5
  77. package/dist/esm/chunks/{chunk.JQQOZMKQ.js.map → chunk.MSCWHFJZ.js.map} +0 -0
  78. package/dist/esm/chunks/{chunk.CGHKW6S6.js → chunk.NJRPAX7P.js} +4 -4
  79. package/dist/esm/chunks/{chunk.CGHKW6S6.js.map → chunk.NJRPAX7P.js.map} +0 -0
  80. package/dist/esm/chunks/{chunk.ZG4NZM2P.js → chunk.NL6CT7BU.js} +2 -2
  81. package/dist/esm/chunks/{chunk.ZG4NZM2P.js.map → chunk.NL6CT7BU.js.map} +0 -0
  82. package/dist/esm/chunks/{chunk.XGMOOPIE.js → chunk.O7DYWQD7.js} +4 -4
  83. package/dist/esm/chunks/{chunk.XGMOOPIE.js.map → chunk.O7DYWQD7.js.map} +0 -0
  84. package/dist/esm/chunks/{chunk.OJI6ZRYW.js → chunk.OZAKUOZA.js} +2 -2
  85. package/dist/esm/chunks/{chunk.OJI6ZRYW.js.map → chunk.OZAKUOZA.js.map} +0 -0
  86. package/dist/esm/chunks/{chunk.5NXVVSTU.js → chunk.P477KUJ4.js} +16 -1
  87. package/dist/esm/chunks/chunk.P477KUJ4.js.map +7 -0
  88. package/dist/esm/chunks/{chunk.FMMPWQKC.js → chunk.PZ25GQD2.js} +3 -3
  89. package/dist/esm/chunks/{chunk.FMMPWQKC.js.map → chunk.PZ25GQD2.js.map} +0 -0
  90. package/dist/esm/chunks/{chunk.NRI7SWVX.js → chunk.RF5UPII7.js} +6 -6
  91. package/dist/esm/chunks/{chunk.NRI7SWVX.js.map → chunk.RF5UPII7.js.map} +0 -0
  92. package/dist/esm/chunks/{chunk.3KCCCXWS.js → chunk.RMVJBNCY.js} +2 -2
  93. package/dist/esm/chunks/{chunk.3KCCCXWS.js.map → chunk.RMVJBNCY.js.map} +0 -0
  94. package/dist/esm/chunks/{chunk.ETQIBLKP.js → chunk.U7HKGOBR.js} +3 -3
  95. package/dist/esm/chunks/{chunk.ETQIBLKP.js.map → chunk.U7HKGOBR.js.map} +0 -0
  96. package/dist/esm/chunks/{chunk.7Y4NHCJH.js → chunk.UM3J4AZ7.js} +37 -3
  97. package/dist/esm/chunks/chunk.UM3J4AZ7.js.map +7 -0
  98. package/dist/esm/chunks/{chunk.AHQ6QX3J.js → chunk.V3FSZDTW.js} +10 -6
  99. package/dist/esm/chunks/chunk.V3FSZDTW.js.map +7 -0
  100. package/dist/esm/chunks/{chunk.P43Z3YAS.js → chunk.V6TRG2CM.js} +2 -2
  101. package/dist/esm/chunks/{chunk.P43Z3YAS.js.map → chunk.V6TRG2CM.js.map} +0 -0
  102. package/dist/esm/chunks/{chunk.JICZQ2BO.js → chunk.VEC77KBM.js} +2 -2
  103. package/dist/esm/chunks/{chunk.JICZQ2BO.js.map → chunk.VEC77KBM.js.map} +0 -0
  104. package/dist/esm/chunks/{chunk.ZABF5CI6.js → chunk.Y2ORADJS.js} +6 -6
  105. package/dist/esm/chunks/{chunk.ZABF5CI6.js.map → chunk.Y2ORADJS.js.map} +0 -0
  106. package/dist/esm/chunks/{chunk.KI3IHPS2.js → chunk.YKNYR3NX.js} +2 -2
  107. package/dist/esm/chunks/{chunk.KI3IHPS2.js.map → chunk.YKNYR3NX.js.map} +0 -0
  108. package/dist/esm/chunks/{chunk.BZPQIDQP.js → chunk.ZIFMMVW6.js} +3 -3
  109. package/dist/esm/chunks/{chunk.BZPQIDQP.js.map → chunk.ZIFMMVW6.js.map} +0 -0
  110. package/dist/esm/chunks/{chunk.4V5O2CPU.js → chunk.ZPABBQEA.js} +4 -4
  111. package/dist/esm/chunks/{chunk.4V5O2CPU.js.map → chunk.ZPABBQEA.js.map} +0 -0
  112. package/dist/esm/color-picker/index.js +4 -4
  113. package/dist/esm/core/index.js +6 -4
  114. package/dist/esm/core/utils/index.js +5 -3
  115. package/dist/esm/date-picker/index.js +7 -7
  116. package/dist/esm/date-range-picker/index.js +7 -7
  117. package/dist/esm/dialog/index.js +4 -4
  118. package/dist/esm/expansion-panel/index.js +4 -4
  119. package/dist/esm/file-picker/index.js +3 -3
  120. package/dist/esm/icon/index.js +2 -2
  121. package/dist/esm/icon-button/index.js +3 -3
  122. package/dist/esm/index.js +50 -48
  123. package/dist/esm/label-value/index.js +1 -1
  124. package/dist/esm/list-dropdown/index.js +3 -3
  125. package/dist/esm/menu/index.js +5 -5
  126. package/dist/esm/open-icon/index.js +3 -3
  127. package/dist/esm/paginator/index.js +12 -10
  128. package/dist/esm/profile-card/index.js +3 -2
  129. package/dist/esm/quantity-field/index.js +4 -4
  130. package/dist/esm/select/core/index.js +5 -5
  131. package/dist/esm/select/index.js +9 -9
  132. package/dist/esm/select/select/index.js +7 -7
  133. package/dist/esm/select/select-dropdown/index.js +7 -7
  134. package/dist/esm/slider/index.js +1 -1
  135. package/dist/esm/stepper/index.js +4 -4
  136. package/dist/esm/stepper/step/index.js +3 -3
  137. package/dist/esm/stepper/stepper/index.js +4 -4
  138. package/dist/esm/switch/index.js +1 -1
  139. package/dist/esm/table/index.js +5 -5
  140. package/dist/esm/tabs/index.js +4 -4
  141. package/dist/esm/tabs/tab-bar/index.js +4 -4
  142. package/dist/esm/time-picker/index.js +6 -6
  143. package/dist/esm/toast/index.js +5 -5
  144. package/esm/button/button.d.ts +2 -0
  145. package/esm/button/button.js +15 -0
  146. package/esm/core/utils/utils.d.ts +14 -0
  147. package/esm/core/utils/utils.js +32 -0
  148. package/esm/icon-button/icon-button-component-delegate.d.ts +8 -1
  149. package/esm/icon-button/icon-button-component-delegate.js +19 -0
  150. package/esm/icon-button/icon-button.d.ts +2 -0
  151. package/esm/icon-button/icon-button.js +17 -1
  152. package/esm/label-value/label-value.js +1 -1
  153. package/esm/paginator/paginator.js +4 -2
  154. package/package.json +1 -1
  155. package/styles/circular-progress/_mixins.scss +1 -1
  156. package/styles/label-value/_mixins.scss +189 -2
  157. package/styles/label-value/_variables.scss +5 -31
  158. package/styles/label-value/label-value.scss +1 -2
  159. package/dist/esm/chunks/chunk.5NXVVSTU.js.map +0 -7
  160. package/dist/esm/chunks/chunk.7Y4NHCJH.js.map +0 -7
  161. package/dist/esm/chunks/chunk.AHQ6QX3J.js.map +0 -7
@@ -9,28 +9,28 @@ import {
9
9
  ChipSetComponent,
10
10
  ChipSetFoundation,
11
11
  defineChipSetComponent
12
- } from "../chunks/chunk.EA7XMXI5.js";
12
+ } from "../chunks/chunk.B425FZOZ.js";
13
13
  import {
14
14
  defineChipComponent
15
- } from "../chunks/chunk.AYOZGYGO.js";
15
+ } from "../chunks/chunk.3AK3VGRT.js";
16
16
  import {
17
17
  CHIP_CONSTANTS,
18
18
  CHIP_SET_CONSTANTS,
19
19
  ChipAdapter,
20
20
  ChipComponent,
21
21
  ChipFoundation
22
- } from "../chunks/chunk.SKISCNSC.js";
22
+ } from "../chunks/chunk.EQCPRLUV.js";
23
23
  import "../chunks/chunk.C2MR3RDF.js";
24
24
  import "../chunks/chunk.4HQ5VELO.js";
25
25
  import "../chunks/chunk.5VKAVHLM.js";
26
26
  import "../chunks/chunk.GS2AXUCN.js";
27
- import "../chunks/chunk.P43Z3YAS.js";
27
+ import "../chunks/chunk.V6TRG2CM.js";
28
28
  import "../chunks/chunk.6KTLOA7V.js";
29
29
  import "../chunks/chunk.SKLCDWYQ.js";
30
30
  import "../chunks/chunk.HZISALRH.js";
31
31
  import "../chunks/chunk.WIYLQTSX.js";
32
- import "../chunks/chunk.52F6VUCF.js";
33
32
  import "../chunks/chunk.U6FJJGO3.js";
33
+ import "../chunks/chunk.3VR7VHL5.js";
34
34
  import "../chunks/chunk.WT4W2IFT.js";
35
35
  import "../chunks/chunk.KZATVOA6.js";
36
36
  import "../chunks/chunk.MMIZOYAS.js";
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  ChipComponent
8
- } from "./chunk.SKISCNSC.js";
8
+ } from "./chunk.EQCPRLUV.js";
9
9
  import {
10
10
  defineCustomElement
11
11
  } from "./chunk.K2PCTUVN.js";
@@ -18,4 +18,4 @@ function defineChipComponent() {
18
18
  export {
19
19
  defineChipComponent
20
20
  };
21
- //# sourceMappingURL=chunk.AYOZGYGO.js.map
21
+ //# sourceMappingURL=chunk.3AK3VGRT.js.map
@@ -250,6 +250,29 @@ function highlightTextHTML(label, highlightText) {
250
250
  }
251
251
  return void 0;
252
252
  }
253
+ function userInteractionListener(element, { capture = true, pointerenter = true, focusin = true } = {}) {
254
+ return new Promise((resolve) => {
255
+ const listenerOpts = { once: true, capture };
256
+ const handlePointerenter = () => {
257
+ if (focusin) {
258
+ element.removeEventListener("focusin", handleFocusin, listenerOpts);
259
+ }
260
+ resolve("pointerenter");
261
+ };
262
+ const handleFocusin = () => {
263
+ if (pointerenter) {
264
+ element.removeEventListener("pointerenter", handlePointerenter, listenerOpts);
265
+ }
266
+ resolve("focusin");
267
+ };
268
+ if (pointerenter) {
269
+ element.addEventListener("pointerenter", handlePointerenter, listenerOpts);
270
+ }
271
+ if (focusin) {
272
+ element.addEventListener("focusin", handleFocusin, listenerOpts);
273
+ }
274
+ });
275
+ }
253
276
 
254
277
  export {
255
278
  ISO_8601_REGEX,
@@ -268,6 +291,7 @@ export {
268
291
  tokenize12HourTimeString,
269
292
  isSupportedTimeFormat,
270
293
  tryCoerceTimeString,
271
- highlightTextHTML
294
+ highlightTextHTML,
295
+ userInteractionListener
272
296
  };
273
- //# sourceMappingURL=chunk.52F6VUCF.js.map
297
+ //# sourceMappingURL=chunk.3VR7VHL5.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/core/utils/date-utils.ts", "../../src/core/utils/svg-utils.ts", "../../src/core/utils/time-utils.ts", "../../src/core/utils/utils.ts"],
4
- "sourcesContent": ["import { isValidDate } from '@tylertech/forge-core';\n\nexport const ISO_8601_REGEX = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\nexport const ISO_TIMEZONE_REGEX = /a-z/i;\nconst FUTURE_YEAR_COERCION = 10; // The number of years in the future to coerce two-digit years into current century\n\n/**\n * Parses a date string value to a `Date` object in local time.\n * @param str The date string value.\n */\nexport function parseDateString(value: string): Date | null {\n value = value.replace(/_|\\s/g, ''); // Remove potential extraneous characters\n\n // We first check if this is a valid date in ISO 8601 format and return it if so\n if (ISO_8601_REGEX.test(value)) {\n const iso8601Date = new Date(value);\n\n // This is an ISO string, but does it have a timezone? If not, we add current timezone offset\n if (!ISO_TIMEZONE_REGEX.test(value)) {\n iso8601Date.setMinutes(iso8601Date.getMinutes() + iso8601Date.getTimezoneOffset());\n }\n\n if (isValidDate(iso8601Date)) {\n return iso8601Date;\n }\n }\n\n let values: string[] = [];\n\n // We accept dates with a \"/\" or \"-\" separator and in the format of MM/DD/YYYY\n if (value.indexOf('/') !== -1) {\n values = value.split('/');\n } else if (value.indexOf('-') !== -1) {\n values = value.split('-');\n } else if ((value.length === 6 || value.length === 8) && !isNaN(+value)) {\n values = [value.substring(0, 2), value.substring(2, 4), value.substring(4)];\n }\n\n const hasMonthDayYear = values.length === 3;\n let [month, day, year] = values;\n\n // Ensure are month and year values are coerced from 0 to 1 in case of incomplete entry\n if (month === '0') {\n month = '1';\n }\n if (day === '0') {\n day = '1';\n }\n\n // Trap for the case where only 3 digit years are entered\n if (typeof year === 'string' && year.length === 3) {\n year = year.padEnd(4, '0');\n }\n \n if (hasMonthDayYear) {\n const isValidMonthLength = month.length === 1 || month.length === 2;\n const isValidDayLength = day.length === 1 || day.length === 2;\n const isValidYearLength = year.length === 2 || year.length === 4;\n\n if (!isValidMonthLength || !isValidDayLength || !isValidYearLength) {\n return null;\n }\n } else {\n return null;\n }\n\n // Check if we need to coerce two-digit years to the four-digit equivalent\n if (year.length === 2) {\n const minYear = new Date().getFullYear() - (100 - FUTURE_YEAR_COERCION);\n const maxYear = new Date().getFullYear() + FUTURE_YEAR_COERCION;\n const minYearCentury = String(minYear).slice(0, 2);\n const maxYearCentury = String(maxYear).slice(0, 2);\n const normalizedMaxYear = +String(maxYear).slice(2);\n year = +year <= normalizedMaxYear ? `${maxYearCentury}${year}` : `${minYearCentury}${year}`;\n }\n\n let numMonth = +month;\n let numDay = +day;\n const numYear = +year;\n\n if (numMonth > 12) {\n numMonth = 12;\n }\n\n const maxDaysInMonth = new Date(numYear, numMonth, 0).getDate();\n\n if (numDay > maxDaysInMonth) {\n numDay = maxDaysInMonth;\n }\n\n const parsedDate = new Date(numYear, numMonth - 1, numDay, 0, 0, 0, 0);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\n/**\n * Formats a `Date` to a specified format.\n * @param str The date string value.\n */\nexport function formatDate(date: Date): string {\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const year = date.getFullYear();\n return [month, day, year].join('/');\n}\n\n/**\n * Determines if two date objects are equal.\n * \n * Note: Time values are ignored.\n * @param first The date to compare.\n * @param second The date to compare the first date to. \n * @returns A boolean whether the two dates are equivalent.\n */\nexport function isSameDate(first: Date | null, second: Date | null): boolean {\n if (!first && !second) {\n return true;\n } else if (!first || !second) {\n return false;\n } else if (!isValidDate(first) || !isValidDate(second)) {\n return false;\n }\n return first.setHours(0, 0, 0, 0) === second.setHours(0, 0, 0, 0);\n}\n\n/** \n * Returns the last date on a month.\n * \n * @param month The month.\n * @param year The year of the month, needed for February otherwise optional.\n * @returns The last date of the given month.\n */\nexport function getLastDateOfMonth(month: number, year?: number): Date {\n return new Date(year ?? 1970, month + 1, 0);\n}\n\n/**\n * Returns the number of days in a month.\n * \n * @param month The month to find the length of.\n * @param year The year to check within, needed for February otherwise optional.\n * @returns The number of days in the month.\n */\nexport function getMonthLength(month: number, year?: number): number {\n return getLastDateOfMonth(month, year).getDate();\n}\n", "/**\n * Creates an SVG element from a string.\n */\nexport function createSvgFromString(svgContent: string, defaultViewBox?: string): SVGSVGElement | null {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // Remove all non-svg child nodes\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n const svgElm = div.firstElementChild as SVGSVGElement;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg' && isSafeSvg(svgElm)) {\n // Check if a custom viewbox value was provided and use that if so\n if (defaultViewBox) {\n svgElm.setAttribute('viewBox', defaultViewBox);\n }\n\n // Force a default viewBox if one doesn't exist (this ensures our icon is scalable)\n if (!svgElm.hasAttribute('viewBox') && defaultViewBox) {\n svgElm.setAttribute('viewBox', defaultViewBox);\n }\n\n // Remove any height and width attributes to ensure that the icon is properly scalable\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n return svgElm;\n }\n\n return null;\n}\n\n/**\n * Determines if the provided element is a safe SVG to use.\n * @param el The element reference to test.\n */\nexport function isSafeSvg(el: Element): boolean {\n if (el.nodeType !== 1) {\n return true;\n }\n\n // Validate no <script> tags exist\n if (el.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n // Ensure there are no inline listeners\n const attributes = Array.from(el.attributes);\n for (const attr of attributes) {\n if (typeof attr.name === 'string' && attr.name.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n // Ensure all child nodes are valid\n const childNodes = Array.from(el.childNodes) as Element[];\n for (const node of childNodes) {\n if (!isSafeSvg(node)) {\n return false;\n }\n }\n\n return true;\n}\n", "export const TWENTY_FOUR_HOUR_TIME_REGEX = /^(0?[0-9]|1\\d|2[0-3]):([0-5]\\d)(:([0-5]\\d))?$/;\nexport const TWELVE_HOUR_TIME_REGEX = /^(0?[1-9]|1[0-2]):([0-5]\\d)(:([0-5]\\d))?\\s*([AaPp][Mm])?$/;\nexport const PARSEABLE_TIME_FORMAT = /^(\\d\\d?):?(\\d\\d?)(:?(\\d?\\d?))?\\s*([AaPp][Mm]?)?$/;\n\nexport function tokenize24HourTimeString(value: string): { hours: string; minutes: string; seconds: string } {\n const matches = value.match(TWENTY_FOUR_HOUR_TIME_REGEX) as RegExpMatchArray || [null, 0, 0, null, 0];\n const hours = matches[1];\n const minutes = matches[2];\n const seconds = matches[4];\n return { hours, minutes, seconds };\n}\n\nexport function tokenize12HourTimeString(value: string): { hours: string; minutes: string; seconds: string; meridiem: string } {\n const matches = value.match(TWELVE_HOUR_TIME_REGEX) as RegExpMatchArray || [null, 0, 0, null, 0, 'AM'];\n const hours = matches[1];\n const minutes = matches[2];\n const seconds = matches[4];\n const meridiem = matches[5];\n return { hours, minutes, seconds, meridiem };\n}\n\nexport function isSupportedTimeFormat(value: string): boolean {\n return TWENTY_FOUR_HOUR_TIME_REGEX.test(value) ||\n TWELVE_HOUR_TIME_REGEX.test(value);\n}\n\nexport function tryCoerceTimeString(str: string, use24HourTime: boolean, allowSeconds: boolean): string {\n str = str && typeof str === 'string' ? str.replace(/_|\\s/g, '') : '';\n if (/^\\s*$/.test(str)) {\n return '';\n }\n\n const matches = str.match(PARSEABLE_TIME_FORMAT);\n if (!matches) {\n return '';\n }\n\n let hoursStr = matches[1];\n let minutesStr = matches[2];\n let secondsStr = matches[4];\n let meridiem = matches[5];\n\n // Normalize the meridiem string\n if (use24HourTime) {\n meridiem = '';\n } else if (/[AaPp][Mm]/.test(meridiem)) {\n meridiem = meridiem.toUpperCase();\n } else {\n if (/^[AaPp]/.test(meridiem)) {\n if (meridiem.toLowerCase().startsWith('a')) {\n meridiem = 'AM';\n } else if (meridiem.toLowerCase().startsWith('p')) {\n meridiem = 'PM';\n }\n } else {\n meridiem = '';\n }\n }\n\n const hoursNum = +hoursStr || 0;\n const minutesNum = +minutesStr || 0;\n\n // Clamp and normalize hours\n const maxHours = !meridiem || use24HourTime ? 23 : 12;\n if (hoursNum >= maxHours) {\n hoursStr = String(maxHours);\n } else if (hoursNum < 0) {\n hoursStr = '00';\n }\n\n // Clamp and normalize minutes\n if (minutesStr !== undefined) {\n if (minutesNum > 59) {\n minutesStr = '59';\n } else if (minutesNum < 0) {\n minutesStr = '00';\n } else {\n minutesStr = minutesStr.padStart(2, '0');\n }\n }\n\n // Clamp and normalize seconds (if applicable)\n if (secondsStr !== undefined) {\n const secondsNum = +secondsStr || 0;\n if (secondsNum > 59) {\n secondsStr = '59';\n } else if (secondsNum < 0) {\n secondsStr = '00';\n } else {\n secondsStr = secondsStr.padStart(2, '0');\n }\n }\n\n // Build resulting time string\n let timeStr = hoursStr;\n if (minutesStr !== undefined) {\n timeStr += `:${minutesStr}`;\n if (secondsStr === undefined && allowSeconds) {\n secondsStr = '00';\n }\n }\n if (secondsStr !== undefined) {\n timeStr += `:${secondsStr}`;\n }\n if (meridiem) {\n timeStr += ` ${meridiem}`;\n }\n\n return timeStr;\n}\n", "/**\n * Highlights text in the given label by converting it to HTML and using a `<span>` tag to show the highlighted text within the original label.\n * @param label The full text.\n * @param highlightText The text to highlight.\n */\nexport function highlightTextHTML(label: string, highlightText: string): HTMLElement | undefined {\n const text = label.toLowerCase();\n const startIndex = text.indexOf(highlightText.toLowerCase());\n\n if (startIndex !== -1) {\n const endIndex = startIndex + highlightText.length;\n const wrapperSpan = document.createElement('span');\n const highlightSpan = document.createElement('span');\n\n highlightSpan.style.fontWeight = 'bold';\n highlightSpan.textContent = label.substring(startIndex, endIndex);\n \n wrapperSpan.appendChild(document.createTextNode(label.substring(0, startIndex)));\n wrapperSpan.appendChild(highlightSpan);\n wrapperSpan.appendChild(document.createTextNode(label.substring(endIndex)));\n \n return wrapperSpan;\n }\n\n return undefined;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { isValidDate } from '@tylertech/forge-core';\n\nexport const ISO_8601_REGEX = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\nexport const ISO_TIMEZONE_REGEX = /a-z/i;\nconst FUTURE_YEAR_COERCION = 10; // The number of years in the future to coerce two-digit years into current century\n\n/**\n * Parses a date string value to a `Date` object in local time.\n * @param str The date string value.\n */\nexport function parseDateString(value: string): Date | null {\n value = value.replace(/_|\\s/g, ''); // Remove potential extraneous characters\n\n // We first check if this is a valid date in ISO 8601 format and return it if so\n if (ISO_8601_REGEX.test(value)) {\n const iso8601Date = new Date(value);\n\n // This is an ISO string, but does it have a timezone? If not, we add current timezone offset\n if (!ISO_TIMEZONE_REGEX.test(value)) {\n iso8601Date.setMinutes(iso8601Date.getMinutes() + iso8601Date.getTimezoneOffset());\n }\n\n if (isValidDate(iso8601Date)) {\n return iso8601Date;\n }\n }\n\n let values: string[] = [];\n\n // We accept dates with a \"/\" or \"-\" separator and in the format of MM/DD/YYYY\n if (value.indexOf('/') !== -1) {\n values = value.split('/');\n } else if (value.indexOf('-') !== -1) {\n values = value.split('-');\n } else if ((value.length === 6 || value.length === 8) && !isNaN(+value)) {\n values = [value.substring(0, 2), value.substring(2, 4), value.substring(4)];\n }\n\n const hasMonthDayYear = values.length === 3;\n let [month, day, year] = values;\n\n // Ensure are month and year values are coerced from 0 to 1 in case of incomplete entry\n if (month === '0') {\n month = '1';\n }\n if (day === '0') {\n day = '1';\n }\n\n // Trap for the case where only 3 digit years are entered\n if (typeof year === 'string' && year.length === 3) {\n year = year.padEnd(4, '0');\n }\n \n if (hasMonthDayYear) {\n const isValidMonthLength = month.length === 1 || month.length === 2;\n const isValidDayLength = day.length === 1 || day.length === 2;\n const isValidYearLength = year.length === 2 || year.length === 4;\n\n if (!isValidMonthLength || !isValidDayLength || !isValidYearLength) {\n return null;\n }\n } else {\n return null;\n }\n\n // Check if we need to coerce two-digit years to the four-digit equivalent\n if (year.length === 2) {\n const minYear = new Date().getFullYear() - (100 - FUTURE_YEAR_COERCION);\n const maxYear = new Date().getFullYear() + FUTURE_YEAR_COERCION;\n const minYearCentury = String(minYear).slice(0, 2);\n const maxYearCentury = String(maxYear).slice(0, 2);\n const normalizedMaxYear = +String(maxYear).slice(2);\n year = +year <= normalizedMaxYear ? `${maxYearCentury}${year}` : `${minYearCentury}${year}`;\n }\n\n let numMonth = +month;\n let numDay = +day;\n const numYear = +year;\n\n if (numMonth > 12) {\n numMonth = 12;\n }\n\n const maxDaysInMonth = new Date(numYear, numMonth, 0).getDate();\n\n if (numDay > maxDaysInMonth) {\n numDay = maxDaysInMonth;\n }\n\n const parsedDate = new Date(numYear, numMonth - 1, numDay, 0, 0, 0, 0);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\n/**\n * Formats a `Date` to a specified format.\n * @param str The date string value.\n */\nexport function formatDate(date: Date): string {\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const year = date.getFullYear();\n return [month, day, year].join('/');\n}\n\n/**\n * Determines if two date objects are equal.\n * \n * Note: Time values are ignored.\n * @param first The date to compare.\n * @param second The date to compare the first date to. \n * @returns A boolean whether the two dates are equivalent.\n */\nexport function isSameDate(first: Date | null, second: Date | null): boolean {\n if (!first && !second) {\n return true;\n } else if (!first || !second) {\n return false;\n } else if (!isValidDate(first) || !isValidDate(second)) {\n return false;\n }\n return first.setHours(0, 0, 0, 0) === second.setHours(0, 0, 0, 0);\n}\n\n/** \n * Returns the last date on a month.\n * \n * @param month The month.\n * @param year The year of the month, needed for February otherwise optional.\n * @returns The last date of the given month.\n */\nexport function getLastDateOfMonth(month: number, year?: number): Date {\n return new Date(year ?? 1970, month + 1, 0);\n}\n\n/**\n * Returns the number of days in a month.\n * \n * @param month The month to find the length of.\n * @param year The year to check within, needed for February otherwise optional.\n * @returns The number of days in the month.\n */\nexport function getMonthLength(month: number, year?: number): number {\n return getLastDateOfMonth(month, year).getDate();\n}\n", "/**\n * Creates an SVG element from a string.\n */\nexport function createSvgFromString(svgContent: string, defaultViewBox?: string): SVGSVGElement | null {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // Remove all non-svg child nodes\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n const svgElm = div.firstElementChild as SVGSVGElement;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg' && isSafeSvg(svgElm)) {\n // Check if a custom viewbox value was provided and use that if so\n if (defaultViewBox) {\n svgElm.setAttribute('viewBox', defaultViewBox);\n }\n\n // Force a default viewBox if one doesn't exist (this ensures our icon is scalable)\n if (!svgElm.hasAttribute('viewBox') && defaultViewBox) {\n svgElm.setAttribute('viewBox', defaultViewBox);\n }\n\n // Remove any height and width attributes to ensure that the icon is properly scalable\n svgElm.removeAttribute('height');\n svgElm.removeAttribute('width');\n\n return svgElm;\n }\n\n return null;\n}\n\n/**\n * Determines if the provided element is a safe SVG to use.\n * @param el The element reference to test.\n */\nexport function isSafeSvg(el: Element): boolean {\n if (el.nodeType !== 1) {\n return true;\n }\n\n // Validate no <script> tags exist\n if (el.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n // Ensure there are no inline listeners\n const attributes = Array.from(el.attributes);\n for (const attr of attributes) {\n if (typeof attr.name === 'string' && attr.name.toLowerCase().startsWith('on')) {\n return false;\n }\n }\n\n // Ensure all child nodes are valid\n const childNodes = Array.from(el.childNodes) as Element[];\n for (const node of childNodes) {\n if (!isSafeSvg(node)) {\n return false;\n }\n }\n\n return true;\n}\n", "export const TWENTY_FOUR_HOUR_TIME_REGEX = /^(0?[0-9]|1\\d|2[0-3]):([0-5]\\d)(:([0-5]\\d))?$/;\nexport const TWELVE_HOUR_TIME_REGEX = /^(0?[1-9]|1[0-2]):([0-5]\\d)(:([0-5]\\d))?\\s*([AaPp][Mm])?$/;\nexport const PARSEABLE_TIME_FORMAT = /^(\\d\\d?):?(\\d\\d?)(:?(\\d?\\d?))?\\s*([AaPp][Mm]?)?$/;\n\nexport function tokenize24HourTimeString(value: string): { hours: string; minutes: string; seconds: string } {\n const matches = value.match(TWENTY_FOUR_HOUR_TIME_REGEX) as RegExpMatchArray || [null, 0, 0, null, 0];\n const hours = matches[1];\n const minutes = matches[2];\n const seconds = matches[4];\n return { hours, minutes, seconds };\n}\n\nexport function tokenize12HourTimeString(value: string): { hours: string; minutes: string; seconds: string; meridiem: string } {\n const matches = value.match(TWELVE_HOUR_TIME_REGEX) as RegExpMatchArray || [null, 0, 0, null, 0, 'AM'];\n const hours = matches[1];\n const minutes = matches[2];\n const seconds = matches[4];\n const meridiem = matches[5];\n return { hours, minutes, seconds, meridiem };\n}\n\nexport function isSupportedTimeFormat(value: string): boolean {\n return TWENTY_FOUR_HOUR_TIME_REGEX.test(value) ||\n TWELVE_HOUR_TIME_REGEX.test(value);\n}\n\nexport function tryCoerceTimeString(str: string, use24HourTime: boolean, allowSeconds: boolean): string {\n str = str && typeof str === 'string' ? str.replace(/_|\\s/g, '') : '';\n if (/^\\s*$/.test(str)) {\n return '';\n }\n\n const matches = str.match(PARSEABLE_TIME_FORMAT);\n if (!matches) {\n return '';\n }\n\n let hoursStr = matches[1];\n let minutesStr = matches[2];\n let secondsStr = matches[4];\n let meridiem = matches[5];\n\n // Normalize the meridiem string\n if (use24HourTime) {\n meridiem = '';\n } else if (/[AaPp][Mm]/.test(meridiem)) {\n meridiem = meridiem.toUpperCase();\n } else {\n if (/^[AaPp]/.test(meridiem)) {\n if (meridiem.toLowerCase().startsWith('a')) {\n meridiem = 'AM';\n } else if (meridiem.toLowerCase().startsWith('p')) {\n meridiem = 'PM';\n }\n } else {\n meridiem = '';\n }\n }\n\n const hoursNum = +hoursStr || 0;\n const minutesNum = +minutesStr || 0;\n\n // Clamp and normalize hours\n const maxHours = !meridiem || use24HourTime ? 23 : 12;\n if (hoursNum >= maxHours) {\n hoursStr = String(maxHours);\n } else if (hoursNum < 0) {\n hoursStr = '00';\n }\n\n // Clamp and normalize minutes\n if (minutesStr !== undefined) {\n if (minutesNum > 59) {\n minutesStr = '59';\n } else if (minutesNum < 0) {\n minutesStr = '00';\n } else {\n minutesStr = minutesStr.padStart(2, '0');\n }\n }\n\n // Clamp and normalize seconds (if applicable)\n if (secondsStr !== undefined) {\n const secondsNum = +secondsStr || 0;\n if (secondsNum > 59) {\n secondsStr = '59';\n } else if (secondsNum < 0) {\n secondsStr = '00';\n } else {\n secondsStr = secondsStr.padStart(2, '0');\n }\n }\n\n // Build resulting time string\n let timeStr = hoursStr;\n if (minutesStr !== undefined) {\n timeStr += `:${minutesStr}`;\n if (secondsStr === undefined && allowSeconds) {\n secondsStr = '00';\n }\n }\n if (secondsStr !== undefined) {\n timeStr += `:${secondsStr}`;\n }\n if (meridiem) {\n timeStr += ` ${meridiem}`;\n }\n\n return timeStr;\n}\n", "/**\n * Highlights text in the given label by converting it to HTML and using a `<span>` tag to show the highlighted text within the original label.\n * @param label The full text.\n * @param highlightText The text to highlight.\n */\nexport function highlightTextHTML(label: string, highlightText: string): HTMLElement | undefined {\n const text = label.toLowerCase();\n const startIndex = text.indexOf(highlightText.toLowerCase());\n\n if (startIndex !== -1) {\n const endIndex = startIndex + highlightText.length;\n const wrapperSpan = document.createElement('span');\n const highlightSpan = document.createElement('span');\n\n highlightSpan.style.fontWeight = 'bold';\n highlightSpan.textContent = label.substring(startIndex, endIndex);\n \n wrapperSpan.appendChild(document.createTextNode(label.substring(0, startIndex)));\n wrapperSpan.appendChild(highlightSpan);\n wrapperSpan.appendChild(document.createTextNode(label.substring(endIndex)));\n \n return wrapperSpan;\n }\n\n return undefined;\n}\n\n\n/**\n * Awaits user interaction on an element in the form of `pointerenter` or `focusin` to let a listener know\n * when the user has attempted to interact with the provided element.\n * \n * The listeners are only called once, and the other is removed after one of the listeners is called.\n * @param element The element to listen to.\n * @param capture Whether to use capturing listeners or not.\n * @returns A `Promise` that will be resolved when either of the listeners has executed.\n */\nexport function userInteractionListener(element: HTMLElement, { capture = true, pointerenter = true, focusin = true } = {}): Promise<'pointerenter' | 'focusin'> {\n return new Promise<'pointerenter' | 'focusin'>(resolve => {\n const listenerOpts: EventListenerOptions & { once: boolean } = { once: true, capture };\n \n const handlePointerenter = (): void => {\n if (focusin) {\n element.removeEventListener('focusin', handleFocusin, listenerOpts);\n }\n resolve('pointerenter');\n };\n \n const handleFocusin = (): void => {\n if (pointerenter) {\n element.removeEventListener('pointerenter', handlePointerenter, listenerOpts);\n }\n resolve('focusin');\n };\n\n if (pointerenter) {\n element.addEventListener('pointerenter', handlePointerenter, listenerOpts);\n }\n if (focusin) {\n element.addEventListener('focusin', handleFocusin, listenerOpts);\n }\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -29,7 +29,7 @@ import {
29
29
  import {
30
30
  ICON_CONSTANTS,
31
31
  IconRegistry
32
- } from "./chunk.P43Z3YAS.js";
32
+ } from "./chunk.V6TRG2CM.js";
33
33
  import {
34
34
  ICON_CLASS_NAME
35
35
  } from "./chunk.35U3UPDV.js";
@@ -1200,4 +1200,4 @@ export {
1200
1200
  ListDropdownAwareFoundation,
1201
1201
  CascadingListDropdownAwareFoundation
1202
1202
  };
1203
- //# sourceMappingURL=chunk.D4XU5MZN.js.map
1203
+ //# sourceMappingURL=chunk.47D77ELY.js.map
@@ -6,7 +6,7 @@
6
6
  import {
7
7
  STEP_CONSTANTS,
8
8
  StepComponent
9
- } from "./chunk.J6LOWXOG.js";
9
+ } from "./chunk.C44LSSHS.js";
10
10
  import {
11
11
  getEventPath
12
12
  } from "./chunk.EY57VTRF.js";
@@ -729,4 +729,4 @@ export {
729
729
  StepperComponent,
730
730
  defineStepperComponent
731
731
  };
732
- //# sourceMappingURL=chunk.FBUQQD2T.js.map
732
+ //# sourceMappingURL=chunk.4ZBBOR4H.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk.EWQENJ4W.js";
10
10
  import {
11
11
  IconButtonComponent
12
- } from "./chunk.7Y4NHCJH.js";
12
+ } from "./chunk.UM3J4AZ7.js";
13
13
  import {
14
14
  applyPassive,
15
15
  matches
@@ -31,7 +31,7 @@ import {
31
31
  import {
32
32
  IconComponent,
33
33
  IconRegistry
34
- } from "./chunk.P43Z3YAS.js";
34
+ } from "./chunk.V6TRG2CM.js";
35
35
  import {
36
36
  BaseAdapter
37
37
  } from "./chunk.KZATVOA6.js";
@@ -1332,4 +1332,4 @@ export {
1332
1332
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1333
1333
  * THE SOFTWARE.
1334
1334
  */
1335
- //# sourceMappingURL=chunk.OQRMHHPB.js.map
1335
+ //# sourceMappingURL=chunk.5CZWANU6.js.map
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  SELECT_CONSTANTS
8
- } from "./chunk.CGHKW6S6.js";
8
+ } from "./chunk.NJRPAX7P.js";
9
9
  import {
10
10
  FormFieldComponentDelegate
11
11
  } from "./chunk.HZISALRH.js";
@@ -69,4 +69,4 @@ var SelectComponentDelegate = class extends FormFieldComponentDelegate {
69
69
  export {
70
70
  SelectComponentDelegate
71
71
  };
72
- //# sourceMappingURL=chunk.7KILTPJ6.js.map
72
+ //# sourceMappingURL=chunk.5INCRYSV.js.map
@@ -11,11 +11,11 @@ import {
11
11
  } from "./chunk.Y2TDQIA4.js";
12
12
  import {
13
13
  ListDropdownAware
14
- } from "./chunk.ST3R6JEE.js";
14
+ } from "./chunk.LKUKESRQ.js";
15
15
  import {
16
16
  ListDropdown,
17
17
  ListDropdownAwareFoundation
18
- } from "./chunk.D4XU5MZN.js";
18
+ } from "./chunk.47D77ELY.js";
19
19
  import {
20
20
  POPUP_CONSTANTS
21
21
  } from "./chunk.5EEEKOOK.js";
@@ -837,4 +837,4 @@ export {
837
837
  BaseSelectComponent,
838
838
  BaseSelectAdapter
839
839
  };
840
- //# sourceMappingURL=chunk.NQOD2XB3.js.map
840
+ //# sourceMappingURL=chunk.5VNEDRVC.js.map
@@ -5,14 +5,14 @@
5
5
  */
6
6
  import {
7
7
  DialogComponent
8
- } from "./chunk.KI3IHPS2.js";
8
+ } from "./chunk.YKNYR3NX.js";
9
9
  import {
10
10
  TEXT_FIELD_CONSTANTS,
11
11
  TextFieldComponentDelegate
12
12
  } from "./chunk.Q4YMHFRY.js";
13
13
  import {
14
14
  ListDropdown
15
- } from "./chunk.D4XU5MZN.js";
15
+ } from "./chunk.47D77ELY.js";
16
16
  import {
17
17
  ListComponent
18
18
  } from "./chunk.4UKSUUTX.js";
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  ICON_BUTTON_CONSTANTS,
27
27
  IconButtonComponent
28
- } from "./chunk.7Y4NHCJH.js";
28
+ } from "./chunk.UM3J4AZ7.js";
29
29
  import {
30
30
  tylIconClose
31
31
  } from "./chunk.GS2AXUCN.js";
@@ -36,7 +36,7 @@ import {
36
36
  ICON_CONSTANTS,
37
37
  IconComponent,
38
38
  IconRegistry
39
- } from "./chunk.P43Z3YAS.js";
39
+ } from "./chunk.V6TRG2CM.js";
40
40
  import {
41
41
  FormFieldComponentDelegate
42
42
  } from "./chunk.HZISALRH.js";
@@ -50,7 +50,7 @@ import {
50
50
  tokenize12HourTimeString,
51
51
  tokenize24HourTimeString,
52
52
  tryCoerceTimeString
53
- } from "./chunk.52F6VUCF.js";
53
+ } from "./chunk.3VR7VHL5.js";
54
54
  import {
55
55
  BaseAdapter
56
56
  } from "./chunk.KZATVOA6.js";
@@ -1447,4 +1447,4 @@ export {
1447
1447
  TimePickerComponentDelegate,
1448
1448
  defineTimePickerComponent
1449
1449
  };
1450
- //# sourceMappingURL=chunk.2FXYTBYG.js.map
1450
+ //# sourceMappingURL=chunk.7M3P4QES.js.map
@@ -7,7 +7,7 @@ import {
7
7
  CHIP_CONSTANTS,
8
8
  CHIP_SET_CONSTANTS,
9
9
  ChipComponent
10
- } from "./chunk.SKISCNSC.js";
10
+ } from "./chunk.EQCPRLUV.js";
11
11
  import {
12
12
  BaseAdapter
13
13
  } from "./chunk.KZATVOA6.js";
@@ -197,4 +197,4 @@ export {
197
197
  ChipSetComponent,
198
198
  defineChipSetComponent
199
199
  };
200
- //# sourceMappingURL=chunk.EA7XMXI5.js.map
200
+ //# sourceMappingURL=chunk.B425FZOZ.js.map
@@ -175,7 +175,7 @@ var LabelValueFoundation = class {
175
175
 
176
176
  // dist/build/lib/staging/src/label-value/label-value.ts
177
177
  var template = '<template><div class="forge-label-value" part="root"><div class="forge-label-value__icon-container" part="icon-container"><slot name="icon"></slot></div><div class="forge-label-value__container" part="container"><div class="forge-label-value__label" part="label-container"><slot name="label"></slot></div><div class="forge-label-value__value" part="value-container"><slot name="value"></slot></div></div></div></template>';
178
- var styles = ".forge-label-value{display:-webkit-box;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--dense):not(.forge-label-value--roomy){min-height:3rem}:host(:not([single-line])) .forge-label-value--roomy:not(.forge-label-value--dense){min-height:3.5rem}:host(:not([single-line])) .forge-label-value--dense:not(.forge-label-value--roomy){min-height:3rem}:host([single-line]) .forge-label-value{min-height:1.5rem}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy){padding-top:5px}:host(:not([single-line])) .forge-label-value--roomy{padding-top:7px}.forge-label-value__icon-container{display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start}:host(:not([single-line])) .forge-label-value__container{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:start;align-items:flex-start}:host([single-line]) .forge-label-value__container{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}:host(:not([single-line])) .forge-label-value--align-center .forge-label-value__container{-webkit-box-align:center;align-items:center}:host(:not([single-line])) .forge-label-value--align-right .forge-label-value__container{-webkit-box-align:end;align-items:flex-end}.forge-label-value--ellipsis .forge-label-value__container{overflow:hidden}::slotted([slot=icon]){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));font-size:1.25rem!important;margin-right:8px}.forge-label-value__label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight,400);letter-spacing:.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform,inherit);line-height:1rem;color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy):not(.forge-label-value--dense) .forge-label-value__label{font-size:1rem}:host(:not([single-line])) .forge-label-value--roomy:not(.forge-label-value--dense) .forge-label-value__label{font-size:1rem}:host(:not([single-line])) .forge-label-value--dense:not(.forge-label-value--roomy) .forge-label-value__label{font-size:1rem}:host([single-line]) .forge-label-value__label{font-size:1rem}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy) .forge-label-value__label{-webkit-transform:translateX(-6.8%) translateY(-2%) scale(.8125);transform:translateX(-6.8%) translateY(-2%) scale(.8125)}:host(:not([single-line])) .forge-label-value--roomy .forge-label-value__label{-webkit-transform:translateX(-7.2%) translateY(1%) scale(.8125);transform:translateX(-7.2%) translateY(1%) scale(.8125)}:host([single-line]) .forge-label-value__label{margin-right:8px}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy) .forge-label-value__label{margin-bottom:-1px}:host(:not([single-line])) .forge-label-value--roomy .forge-label-value__label{margin-bottom:5px}:host(:not([single-line])) .forge-label-value__label{max-width:100%}:host([single-line]) .forge-label-value__label{-webkit-box-flex:0;flex:none}.forge-label-value--ellipsis .forge-label-value__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forge-label-value__value{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);line-height:1.25rem}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--dense):not(.forge-label-value--roomy) .forge-label-value__value{font-size:1rem}:host(:not([single-line])) .forge-label-value--roomy:not(.forge-label-value--dense) .forge-label-value__value{font-size:1rem}:host(:not([single-line])) .forge-label-value--dense:not(.forge-label-value--roomy) .forge-label-value__value{font-size:.875rem}:host(:not([single-line])) .forge-label-value__value{max-width:100%}:host([single-line]) .forge-label-value__value{-webkit-box-flex:0;flex:none}.forge-label-value--empty .forge-label-value__value{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-style:italic}.forge-label-value--ellipsis .forge-label-value__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host{display:block;min-width:0}:host([hidden]){display:none}";
178
+ var styles = ":host{display:block;min-width:0}:host([hidden]){display:none}.forge-label-value{display:-webkit-box;display:flex;min-height:3rem}.forge-label-value__container{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-flex:1;flex:1}.forge-label-value__icon-container{display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start}.forge-label-value__icon-container ::slotted([slot=icon]){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));font-size:1.25rem!important;margin-right:8px;margin-top:4px}.forge-label-value--align-center .forge-label-value__container{-webkit-box-align:center;align-items:center}.forge-label-value--align-right .forge-label-value__container{-webkit-box-align:end;align-items:flex-end}.forge-label-value__label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:13px;line-height:1.9rem}.forge-label-value__value{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-body1-font-size, 1rem);line-height:1.5rem;line-height:var(--mdc-typography-body1-line-height, 1.5rem);font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);line-height:.6rem}.forge-label-value--roomy{min-height:3.5rem}.forge-label-value--roomy .forge-label-value__label{line-height:2.1rem}.forge-label-value--roomy .forge-label-value__value{line-height:.6rem}.forge-label-value--roomy ::slotted([slot=icon]){margin-top:6px}.forge-label-value--dense{min-height:1.5rem}.forge-label-value--dense .forge-label-value__container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.forge-label-value--dense .forge-label-value__container .forge-label-value__label{line-height:1.25rem;margin-right:8px}.forge-label-value--dense .forge-label-value__container .forge-label-value__value{line-height:1.25rem;font-size:.875rem}.forge-label-value--dense ::slotted([slot=icon]){margin-top:2px}.forge-label-value--empty .forge-label-value__value{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-style:italic}.forge-label-value--ellipsis .forge-label-value__container{overflow:hidden}.forge-label-value--ellipsis .forge-label-value__container .forge-label-value__label,.forge-label-value--ellipsis .forge-label-value__container .forge-label-value__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}";
179
179
  var LabelValueComponent = class extends BaseComponent {
180
180
  constructor() {
181
181
  super();
@@ -290,4 +290,4 @@ export {
290
290
  LabelValueComponentDelegate,
291
291
  defineLabelValueComponent
292
292
  };
293
- //# sourceMappingURL=chunk.COF6DD6T.js.map
293
+ //# sourceMappingURL=chunk.BORNGK7Q.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/label-value/label-value-constants.ts", "../../src/label-value/label-value-adapter.ts", "../../src/label-value/label-value-foundation.ts", "../../src/label-value/label-value.ts", "../../src/label-value/label-value-component-delegate.ts", "../../src/label-value/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}label-value`;\n\nconst attributes = {\n EMPTY: 'empty',\n ELLIPSIS: 'ellipsis',\n DENSITY: 'density',\n ALIGN: 'align'\n};\n\nconst classes = {\n EMPTY: 'forge-label-value--empty',\n ELLIPSIS: 'forge-label-value--ellipsis',\n DENSE: 'forge-label-value--dense',\n ROOMY: 'forge-label-value--roomy',\n ALIGN_CENTER: 'forge-label-value--align-center',\n ALIGN_RIGHT: 'forge-label-value--align-right'\n};\n\nconst selectors = {\n ROOT: '.forge-label-value'\n};\n\nexport const LABEL_VALUE_CONSTANTS = {\n elementName,\n attributes,\n classes,\n selectors\n};\n\nexport type LabelValueAlignment = 'left' | 'center' | 'right';\nexport { FieldDensityType as LabelValueDensityType } from '../field/field-constants';\n", "import { getShadowElement, removeClass, toggleClass } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { ILabelValueComponent } from './label-value';\nimport { LabelValueAlignment, LABEL_VALUE_CONSTANTS } from './label-value-constants';\n\nexport interface ILabelValueAdapter extends IBaseAdapter {\n setEmpty(isEmpty: boolean): void;\n setEllipsis(ellipsis: boolean): void;\n setRoomy(isRoomy: boolean): void;\n setDense(isDense: boolean): void;\n setAlignment(value: LabelValueAlignment): void;\n}\n\nexport class LabelValueAdapter extends BaseAdapter<ILabelValueComponent> implements ILabelValueAdapter {\n private _rootElement: HTMLElement;\n\n constructor(component: ILabelValueComponent) {\n super(component);\n this._rootElement = getShadowElement(component, LABEL_VALUE_CONSTANTS.selectors.ROOT);\n }\n\n public setEmpty(isEmpty: boolean): void {\n if (isEmpty) {\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.EMPTY);\n } else {\n this._rootElement.classList.remove(LABEL_VALUE_CONSTANTS.classes.EMPTY);\n }\n }\n\n public setEllipsis(ellipsis: boolean): void {\n if (ellipsis) {\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.ELLIPSIS);\n } else {\n this._rootElement.classList.remove(LABEL_VALUE_CONSTANTS.classes.ELLIPSIS);\n }\n }\n\n public setRoomy(isRoomy: boolean): void {\n toggleClass(this._rootElement, isRoomy, LABEL_VALUE_CONSTANTS.classes.ROOMY);\n }\n\n public setDense(isDense: boolean): void {\n toggleClass(this._rootElement, isDense, LABEL_VALUE_CONSTANTS.classes.DENSE);\n }\n\n public setAlignment(value: LabelValueAlignment): void {\n removeClass([LABEL_VALUE_CONSTANTS.classes.ALIGN_CENTER, LABEL_VALUE_CONSTANTS.classes.ALIGN_RIGHT], this._rootElement);\n\n switch (value) {\n case 'center':\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.ALIGN_CENTER);\n break;\n case 'right':\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.ALIGN_RIGHT);\n break;\n }\n }\n}\n", "import { ICustomElementFoundation, isDefined } from '@tylertech/forge-core';\nimport { FieldDensityType } from '../field/field-constants';\n\nimport { ILabelValueAdapter } from './label-value-adapter';\nimport { LABEL_VALUE_CONSTANTS, LabelValueAlignment } from './label-value-constants';\n\nexport interface ILabelValueFoundation extends ICustomElementFoundation {\n empty: boolean;\n ellipsis: boolean;\n density: FieldDensityType;\n align: LabelValueAlignment;\n}\n\nexport class LabelValueFoundation implements ILabelValueFoundation {\n private _empty = false;\n private _ellipsis = false;\n private _density: FieldDensityType = 'default';\n private _align: LabelValueAlignment = 'left';\n\n constructor(private _adapter: ILabelValueAdapter) {}\n\n public initialize(): void {\n this._adapter.setEmpty(this._empty);\n this._adapter.setEllipsis(this._ellipsis);\n this._applyDensity();\n this._adapter.setAlignment(this._align);\n }\n\n private _applyDensity(): void {\n this._adapter.setRoomy(this._density === 'roomy');\n this._adapter.setDense(this._density === 'dense');\n }\n\n public get empty(): boolean {\n return this._empty;\n }\n public set empty(value: boolean) {\n if (this._empty !== value) {\n this._empty = value;\n this._adapter.setEmpty(this._empty);\n if (this._empty) {\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.EMPTY, '');\n } else {\n this._adapter.removeHostAttribute(LABEL_VALUE_CONSTANTS.attributes.EMPTY);\n }\n }\n }\n\n public get ellipsis(): boolean {\n return this._ellipsis;\n }\n public set ellipsis(value: boolean) {\n if (this._ellipsis !== value) {\n this._ellipsis = value;\n this._adapter.setEllipsis(this._ellipsis);\n if (this._ellipsis) {\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS, '');\n } else {\n this._adapter.removeHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS);\n }\n }\n }\n\n public get density(): FieldDensityType {\n return this._density;\n }\n public set density(value: FieldDensityType) {\n if (this._density !== value) {\n this._density = value;\n this._applyDensity();\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.DENSITY, this._density.toString());\n }\n }\n\n public get align(): LabelValueAlignment {\n return this._align;\n }\n public set align(value: LabelValueAlignment) {\n if (this._align !== value) {\n this._align = value;\n this._adapter.setAlignment(this._align);\n if (this._align) {\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ALIGN, this._align);\n } else {\n this._adapter.removeHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ALIGN);\n }\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { LabelValueAdapter } from './label-value-adapter';\nimport { LabelValueFoundation } from './label-value-foundation';\nimport { LABEL_VALUE_CONSTANTS, LabelValueAlignment } from './label-value-constants';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { FieldDensityType } from '../field/field-constants';\n\nconst template = '<template><div class=\\\"forge-label-value\\\" part=\\\"root\\\"><div class=\\\"forge-label-value__icon-container\\\" part=\\\"icon-container\\\"><slot name=\\\"icon\\\"></slot></div><div class=\\\"forge-label-value__container\\\" part=\\\"container\\\"><div class=\\\"forge-label-value__label\\\" part=\\\"label-container\\\"><slot name=\\\"label\\\"></slot></div><div class=\\\"forge-label-value__value\\\" part=\\\"value-container\\\"><slot name=\\\"value\\\"></slot></div></div></div></template>';\nconst styles = '.forge-label-value{display:-webkit-box;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--dense):not(.forge-label-value--roomy){min-height:3rem}:host(:not([single-line])) .forge-label-value--roomy:not(.forge-label-value--dense){min-height:3.5rem}:host(:not([single-line])) .forge-label-value--dense:not(.forge-label-value--roomy){min-height:3rem}:host([single-line]) .forge-label-value{min-height:1.5rem}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy){padding-top:5px}:host(:not([single-line])) .forge-label-value--roomy{padding-top:7px}.forge-label-value__icon-container{display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start}:host(:not([single-line])) .forge-label-value__container{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:start;align-items:flex-start}:host([single-line]) .forge-label-value__container{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}:host(:not([single-line])) .forge-label-value--align-center .forge-label-value__container{-webkit-box-align:center;align-items:center}:host(:not([single-line])) .forge-label-value--align-right .forge-label-value__container{-webkit-box-align:end;align-items:flex-end}.forge-label-value--ellipsis .forge-label-value__container{overflow:hidden}::slotted([slot=icon]){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));font-size:1.25rem!important;margin-right:8px}.forge-label-value__label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight,400);letter-spacing:.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform,inherit);line-height:1rem;color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy):not(.forge-label-value--dense) .forge-label-value__label{font-size:1rem}:host(:not([single-line])) .forge-label-value--roomy:not(.forge-label-value--dense) .forge-label-value__label{font-size:1rem}:host(:not([single-line])) .forge-label-value--dense:not(.forge-label-value--roomy) .forge-label-value__label{font-size:1rem}:host([single-line]) .forge-label-value__label{font-size:1rem}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy) .forge-label-value__label{-webkit-transform:translateX(-6.8%) translateY(-2%) scale(.8125);transform:translateX(-6.8%) translateY(-2%) scale(.8125)}:host(:not([single-line])) .forge-label-value--roomy .forge-label-value__label{-webkit-transform:translateX(-7.2%) translateY(1%) scale(.8125);transform:translateX(-7.2%) translateY(1%) scale(.8125)}:host([single-line]) .forge-label-value__label{margin-right:8px}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--roomy) .forge-label-value__label{margin-bottom:-1px}:host(:not([single-line])) .forge-label-value--roomy .forge-label-value__label{margin-bottom:5px}:host(:not([single-line])) .forge-label-value__label{max-width:100%}:host([single-line]) .forge-label-value__label{-webkit-box-flex:0;flex:none}.forge-label-value--ellipsis .forge-label-value__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forge-label-value__value{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);line-height:1.25rem}:host(:not([single-line])) .forge-label-value:not(.forge-label-value--dense):not(.forge-label-value--roomy) .forge-label-value__value{font-size:1rem}:host(:not([single-line])) .forge-label-value--roomy:not(.forge-label-value--dense) .forge-label-value__value{font-size:1rem}:host(:not([single-line])) .forge-label-value--dense:not(.forge-label-value--roomy) .forge-label-value__value{font-size:.875rem}:host(:not([single-line])) .forge-label-value__value{max-width:100%}:host([single-line]) .forge-label-value__value{-webkit-box-flex:0;flex:none}.forge-label-value--empty .forge-label-value__value{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-style:italic}.forge-label-value--ellipsis .forge-label-value__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host{display:block;min-width:0}:host([hidden]){display:none}';\n\nexport interface ILabelValueComponent extends IBaseComponent {\n empty: boolean;\n ellipsis: boolean;\n density: FieldDensityType;\n align: LabelValueAlignment;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-label-value': ILabelValueComponent;\n }\n}\n\n@CustomElement({\n name: LABEL_VALUE_CONSTANTS.elementName\n})\nexport class LabelValueComponent extends BaseComponent implements ILabelValueComponent {\n public static get observedAttributes(): string[] {\n return [\n LABEL_VALUE_CONSTANTS.attributes.EMPTY,\n LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS,\n LABEL_VALUE_CONSTANTS.attributes.DENSITY,\n LABEL_VALUE_CONSTANTS.attributes.ALIGN\n ];\n }\n\n private _foundation: LabelValueFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new LabelValueFoundation(new LabelValueAdapter(this));\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case LABEL_VALUE_CONSTANTS.attributes.EMPTY:\n this.empty = coerceBoolean(newValue);\n break;\n case LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS:\n this.ellipsis = coerceBoolean(newValue);\n break;\n case LABEL_VALUE_CONSTANTS.attributes.DENSITY:\n this.density = newValue as FieldDensityType;\n break;\n case LABEL_VALUE_CONSTANTS.attributes.ALIGN:\n this.align = newValue as LabelValueAlignment;\n break;\n }\n }\n\n /** Gets/sets the empty state. */\n @FoundationProperty()\n public empty: boolean;\n\n /** Gets/sets the wrap-content attribute. */\n @FoundationProperty()\n public ellipsis: boolean;\n\n /** Controls the density type. */\n @FoundationProperty()\n public density: FieldDensityType;\n\n /** Gets/sets the alignment. */\n @FoundationProperty()\n public align: LabelValueAlignment;\n}\n", "import { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { ILabelValueComponent } from '../label-value';\nimport { LABEL_VALUE_CONSTANTS } from './label-value-constants';\n\nexport type LabelValueComponentDelegateProps = Partial<ILabelValueComponent>;\nexport interface ILabelValueComponentDelegateOptions extends IBaseComponentDelegateOptions {\n labelText: string;\n valueText: string;\n iconElement?: HTMLElement;\n}\nexport interface ILabelValueComponentDelegateConfig extends IBaseComponentDelegateConfig<ILabelValueComponent, ILabelValueComponentDelegateOptions> {}\n\nexport class LabelValueComponentDelegate extends BaseComponentDelegate<ILabelValueComponent, ILabelValueComponentDelegateOptions> {\n private _labelElement: HTMLElement;\n private _valueElement: HTMLElement;\n\n constructor(config?: ILabelValueComponentDelegateConfig) {\n super(config);\n }\n\n public get labelElement(): HTMLElement {\n return this._labelElement;\n }\n\n public get valueElement(): HTMLElement {\n return this._valueElement;\n }\n\n public get labelText(): string {\n return this._labelElement.textContent ?? '';\n }\n public set labelText(value: string) {\n this._labelElement.textContent = value;\n }\n\n public get valueText(): string {\n return this._valueElement.textContent ?? '';\n }\n public set valueText(value: string) {\n this._valueElement.textContent = value;\n }\n\n protected _build(): ILabelValueComponent {\n return document.createElement(LABEL_VALUE_CONSTANTS.elementName);\n }\n\n protected override _configure(): void {\n if (this._config.options?.labelText) {\n this._labelElement = this._createTextElement(this._config.options.labelText, 'label');\n }\n if (this._config.options?.valueText) {\n this._valueElement = this._createTextElement(this._config.options.valueText, 'value');\n }\n if (this._config.options?.iconElement) {\n this._element.appendChild(this._config.options.iconElement);\n }\n }\n\n private _createTextElement(text: string, slot: string): HTMLElement {\n const span = document.createElement('span');\n span.textContent = text;\n span.slot = slot;\n this._element.appendChild(span);\n return span;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { LabelValueComponent } from './label-value';\n\nexport * from './label-value-adapter';\nexport * from './label-value-constants';\nexport * from './label-value-foundation';\nexport * from './label-value';\nexport * from './label-value-component-delegate';\n\nexport function defineLabelValueComponent(): void {\n defineCustomElement(LabelValueComponent);\n}\n"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}label-value`;\n\nconst attributes = {\n EMPTY: 'empty',\n ELLIPSIS: 'ellipsis',\n DENSITY: 'density',\n ALIGN: 'align'\n};\n\nconst classes = {\n EMPTY: 'forge-label-value--empty',\n ELLIPSIS: 'forge-label-value--ellipsis',\n DENSE: 'forge-label-value--dense',\n ROOMY: 'forge-label-value--roomy',\n ALIGN_CENTER: 'forge-label-value--align-center',\n ALIGN_RIGHT: 'forge-label-value--align-right'\n};\n\nconst selectors = {\n ROOT: '.forge-label-value'\n};\n\nexport const LABEL_VALUE_CONSTANTS = {\n elementName,\n attributes,\n classes,\n selectors\n};\n\nexport type LabelValueAlignment = 'left' | 'center' | 'right';\nexport { FieldDensityType as LabelValueDensityType } from '../field/field-constants';\n", "import { getShadowElement, removeClass, toggleClass } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { ILabelValueComponent } from './label-value';\nimport { LabelValueAlignment, LABEL_VALUE_CONSTANTS } from './label-value-constants';\n\nexport interface ILabelValueAdapter extends IBaseAdapter {\n setEmpty(isEmpty: boolean): void;\n setEllipsis(ellipsis: boolean): void;\n setRoomy(isRoomy: boolean): void;\n setDense(isDense: boolean): void;\n setAlignment(value: LabelValueAlignment): void;\n}\n\nexport class LabelValueAdapter extends BaseAdapter<ILabelValueComponent> implements ILabelValueAdapter {\n private _rootElement: HTMLElement;\n\n constructor(component: ILabelValueComponent) {\n super(component);\n this._rootElement = getShadowElement(component, LABEL_VALUE_CONSTANTS.selectors.ROOT);\n }\n\n public setEmpty(isEmpty: boolean): void {\n if (isEmpty) {\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.EMPTY);\n } else {\n this._rootElement.classList.remove(LABEL_VALUE_CONSTANTS.classes.EMPTY);\n }\n }\n\n public setEllipsis(ellipsis: boolean): void {\n if (ellipsis) {\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.ELLIPSIS);\n } else {\n this._rootElement.classList.remove(LABEL_VALUE_CONSTANTS.classes.ELLIPSIS);\n }\n }\n\n public setRoomy(isRoomy: boolean): void {\n toggleClass(this._rootElement, isRoomy, LABEL_VALUE_CONSTANTS.classes.ROOMY);\n }\n\n public setDense(isDense: boolean): void {\n toggleClass(this._rootElement, isDense, LABEL_VALUE_CONSTANTS.classes.DENSE);\n }\n\n public setAlignment(value: LabelValueAlignment): void {\n removeClass([LABEL_VALUE_CONSTANTS.classes.ALIGN_CENTER, LABEL_VALUE_CONSTANTS.classes.ALIGN_RIGHT], this._rootElement);\n\n switch (value) {\n case 'center':\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.ALIGN_CENTER);\n break;\n case 'right':\n this._rootElement.classList.add(LABEL_VALUE_CONSTANTS.classes.ALIGN_RIGHT);\n break;\n }\n }\n}\n", "import { ICustomElementFoundation, isDefined } from '@tylertech/forge-core';\nimport { FieldDensityType } from '../field/field-constants';\n\nimport { ILabelValueAdapter } from './label-value-adapter';\nimport { LABEL_VALUE_CONSTANTS, LabelValueAlignment } from './label-value-constants';\n\nexport interface ILabelValueFoundation extends ICustomElementFoundation {\n empty: boolean;\n ellipsis: boolean;\n density: FieldDensityType;\n align: LabelValueAlignment;\n}\n\nexport class LabelValueFoundation implements ILabelValueFoundation {\n private _empty = false;\n private _ellipsis = false;\n private _density: FieldDensityType = 'default';\n private _align: LabelValueAlignment = 'left';\n\n constructor(private _adapter: ILabelValueAdapter) {}\n\n public initialize(): void {\n this._adapter.setEmpty(this._empty);\n this._adapter.setEllipsis(this._ellipsis);\n this._applyDensity();\n this._adapter.setAlignment(this._align);\n }\n\n private _applyDensity(): void {\n this._adapter.setRoomy(this._density === 'roomy');\n this._adapter.setDense(this._density === 'dense');\n }\n\n public get empty(): boolean {\n return this._empty;\n }\n public set empty(value: boolean) {\n if (this._empty !== value) {\n this._empty = value;\n this._adapter.setEmpty(this._empty);\n if (this._empty) {\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.EMPTY, '');\n } else {\n this._adapter.removeHostAttribute(LABEL_VALUE_CONSTANTS.attributes.EMPTY);\n }\n }\n }\n\n public get ellipsis(): boolean {\n return this._ellipsis;\n }\n public set ellipsis(value: boolean) {\n if (this._ellipsis !== value) {\n this._ellipsis = value;\n this._adapter.setEllipsis(this._ellipsis);\n if (this._ellipsis) {\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS, '');\n } else {\n this._adapter.removeHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS);\n }\n }\n }\n\n public get density(): FieldDensityType {\n return this._density;\n }\n public set density(value: FieldDensityType) {\n if (this._density !== value) {\n this._density = value;\n this._applyDensity();\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.DENSITY, this._density.toString());\n }\n }\n\n public get align(): LabelValueAlignment {\n return this._align;\n }\n public set align(value: LabelValueAlignment) {\n if (this._align !== value) {\n this._align = value;\n this._adapter.setAlignment(this._align);\n if (this._align) {\n this._adapter.setHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ALIGN, this._align);\n } else {\n this._adapter.removeHostAttribute(LABEL_VALUE_CONSTANTS.attributes.ALIGN);\n }\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { LabelValueAdapter } from './label-value-adapter';\nimport { LabelValueFoundation } from './label-value-foundation';\nimport { LABEL_VALUE_CONSTANTS, LabelValueAlignment } from './label-value-constants';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { FieldDensityType } from '../field/field-constants';\n\nconst template = '<template><div class=\\\"forge-label-value\\\" part=\\\"root\\\"><div class=\\\"forge-label-value__icon-container\\\" part=\\\"icon-container\\\"><slot name=\\\"icon\\\"></slot></div><div class=\\\"forge-label-value__container\\\" part=\\\"container\\\"><div class=\\\"forge-label-value__label\\\" part=\\\"label-container\\\"><slot name=\\\"label\\\"></slot></div><div class=\\\"forge-label-value__value\\\" part=\\\"value-container\\\"><slot name=\\\"value\\\"></slot></div></div></div></template>';\nconst styles = ':host{display:block;min-width:0}:host([hidden]){display:none}.forge-label-value{display:-webkit-box;display:flex;min-height:3rem}.forge-label-value__container{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-flex:1;flex:1}.forge-label-value__icon-container{display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start}.forge-label-value__icon-container ::slotted([slot=icon]){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87));font-size:1.25rem!important;margin-right:8px;margin-top:4px}.forge-label-value--align-center .forge-label-value__container{-webkit-box-align:center;align-items:center}.forge-label-value--align-right .forge-label-value__container{-webkit-box-align:end;align-items:flex-end}.forge-label-value__label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.75rem;font-size:var(--mdc-typography-caption-font-size, .75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight,400);letter-spacing:.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, .0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-decoration:var(--mdc-typography-caption-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform,inherit);color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:13px;line-height:1.9rem}.forge-label-value__value{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-body1-font-size, 1rem);line-height:1.5rem;line-height:var(--mdc-typography-body1-line-height, 1.5rem);font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);line-height:.6rem}.forge-label-value--roomy{min-height:3.5rem}.forge-label-value--roomy .forge-label-value__label{line-height:2.1rem}.forge-label-value--roomy .forge-label-value__value{line-height:.6rem}.forge-label-value--roomy ::slotted([slot=icon]){margin-top:6px}.forge-label-value--dense{min-height:1.5rem}.forge-label-value--dense .forge-label-value__container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.forge-label-value--dense .forge-label-value__container .forge-label-value__label{line-height:1.25rem;margin-right:8px}.forge-label-value--dense .forge-label-value__container .forge-label-value__value{line-height:1.25rem;font-size:.875rem}.forge-label-value--dense ::slotted([slot=icon]){margin-top:2px}.forge-label-value--empty .forge-label-value__value{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-style:italic}.forge-label-value--ellipsis .forge-label-value__container{overflow:hidden}.forge-label-value--ellipsis .forge-label-value__container .forge-label-value__label,.forge-label-value--ellipsis .forge-label-value__container .forge-label-value__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}';\n\nexport interface ILabelValueComponent extends IBaseComponent {\n empty: boolean;\n ellipsis: boolean;\n density: FieldDensityType;\n align: LabelValueAlignment;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-label-value': ILabelValueComponent;\n }\n}\n\n@CustomElement({\n name: LABEL_VALUE_CONSTANTS.elementName\n})\nexport class LabelValueComponent extends BaseComponent implements ILabelValueComponent {\n public static get observedAttributes(): string[] {\n return [\n LABEL_VALUE_CONSTANTS.attributes.EMPTY,\n LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS,\n LABEL_VALUE_CONSTANTS.attributes.DENSITY,\n LABEL_VALUE_CONSTANTS.attributes.ALIGN\n ];\n }\n\n private _foundation: LabelValueFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new LabelValueFoundation(new LabelValueAdapter(this));\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case LABEL_VALUE_CONSTANTS.attributes.EMPTY:\n this.empty = coerceBoolean(newValue);\n break;\n case LABEL_VALUE_CONSTANTS.attributes.ELLIPSIS:\n this.ellipsis = coerceBoolean(newValue);\n break;\n case LABEL_VALUE_CONSTANTS.attributes.DENSITY:\n this.density = newValue as FieldDensityType;\n break;\n case LABEL_VALUE_CONSTANTS.attributes.ALIGN:\n this.align = newValue as LabelValueAlignment;\n break;\n }\n }\n\n /** Gets/sets the empty state. */\n @FoundationProperty()\n public empty: boolean;\n\n /** Gets/sets the wrap-content attribute. */\n @FoundationProperty()\n public ellipsis: boolean;\n\n /** Controls the density type. */\n @FoundationProperty()\n public density: FieldDensityType;\n\n /** Gets/sets the alignment. */\n @FoundationProperty()\n public align: LabelValueAlignment;\n}\n", "import { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { ILabelValueComponent } from '../label-value';\nimport { LABEL_VALUE_CONSTANTS } from './label-value-constants';\n\nexport type LabelValueComponentDelegateProps = Partial<ILabelValueComponent>;\nexport interface ILabelValueComponentDelegateOptions extends IBaseComponentDelegateOptions {\n labelText: string;\n valueText: string;\n iconElement?: HTMLElement;\n}\nexport interface ILabelValueComponentDelegateConfig extends IBaseComponentDelegateConfig<ILabelValueComponent, ILabelValueComponentDelegateOptions> {}\n\nexport class LabelValueComponentDelegate extends BaseComponentDelegate<ILabelValueComponent, ILabelValueComponentDelegateOptions> {\n private _labelElement: HTMLElement;\n private _valueElement: HTMLElement;\n\n constructor(config?: ILabelValueComponentDelegateConfig) {\n super(config);\n }\n\n public get labelElement(): HTMLElement {\n return this._labelElement;\n }\n\n public get valueElement(): HTMLElement {\n return this._valueElement;\n }\n\n public get labelText(): string {\n return this._labelElement.textContent ?? '';\n }\n public set labelText(value: string) {\n this._labelElement.textContent = value;\n }\n\n public get valueText(): string {\n return this._valueElement.textContent ?? '';\n }\n public set valueText(value: string) {\n this._valueElement.textContent = value;\n }\n\n protected _build(): ILabelValueComponent {\n return document.createElement(LABEL_VALUE_CONSTANTS.elementName);\n }\n\n protected override _configure(): void {\n if (this._config.options?.labelText) {\n this._labelElement = this._createTextElement(this._config.options.labelText, 'label');\n }\n if (this._config.options?.valueText) {\n this._valueElement = this._createTextElement(this._config.options.valueText, 'value');\n }\n if (this._config.options?.iconElement) {\n this._element.appendChild(this._config.options.iconElement);\n }\n }\n\n private _createTextElement(text: string, slot: string): HTMLElement {\n const span = document.createElement('span');\n span.textContent = text;\n span.slot = slot;\n this._element.appendChild(span);\n return span;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { LabelValueComponent } from './label-value';\n\nexport * from './label-value-adapter';\nexport * from './label-value-constants';\nexport * from './label-value-foundation';\nexport * from './label-value';\nexport * from './label-value-component-delegate';\n\nexport function defineLabelValueComponent(): void {\n defineCustomElement(LabelValueComponent);\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  IconComponent,
18
18
  IconRegistry
19
- } from "./chunk.P43Z3YAS.js";
19
+ } from "./chunk.V6TRG2CM.js";
20
20
  import {
21
21
  BaseAdapter
22
22
  } from "./chunk.KZATVOA6.js";
@@ -651,4 +651,4 @@ export {
651
651
  StepComponent,
652
652
  defineStepComponent
653
653
  };
654
- //# sourceMappingURL=chunk.J6LOWXOG.js.map
654
+ //# sourceMappingURL=chunk.C44LSSHS.js.map
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  IconComponent,
16
16
  IconRegistry
17
- } from "./chunk.P43Z3YAS.js";
17
+ } from "./chunk.V6TRG2CM.js";
18
18
  import {
19
19
  BaseAdapter
20
20
  } from "./chunk.KZATVOA6.js";
@@ -339,4 +339,4 @@ export {
339
339
  AppBarSearchComponent,
340
340
  defineAppBarSearchComponent
341
341
  };
342
- //# sourceMappingURL=chunk.2LSEVYAC.js.map
342
+ //# sourceMappingURL=chunk.D4VIYWFB.js.map
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  OPEN_ICON_CONSTANTS
8
- } from "./chunk.JICZQ2BO.js";
8
+ } from "./chunk.VEC77KBM.js";
9
9
  import {
10
10
  BaseAdapter
11
11
  } from "./chunk.KZATVOA6.js";
@@ -442,4 +442,4 @@ export {
442
442
  ExpansionPanelComponent,
443
443
  defineExpansionPanelComponent
444
444
  };
445
- //# sourceMappingURL=chunk.KRW2IAIU.js.map
445
+ //# sourceMappingURL=chunk.DKHOY6QU.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk.Q4YMHFRY.js";
12
12
  import {
13
13
  ICON_BUTTON_CONSTANTS
14
- } from "./chunk.7Y4NHCJH.js";
14
+ } from "./chunk.UM3J4AZ7.js";
15
15
  import {
16
16
  Platform
17
17
  } from "./chunk.BYN27JXZ.js";
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  formatDate,
23
23
  parseDateString
24
- } from "./chunk.52F6VUCF.js";
24
+ } from "./chunk.3VR7VHL5.js";
25
25
  import {
26
26
  BaseAdapter
27
27
  } from "./chunk.KZATVOA6.js";
@@ -961,4 +961,4 @@ export {
961
961
  BaseDatePickerAdapter,
962
962
  BaseDatePickerFoundation
963
963
  };
964
- //# sourceMappingURL=chunk.MAGJQ2PP.js.map
964
+ //# sourceMappingURL=chunk.DVYPTR7X.js.map
@@ -8,10 +8,10 @@ import {
8
8
  BaseDatePickerAdapter,
9
9
  BaseDatePickerComponent,
10
10
  BaseDatePickerFoundation
11
- } from "./chunk.MAGJQ2PP.js";
11
+ } from "./chunk.DVYPTR7X.js";
12
12
  import {
13
13
  CalendarComponent
14
- } from "./chunk.JQQOZMKQ.js";
14
+ } from "./chunk.MSCWHFJZ.js";
15
15
  import {
16
16
  CalendarDropdown
17
17
  } from "./chunk.YDPSV74L.js";
@@ -26,7 +26,7 @@ import {
26
26
  } from "./chunk.5EEEKOOK.js";
27
27
  import {
28
28
  IconButtonComponent
29
- } from "./chunk.7Y4NHCJH.js";
29
+ } from "./chunk.UM3J4AZ7.js";
30
30
  import {
31
31
  tylIconInsertInvitation
32
32
  } from "./chunk.GS2AXUCN.js";
@@ -36,7 +36,7 @@ import {
36
36
  import {
37
37
  IconComponent,
38
38
  IconRegistry
39
- } from "./chunk.P43Z3YAS.js";
39
+ } from "./chunk.V6TRG2CM.js";
40
40
  import {
41
41
  FormFieldComponentDelegate
42
42
  } from "./chunk.HZISALRH.js";
@@ -45,7 +45,7 @@ import {
45
45
  } from "./chunk.WIYLQTSX.js";
46
46
  import {
47
47
  isSameDate
48
- } from "./chunk.52F6VUCF.js";
48
+ } from "./chunk.3VR7VHL5.js";
49
49
  import {
50
50
  COMPONENT_NAME_PREFIX,
51
51
  CustomElement
@@ -460,4 +460,4 @@ export {
460
460
  DatePickerComponentDelegate,
461
461
  defineDatePickerComponent
462
462
  };
463
- //# sourceMappingURL=chunk.O6UHX6FK.js.map
463
+ //# sourceMappingURL=chunk.DWURTRGM.js.map