@ifsworld/granite-components 4.3.0 → 5.0.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 (291) hide show
  1. package/README.md +117 -4
  2. package/esm2020/ifsworld-granite-components.mjs +5 -0
  3. package/esm2020/index.mjs +48 -0
  4. package/esm2020/lib/arrange-grid/arrange-grid-item.component.mjs +44 -0
  5. package/esm2020/lib/arrange-grid/arrange-grid.component.mjs +125 -0
  6. package/esm2020/lib/arrange-grid/arrange-grid.module.mjs +19 -0
  7. package/esm2020/lib/badge/badge.component.mjs +39 -0
  8. package/esm2020/lib/badge/badge.module.mjs +18 -0
  9. package/esm2020/lib/badge/testing/badge.harness.mjs +25 -0
  10. package/esm2020/lib/button/button.component.mjs +89 -0
  11. package/esm2020/lib/button/button.module.mjs +16 -0
  12. package/esm2020/lib/checkbox/checkbox-group.component.mjs +17 -0
  13. package/esm2020/lib/checkbox/checkbox.component.mjs +96 -0
  14. package/esm2020/lib/checkbox/checkbox.module.mjs +17 -0
  15. package/esm2020/lib/core/animation.mjs +34 -0
  16. package/esm2020/lib/core/client-environment.mjs +20 -0
  17. package/esm2020/lib/core/common-behaviors/disabled.mjs +27 -0
  18. package/esm2020/lib/core/core.module.mjs +36 -0
  19. package/esm2020/lib/core/devices/client-input-desktop.directive.mjs +29 -0
  20. package/esm2020/lib/core/devices/client-input-touch.directive.mjs +29 -0
  21. package/esm2020/lib/core/devices/client-output-desktop.directive.mjs +29 -0
  22. package/esm2020/lib/core/devices/client-output-touch.directive.mjs +29 -0
  23. package/esm2020/lib/core/pipes/pure-pipes.module.mjs +16 -0
  24. package/esm2020/lib/core/pipes/title.pipe.mjs +21 -0
  25. package/esm2020/lib/core/radio-checkbox-base.mjs +19 -0
  26. package/esm2020/lib/core/theme.library.mjs +59 -0
  27. package/esm2020/lib/core/types.mjs +2 -0
  28. package/esm2020/lib/grid/grid.component.mjs +128 -0
  29. package/esm2020/lib/grid/grid.module.mjs +18 -0
  30. package/esm2020/lib/icon/icon.component.mjs +43 -0
  31. package/esm2020/lib/icon/icon.module.mjs +16 -0
  32. package/esm2020/lib/input-field/input-field.component.mjs +160 -0
  33. package/esm2020/lib/input-field/input-field.module.mjs +20 -0
  34. package/esm2020/lib/menu/divider.directive.mjs +23 -0
  35. package/esm2020/lib/menu/menu-base.mjs +347 -0
  36. package/esm2020/lib/menu/menu-desktop-animations.mjs +23 -0
  37. package/esm2020/lib/menu/menu-errors.mjs +37 -0
  38. package/esm2020/lib/menu/menu-item.component.mjs +91 -0
  39. package/esm2020/lib/menu/menu-panel.mjs +7 -0
  40. package/esm2020/lib/menu/menu-positions.mjs +9 -0
  41. package/esm2020/lib/menu/menu-touch-animations.mjs +137 -0
  42. package/esm2020/lib/menu/menu-touch-close.component.mjs +13 -0
  43. package/esm2020/lib/menu/menu-touch-title.component.mjs +59 -0
  44. package/esm2020/lib/menu/menu-trigger-for.directive.mjs +702 -0
  45. package/esm2020/lib/menu/menu.component.mjs +30 -0
  46. package/esm2020/lib/menu/menu.module.mjs +55 -0
  47. package/esm2020/lib/menu/testing/menu.harness.mjs +109 -0
  48. package/esm2020/lib/menu/title.directive.mjs +17 -0
  49. package/esm2020/lib/radio-button/radio-button.component.mjs +118 -0
  50. package/esm2020/lib/radio-button/radio-button.module.mjs +17 -0
  51. package/esm2020/lib/radio-button/radio-group.component.mjs +17 -0
  52. package/esm2020/lib/table/cell/cell.mjs +15 -0
  53. package/esm2020/lib/table/cell/table-data-cell.component.mjs +26 -0
  54. package/esm2020/lib/table/cell/table-header-cell.component.mjs +12 -0
  55. package/esm2020/lib/table/column/table-column.directive.mjs +23 -0
  56. package/esm2020/lib/table/table-constants.library.mjs +4 -0
  57. package/esm2020/lib/table/table.component.mjs +36 -0
  58. package/esm2020/lib/table/table.module.mjs +32 -0
  59. package/esm2020/lib/toggle-switch/toggle-switch.component.mjs +96 -0
  60. package/esm2020/lib/toggle-switch/toggle-switch.module.mjs +16 -0
  61. package/fesm2015/ifsworld-granite-components.mjs +3145 -0
  62. package/fesm2015/ifsworld-granite-components.mjs.map +1 -0
  63. package/fesm2020/ifsworld-granite-components.mjs +3103 -0
  64. package/fesm2020/ifsworld-granite-components.mjs.map +1 -0
  65. package/ifsworld-granite-components.d.ts +1 -8
  66. package/lib/arrange-grid/arrange-grid-item.component.d.ts +3 -0
  67. package/lib/arrange-grid/arrange-grid.component.d.ts +3 -0
  68. package/lib/arrange-grid/arrange-grid.module.d.ts +7 -0
  69. package/lib/badge/badge.component.d.ts +3 -0
  70. package/lib/badge/badge.module.d.ts +6 -0
  71. package/lib/button/button.component.d.ts +5 -0
  72. package/lib/button/button.module.d.ts +5 -0
  73. package/lib/checkbox/checkbox-group.component.d.ts +3 -0
  74. package/lib/checkbox/checkbox.component.d.ts +3 -0
  75. package/lib/checkbox/checkbox.module.d.ts +6 -0
  76. package/lib/core/core.module.d.ts +8 -0
  77. package/lib/core/devices/client-input-desktop.directive.d.ts +3 -0
  78. package/lib/core/devices/client-input-touch.directive.d.ts +3 -0
  79. package/lib/core/devices/client-output-desktop.directive.d.ts +3 -0
  80. package/lib/core/devices/client-output-touch.directive.d.ts +3 -0
  81. package/lib/core/pipes/pure-pipes.module.d.ts +5 -0
  82. package/lib/core/pipes/title.pipe.d.ts +3 -0
  83. package/lib/core/radio-checkbox-base.d.ts +3 -0
  84. package/lib/grid/grid.component.d.ts +5 -0
  85. package/lib/grid/grid.module.d.ts +6 -0
  86. package/lib/icon/icon.component.d.ts +3 -0
  87. package/lib/icon/icon.module.d.ts +5 -0
  88. package/lib/input-field/input-field.component.d.ts +3 -0
  89. package/lib/input-field/input-field.module.d.ts +8 -0
  90. package/lib/menu/divider.directive.d.ts +3 -0
  91. package/lib/menu/menu-base.d.ts +190 -0
  92. package/lib/menu/menu-item.component.d.ts +3 -0
  93. package/lib/menu/menu-touch-close.component.d.ts +3 -0
  94. package/lib/menu/menu-touch-title.component.d.ts +4 -1
  95. package/lib/menu/menu-trigger-for.directive.d.ts +4 -1
  96. package/lib/menu/menu.component.d.ts +4 -187
  97. package/lib/menu/menu.module.d.ts +15 -0
  98. package/lib/menu/title.directive.d.ts +3 -0
  99. package/lib/radio-button/radio-button.component.d.ts +4 -1
  100. package/lib/radio-button/radio-button.module.d.ts +6 -0
  101. package/lib/radio-button/radio-group.component.d.ts +3 -0
  102. package/lib/table/cell/cell.d.ts +3 -0
  103. package/lib/table/cell/table-data-cell.component.d.ts +3 -0
  104. package/lib/table/cell/table-header-cell.component.d.ts +3 -0
  105. package/lib/table/column/table-column.directive.d.ts +3 -0
  106. package/lib/table/table.component.d.ts +3 -0
  107. package/lib/table/table.module.d.ts +12 -0
  108. package/lib/toggle-switch/toggle-switch.component.d.ts +3 -0
  109. package/lib/toggle-switch/toggle-switch.module.d.ts +5 -0
  110. package/package.json +25 -12
  111. package/bundles/ifsworld-granite-components.umd.js +0 -3649
  112. package/bundles/ifsworld-granite-components.umd.js.map +0 -1
  113. package/bundles/ifsworld-granite-components.umd.min.js +0 -10
  114. package/bundles/ifsworld-granite-components.umd.min.js.map +0 -1
  115. package/esm2015/ifsworld-granite-components.js +0 -13
  116. package/esm2015/ifsworld-granite-components.js.map +0 -1
  117. package/esm2015/ifsworld-granite-components.metadata.json +0 -1
  118. package/esm2015/index.js +0 -48
  119. package/esm2015/index.js.map +0 -1
  120. package/esm2015/index.metadata.json +0 -1
  121. package/esm2015/lib/arrange-grid/arrange-grid-item.component.js +0 -48
  122. package/esm2015/lib/arrange-grid/arrange-grid-item.component.js.map +0 -1
  123. package/esm2015/lib/arrange-grid/arrange-grid-item.component.metadata.json +0 -1
  124. package/esm2015/lib/arrange-grid/arrange-grid.component.js +0 -123
  125. package/esm2015/lib/arrange-grid/arrange-grid.component.js.map +0 -1
  126. package/esm2015/lib/arrange-grid/arrange-grid.component.metadata.json +0 -1
  127. package/esm2015/lib/arrange-grid/arrange-grid.module.js +0 -14
  128. package/esm2015/lib/arrange-grid/arrange-grid.module.js.map +0 -1
  129. package/esm2015/lib/arrange-grid/arrange-grid.module.metadata.json +0 -1
  130. package/esm2015/lib/badge/badge.component.js +0 -44
  131. package/esm2015/lib/badge/badge.component.js.map +0 -1
  132. package/esm2015/lib/badge/badge.component.metadata.json +0 -1
  133. package/esm2015/lib/badge/badge.module.js +0 -13
  134. package/esm2015/lib/badge/badge.module.js.map +0 -1
  135. package/esm2015/lib/badge/badge.module.metadata.json +0 -1
  136. package/esm2015/lib/badge/testing/badge.harness.js +0 -30
  137. package/esm2015/lib/badge/testing/badge.harness.js.map +0 -1
  138. package/esm2015/lib/badge/testing/badge.harness.metadata.json +0 -1
  139. package/esm2015/lib/button/button.component.js +0 -108
  140. package/esm2015/lib/button/button.component.js.map +0 -1
  141. package/esm2015/lib/button/button.component.metadata.json +0 -1
  142. package/esm2015/lib/button/button.module.js +0 -11
  143. package/esm2015/lib/button/button.module.js.map +0 -1
  144. package/esm2015/lib/button/button.module.metadata.json +0 -1
  145. package/esm2015/lib/checkbox/checkbox-group.component.js +0 -19
  146. package/esm2015/lib/checkbox/checkbox-group.component.js.map +0 -1
  147. package/esm2015/lib/checkbox/checkbox-group.component.metadata.json +0 -1
  148. package/esm2015/lib/checkbox/checkbox.component.js +0 -89
  149. package/esm2015/lib/checkbox/checkbox.component.js.map +0 -1
  150. package/esm2015/lib/checkbox/checkbox.component.metadata.json +0 -1
  151. package/esm2015/lib/checkbox/checkbox.module.js +0 -12
  152. package/esm2015/lib/checkbox/checkbox.module.js.map +0 -1
  153. package/esm2015/lib/checkbox/checkbox.module.metadata.json +0 -1
  154. package/esm2015/lib/core/animation.js +0 -34
  155. package/esm2015/lib/core/animation.js.map +0 -1
  156. package/esm2015/lib/core/animation.metadata.json +0 -1
  157. package/esm2015/lib/core/client-environment.js +0 -20
  158. package/esm2015/lib/core/client-environment.js.map +0 -1
  159. package/esm2015/lib/core/client-environment.metadata.json +0 -1
  160. package/esm2015/lib/core/common-behaviors/disabled.js +0 -25
  161. package/esm2015/lib/core/common-behaviors/disabled.js.map +0 -1
  162. package/esm2015/lib/core/common-behaviors/disabled.metadata.json +0 -1
  163. package/esm2015/lib/core/core.module.js +0 -25
  164. package/esm2015/lib/core/core.module.js.map +0 -1
  165. package/esm2015/lib/core/core.module.metadata.json +0 -1
  166. package/esm2015/lib/core/devices/client-input-desktop.directive.js +0 -22
  167. package/esm2015/lib/core/devices/client-input-desktop.directive.js.map +0 -1
  168. package/esm2015/lib/core/devices/client-input-desktop.directive.metadata.json +0 -1
  169. package/esm2015/lib/core/devices/client-input-touch.directive.js +0 -22
  170. package/esm2015/lib/core/devices/client-input-touch.directive.js.map +0 -1
  171. package/esm2015/lib/core/devices/client-input-touch.directive.metadata.json +0 -1
  172. package/esm2015/lib/core/devices/client-output-desktop.directive.js +0 -22
  173. package/esm2015/lib/core/devices/client-output-desktop.directive.js.map +0 -1
  174. package/esm2015/lib/core/devices/client-output-desktop.directive.metadata.json +0 -1
  175. package/esm2015/lib/core/devices/client-output-touch.directive.js +0 -22
  176. package/esm2015/lib/core/devices/client-output-touch.directive.js.map +0 -1
  177. package/esm2015/lib/core/devices/client-output-touch.directive.metadata.json +0 -1
  178. package/esm2015/lib/core/pipes/pure-pipes.module.js +0 -11
  179. package/esm2015/lib/core/pipes/pure-pipes.module.js.map +0 -1
  180. package/esm2015/lib/core/pipes/pure-pipes.module.metadata.json +0 -1
  181. package/esm2015/lib/core/pipes/title.pipe.js +0 -17
  182. package/esm2015/lib/core/pipes/title.pipe.js.map +0 -1
  183. package/esm2015/lib/core/pipes/title.pipe.metadata.json +0 -1
  184. package/esm2015/lib/core/radio-checkbox-base.js +0 -15
  185. package/esm2015/lib/core/radio-checkbox-base.js.map +0 -1
  186. package/esm2015/lib/core/radio-checkbox-base.metadata.json +0 -1
  187. package/esm2015/lib/core/theme.library.js +0 -59
  188. package/esm2015/lib/core/theme.library.js.map +0 -1
  189. package/esm2015/lib/core/theme.library.metadata.json +0 -1
  190. package/esm2015/lib/core/types.js +0 -2
  191. package/esm2015/lib/core/types.js.map +0 -1
  192. package/esm2015/lib/core/types.metadata.json +0 -1
  193. package/esm2015/lib/grid/grid.component.js +0 -131
  194. package/esm2015/lib/grid/grid.component.js.map +0 -1
  195. package/esm2015/lib/grid/grid.component.metadata.json +0 -1
  196. package/esm2015/lib/grid/grid.module.js +0 -13
  197. package/esm2015/lib/grid/grid.module.js.map +0 -1
  198. package/esm2015/lib/grid/grid.module.metadata.json +0 -1
  199. package/esm2015/lib/icon/icon.component.js +0 -48
  200. package/esm2015/lib/icon/icon.component.js.map +0 -1
  201. package/esm2015/lib/icon/icon.component.metadata.json +0 -1
  202. package/esm2015/lib/icon/icon.module.js +0 -11
  203. package/esm2015/lib/icon/icon.module.js.map +0 -1
  204. package/esm2015/lib/icon/icon.module.metadata.json +0 -1
  205. package/esm2015/lib/input-field/input-field.component.js +0 -144
  206. package/esm2015/lib/input-field/input-field.component.js.map +0 -1
  207. package/esm2015/lib/input-field/input-field.component.metadata.json +0 -1
  208. package/esm2015/lib/input-field/input-field.module.js +0 -15
  209. package/esm2015/lib/input-field/input-field.module.js.map +0 -1
  210. package/esm2015/lib/input-field/input-field.module.metadata.json +0 -1
  211. package/esm2015/lib/menu/divider.directive.js +0 -20
  212. package/esm2015/lib/menu/divider.directive.js.map +0 -1
  213. package/esm2015/lib/menu/divider.directive.metadata.json +0 -1
  214. package/esm2015/lib/menu/menu-desktop-animations.js +0 -23
  215. package/esm2015/lib/menu/menu-desktop-animations.js.map +0 -1
  216. package/esm2015/lib/menu/menu-desktop-animations.metadata.json +0 -1
  217. package/esm2015/lib/menu/menu-errors.js +0 -37
  218. package/esm2015/lib/menu/menu-errors.js.map +0 -1
  219. package/esm2015/lib/menu/menu-errors.metadata.json +0 -1
  220. package/esm2015/lib/menu/menu-item.component.js +0 -82
  221. package/esm2015/lib/menu/menu-item.component.js.map +0 -1
  222. package/esm2015/lib/menu/menu-item.component.metadata.json +0 -1
  223. package/esm2015/lib/menu/menu-panel.js +0 -7
  224. package/esm2015/lib/menu/menu-panel.js.map +0 -1
  225. package/esm2015/lib/menu/menu-panel.metadata.json +0 -1
  226. package/esm2015/lib/menu/menu-positions.js +0 -9
  227. package/esm2015/lib/menu/menu-positions.js.map +0 -1
  228. package/esm2015/lib/menu/menu-positions.metadata.json +0 -1
  229. package/esm2015/lib/menu/menu-touch-animations.js +0 -137
  230. package/esm2015/lib/menu/menu-touch-animations.js.map +0 -1
  231. package/esm2015/lib/menu/menu-touch-animations.metadata.json +0 -1
  232. package/esm2015/lib/menu/menu-touch-close.component.js +0 -16
  233. package/esm2015/lib/menu/menu-touch-close.component.js.map +0 -1
  234. package/esm2015/lib/menu/menu-touch-close.component.metadata.json +0 -1
  235. package/esm2015/lib/menu/menu-touch-title.component.js +0 -45
  236. package/esm2015/lib/menu/menu-touch-title.component.js.map +0 -1
  237. package/esm2015/lib/menu/menu-touch-title.component.metadata.json +0 -1
  238. package/esm2015/lib/menu/menu-trigger-for.directive.js +0 -684
  239. package/esm2015/lib/menu/menu-trigger-for.directive.js.map +0 -1
  240. package/esm2015/lib/menu/menu-trigger-for.directive.metadata.json +0 -1
  241. package/esm2015/lib/menu/menu.component.js +0 -362
  242. package/esm2015/lib/menu/menu.component.js.map +0 -1
  243. package/esm2015/lib/menu/menu.component.metadata.json +0 -1
  244. package/esm2015/lib/menu/menu.module.js +0 -38
  245. package/esm2015/lib/menu/menu.module.js.map +0 -1
  246. package/esm2015/lib/menu/menu.module.metadata.json +0 -1
  247. package/esm2015/lib/menu/testing/menu.harness.js +0 -133
  248. package/esm2015/lib/menu/testing/menu.harness.js.map +0 -1
  249. package/esm2015/lib/menu/testing/menu.harness.metadata.json +0 -1
  250. package/esm2015/lib/menu/title.directive.js +0 -13
  251. package/esm2015/lib/menu/title.directive.js.map +0 -1
  252. package/esm2015/lib/menu/title.directive.metadata.json +0 -1
  253. package/esm2015/lib/radio-button/radio-button.component.js +0 -110
  254. package/esm2015/lib/radio-button/radio-button.component.js.map +0 -1
  255. package/esm2015/lib/radio-button/radio-button.component.metadata.json +0 -1
  256. package/esm2015/lib/radio-button/radio-button.module.js +0 -12
  257. package/esm2015/lib/radio-button/radio-button.module.js.map +0 -1
  258. package/esm2015/lib/radio-button/radio-button.module.metadata.json +0 -1
  259. package/esm2015/lib/radio-button/radio-group.component.js +0 -19
  260. package/esm2015/lib/radio-button/radio-group.component.js.map +0 -1
  261. package/esm2015/lib/radio-button/radio-group.component.metadata.json +0 -1
  262. package/esm2015/lib/table/cell/cell.js +0 -12
  263. package/esm2015/lib/table/cell/cell.js.map +0 -1
  264. package/esm2015/lib/table/cell/cell.metadata.json +0 -1
  265. package/esm2015/lib/table/cell/table-data-cell.component.js +0 -21
  266. package/esm2015/lib/table/cell/table-data-cell.component.js.map +0 -1
  267. package/esm2015/lib/table/cell/table-data-cell.component.metadata.json +0 -1
  268. package/esm2015/lib/table/cell/table-header-cell.component.js +0 -13
  269. package/esm2015/lib/table/cell/table-header-cell.component.js.map +0 -1
  270. package/esm2015/lib/table/cell/table-header-cell.component.metadata.json +0 -1
  271. package/esm2015/lib/table/column/table-column.directive.js +0 -16
  272. package/esm2015/lib/table/column/table-column.directive.js.map +0 -1
  273. package/esm2015/lib/table/column/table-column.directive.metadata.json +0 -1
  274. package/esm2015/lib/table/table-constants.library.js +0 -4
  275. package/esm2015/lib/table/table-constants.library.js.map +0 -1
  276. package/esm2015/lib/table/table-constants.library.metadata.json +0 -1
  277. package/esm2015/lib/table/table.component.js +0 -28
  278. package/esm2015/lib/table/table.component.js.map +0 -1
  279. package/esm2015/lib/table/table.component.metadata.json +0 -1
  280. package/esm2015/lib/table/table.module.js +0 -24
  281. package/esm2015/lib/table/table.module.js.map +0 -1
  282. package/esm2015/lib/table/table.module.metadata.json +0 -1
  283. package/esm2015/lib/toggle-switch/toggle-switch.component.js +0 -89
  284. package/esm2015/lib/toggle-switch/toggle-switch.component.js.map +0 -1
  285. package/esm2015/lib/toggle-switch/toggle-switch.component.metadata.json +0 -1
  286. package/esm2015/lib/toggle-switch/toggle-switch.module.js +0 -11
  287. package/esm2015/lib/toggle-switch/toggle-switch.module.js.map +0 -1
  288. package/esm2015/lib/toggle-switch/toggle-switch.module.metadata.json +0 -1
  289. package/fesm2015/ifsworld-granite-components.js +0 -2992
  290. package/fesm2015/ifsworld-granite-components.js.map +0 -1
  291. package/ifsworld-granite-components.metadata.json +0 -1
package/README.md CHANGED
@@ -1,7 +1,120 @@
1
- # granite-components
1
+ # Granite Components
2
2
 
3
- This library was generated with [Nx](https://nx.dev).
3
+ This library is an Angular implementation of the [IFS Design System](https://design.ifs.com). The IFS User Experience product group builds and maintains common UI components and tools. [The goal](docs/strategy.md) is to help product teams rapidly build applications with a delightful IFS branded experience.
4
4
 
5
- ## Running unit tests
5
+ ![npm](https://img.shields.io/npm/v/@ifsworld/granite-components)
6
+ ![npm weekly downloads](https://img.shields.io/npm/dw/@ifsworld/granite-components)
7
+ [![@ifsworld/granite-components](https://snyk.io/advisor/npm-package/@ifsworld/granite-components/badge.svg)](https://snyk.io/advisor/npm-package/@ifsworld/granite-components)
6
8
 
7
- Run `nx test granite-components` to execute the unit tests.
9
+ [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
10
+ [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
11
+ [![Storybook](https://cdn.jsdelivr.net/gh/storybookjs/brand@main/badge/badge-storybook.svg)](https://uxstorybooklatest.z16.web.core.windows.net/)
12
+
13
+ ## Deployments
14
+
15
+ | Name | URL | Secondary URL |
16
+ | ------------------------------------------- | ----------------------------------------------------- | --------------------------------------------------- |
17
+ | **Storybook - Latest** | <https://uxstorybooklatest.z16.web.core.windows.net/> | - |
18
+ | **Storybook - Beta** | <https://sb-designifs.azureedge.net/> | <https://uxstorybookbeta.z16.web.core.windows.net/> |
19
+ | **Granite Component Library Demo - Latest** | <https://uxdemolatest.z16.web.core.windows.net/> | - |
20
+ | **Granite Component Library Demo - Beta** | <https://cl-designifs.azureedge.net/> | <https://uxdemobeta.z16.web.core.windows.net/> |
21
+
22
+ ## Getting started
23
+
24
+ Assuming we're starting with a new @angular/cli project:
25
+
26
+ ```shell
27
+ npx @angular/cli new my-project --style=scss
28
+
29
+ cd my-project
30
+
31
+ npm i --save @ifsworld/granite-components
32
+
33
+ ```
34
+
35
+ If peer dependencies haven't automatically been installed (default behavior of NPM 7 and beyond), then manually install [@ifsworld/granite-icons](https://www.npmjs.com/package/@ifsworld/granite-icons) and [@ifsworld/granite-tokens](https://www.npmjs.com/package/@ifsworld/granite-tokens).
36
+
37
+ ```shell
38
+ npm i --save @ifsworld/granite-icons @ifsworld/granite-tokens
39
+ ```
40
+
41
+ Finally, add them in `src/styles.scss`:
42
+
43
+ ```scss
44
+ @use '@ifsworld/granite-tokens/design-tokens/light/tokens';
45
+ @use  '@ifsworld/granite-icons/assets/fonts/ligature/granite-iconfont-liga.css';
46
+ ```
47
+
48
+ > That's it! Now we can run `npm start` and start building out our application!
49
+
50
+ [StackBlitz Example](https://stackblitz.com/edit/angular-ivy-zcgdkv?file=src/app/app.component.html)
51
+
52
+ **Note: currrently there's an issue with the _Ivy compiler_. To get the project to work, the Ivy Compiler must be set to disabled in `tsconfig.json`!**
53
+
54
+ ### Support
55
+
56
+ #### Angular version support matrix
57
+
58
+ | Angular / Library | 0.x.x | 1.x.x | 2.x.x | 3.x.x |
59
+ | ----------------- | ----- | ----- | ----- | ----- |
60
+ | 10 | ❌ | ❌ | ❌ | ❌ |
61
+ | 11 | ✅ | 🔶 | ✅ | ✅ |
62
+ | 12 | ✅ | ✅ | ✅ | ✅ |
63
+ | 13 | ✅ | ✅ | ✅ | ✅ |
64
+ | 14 | 🔶 | 🔶 | 🔶 | 🔶 |
65
+
66
+ _Note: we plan to only support our latest release. Beyond that we make no guarantees of continued support._
67
+
68
+ ❌ unsupported
69
+ 🔶 limited support
70
+ ✅ fully supported
71
+
72
+ ## Contributing
73
+
74
+ If you'd like to contribute, please see the [Getting started guide](../../docs/getting-started.md). Then follow our [Development guidelines](../../docs/development-guidelines.md).
75
+
76
+ Check the IFS internal Jira for issues.
77
+
78
+ ### Further help
79
+
80
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
81
+
82
+ #### External sources
83
+
84
+ - [Angular - Creating Libraries](https://angular.io/guide/creating-libraries)
85
+ - [Create your Standalone Angular Library in 10 minutes](https://indepth.dev/create-your-standalone-angular-library-in-10-minutes/)
86
+ - [Creating monorepos using NX](https://nx.dev/)
87
+
88
+ ## What we're working on now (2022)
89
+
90
+ - Multi Select Input Control
91
+ - Date Picker Control
92
+ - Advance Input Control
93
+ - Advance Table Control
94
+ - Rating Control
95
+ - Label Control
96
+
97
+ ## About the product group
98
+
99
+ The project is governed by the [User Experience Product Group](https://ifs.sharepoint.com/teams/UserExperienceProductGroup). The mission of the product group is to drive the unified User Experience of IFS business applications. Own and provide UI components and guidelines based on our user's needs. Act as a guide and advisor helping application teams create great UX.
100
+
101
+ ### Primary goals of component library
102
+
103
+ - Build high-quality UI components that developers can drop into existing applications
104
+ - Provide tools that help developers build their own custom components with common interaction patterns
105
+
106
+ #### What we mean by _high-quality_ components
107
+
108
+ - Internationalized and accessible so that all users can use them.
109
+ - Straightforward APIs that don't confuse developers.
110
+ - Behave as expected across a wide variety of use-cases without bugs.
111
+ - Behavior is well-tested with both unit and integration tests.
112
+ - Customizable.
113
+ - Performance cost is minimized.
114
+ - Code is clean and well-documented to serve as an example for Angular developers.
115
+
116
+ ## Browser and accessibility support
117
+
118
+ The library supports the most recent versions of the following major browsers: [Google Chrome (including Android)](https://www.google.com/chrome/), [Apple Safari (including iOS)](https://www.apple.com/safari/), and [Microsoft Edge](https://www.microsoft.com/edge). See [IFS official guidelines](https://ifs.sharepoint.com/sites/IFSCloudProdInfo/SitePages/Supported-Platforms-21R2.aspx).
119
+
120
+ We aim for great user experience and to provide high levels of accessibility through support for standardized tools such as [ARIA](https://www.w3.org/WAI/standards-guidelines/aria/).
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZzd29ybGQtZ3Jhbml0ZS1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2lmc3dvcmxkLWdyYW5pdGUtY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Public API Surface of ui
3
+ */
4
+ export * from './lib/arrange-grid/arrange-grid.module';
5
+ export * from './lib/arrange-grid/arrange-grid.component';
6
+ export * from './lib/arrange-grid/arrange-grid-item.component';
7
+ export * from './lib/grid/grid.module';
8
+ export * from './lib/grid/grid.component';
9
+ export * from './lib/badge/badge.module';
10
+ export * from './lib/badge/badge.component';
11
+ export * from './lib/badge/testing/badge.harness';
12
+ export * from './lib/menu/menu.module';
13
+ export * from './lib/menu/menu.component';
14
+ export * from './lib/menu/menu-desktop-animations';
15
+ export * from './lib/menu/menu-touch-animations';
16
+ export * from './lib/menu/menu-item.component';
17
+ export * from './lib/menu/menu-trigger-for.directive';
18
+ export * from './lib/menu/testing/menu.harness';
19
+ export * from './lib/menu/divider.directive';
20
+ export * from './lib/menu/title.directive';
21
+ export * from './lib/menu/menu-touch-close.component';
22
+ export * from './lib/menu/menu-touch-title.component';
23
+ export * from './lib/icon/icon.module';
24
+ export * from './lib/icon/icon.component';
25
+ export * from './lib/toggle-switch/toggle-switch.module';
26
+ export * from './lib/toggle-switch/toggle-switch.component';
27
+ export * from './lib/radio-button/radio-button.module';
28
+ export * from './lib/radio-button/radio-button.component';
29
+ export * from './lib/radio-button/radio-group.component';
30
+ export * from './lib/checkbox/checkbox.module';
31
+ export * from './lib/checkbox/checkbox.component';
32
+ export * from './lib/checkbox/checkbox-group.component';
33
+ export * from './lib/button/button.module';
34
+ export * from './lib/button/button.component';
35
+ export * from './lib/table/table.module';
36
+ export * from './lib/table/table.component';
37
+ export * from './lib/table/column/table-column.directive';
38
+ export * from './lib/input-field/input-field.module';
39
+ export * from './lib/input-field/input-field.component';
40
+ // Temporary
41
+ export * from './lib/core/client-environment';
42
+ export * from './lib/core/core.module';
43
+ export * from './lib/core/devices/client-output-touch.directive';
44
+ export * from './lib/core/devices/client-output-desktop.directive';
45
+ export * from './lib/core/devices/client-input-touch.directive';
46
+ export * from './lib/core/devices/client-input-desktop.directive';
47
+ export * from './lib/core/common-behaviors/disabled';
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsMENBQTBDLENBQUM7QUFFekQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxZQUFZO0FBQ1osY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdWlcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLWl0ZW0uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JpZC9ncmlkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ncmlkL2dyaWQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFkZ2UvYmFkZ2UubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZS90ZXN0aW5nL2JhZGdlLmhhcm5lc3MnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LWRlc2t0b3AtYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUtdG91Y2gtYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LXRyaWdnZXItZm9yLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L3Rlc3RpbmcvbWVudS5oYXJuZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUvZGl2aWRlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS90aXRsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVudS9tZW51LXRvdWNoLWNsb3NlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51L21lbnUtdG91Y2gtdGl0bGUuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbi9pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9nZ2xlLXN3aXRjaC90b2dnbGUtc3dpdGNoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2dnbGUtc3dpdGNoL3RvZ2dsZS1zd2l0Y2guY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYWRpby1idXR0b24vcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3gvY2hlY2tib3gubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrYm94L2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUvdGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9jb2x1bW4vdGFibGUtY29sdW1uLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2lucHV0LWZpZWxkL2lucHV0LWZpZWxkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQnO1xuXG4vLyBUZW1wb3JhcnlcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvY2xpZW50LWVudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvY29yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9kZXZpY2VzL2NsaWVudC1vdXRwdXQtdG91Y2guZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZGV2aWNlcy9jbGllbnQtb3V0cHV0LWRlc2t0b3AuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZGV2aWNlcy9jbGllbnQtaW5wdXQtdG91Y2guZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZGV2aWNlcy9jbGllbnQtaW5wdXQtZGVza3RvcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9jb21tb24tYmVoYXZpb3JzL2Rpc2FibGVkJztcbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Component, ChangeDetectionStrategy, ElementRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GraniteArrangeGridItemComponent {
4
+ constructor(element) {
5
+ this.element = element;
6
+ /**
7
+ * Column span to render.
8
+ * For use in template only. Do not use outside of this component.
9
+ * @ignore
10
+ */
11
+ this._columnSpan = null;
12
+ /* no-op */
13
+ }
14
+ /**
15
+ * Number of cells the item would span. Used by arrange grid in column
16
+ * orientation to fill any unused space caused by wrapped items.
17
+ */
18
+ set columnSpan(value) {
19
+ this._columnSpan = value;
20
+ this.updateStyles();
21
+ }
22
+ /**
23
+ * Update element styles
24
+ */
25
+ updateStyles() {
26
+ this.setCssProperty('--columnSpan', this._columnSpan ? this._columnSpan.toString() : null);
27
+ }
28
+ /**
29
+ * Set CSS variable value or remove it if a null value is given.
30
+ * Would of course rather have used property binding but that is not
31
+ * supported until (perhaps) Angular 9.
32
+ * See: https://github.com/angular/angular/issues/9343
33
+ */
34
+ setCssProperty(variable, value) {
35
+ this.element.nativeElement.style.setProperty(variable, value);
36
+ }
37
+ }
38
+ GraniteArrangeGridItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
39
+ GraniteArrangeGridItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteArrangeGridItemComponent, selector: "granite-arrange-grid-item", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{--columnSpan: $default-column-span;display:grid;grid-column:span var(--columnSpan, 1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridItemComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'granite-arrange-grid-item', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{--columnSpan: $default-column-span;display:grid;grid-column:span var(--columnSpan, 1)}\n"] }]
43
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYW5nZS1ncmlkLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9hcnJhbmdlLWdyaWQvYXJyYW5nZS1ncmlkLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEvRSxNQUFNLE9BQU8sK0JBQStCO0lBaUIxQyxZQUFvQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQVBwRDs7OztXQUlHO1FBQ0gsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBR2hDLFdBQVc7SUFDYixDQUFDO0lBbEJEOzs7T0FHRztJQUNILElBQUksVUFBVSxDQUFDLEtBQW9CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBYUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FDakIsY0FBYyxFQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLGNBQWMsQ0FBQyxRQUFnQixFQUFFLEtBQW9CO1FBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7OzZIQXZDVSwrQkFBK0I7aUhBQS9CLCtCQUErQixpRUFKaEMsMkJBQTJCOzRGQUkxQiwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsMkJBQTJCLFlBQzNCLDJCQUEyQixtQkFFcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1hcnJhbmdlLWdyaWQtaXRlbScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHN0eWxlVXJsczogWydhcnJhbmdlLWdyaWQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY2VsbHMgdGhlIGl0ZW0gd291bGQgc3Bhbi4gVXNlZCBieSBhcnJhbmdlIGdyaWQgaW4gY29sdW1uXG4gICAqIG9yaWVudGF0aW9uIHRvIGZpbGwgYW55IHVudXNlZCBzcGFjZSBjYXVzZWQgYnkgd3JhcHBlZCBpdGVtcy5cbiAgICovXG4gIHNldCBjb2x1bW5TcGFuKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fY29sdW1uU3BhbiA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlU3R5bGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29sdW1uIHNwYW4gdG8gcmVuZGVyLlxuICAgKiBGb3IgdXNlIGluIHRlbXBsYXRlIG9ubHkuIERvIG5vdCB1c2Ugb3V0c2lkZSBvZiB0aGlzIGNvbXBvbmVudC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgX2NvbHVtblNwYW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAvKiBuby1vcCAqL1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBlbGVtZW50IHN0eWxlc1xuICAgKi9cbiAgdXBkYXRlU3R5bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q3NzUHJvcGVydHkoXG4gICAgICAnLS1jb2x1bW5TcGFuJyxcbiAgICAgIHRoaXMuX2NvbHVtblNwYW4gPyB0aGlzLl9jb2x1bW5TcGFuLnRvU3RyaW5nKCkgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgQ1NTIHZhcmlhYmxlIHZhbHVlIG9yIHJlbW92ZSBpdCBpZiBhIG51bGwgdmFsdWUgaXMgZ2l2ZW4uXG4gICAqIFdvdWxkIG9mIGNvdXJzZSByYXRoZXIgaGF2ZSB1c2VkIHByb3BlcnR5IGJpbmRpbmcgYnV0IHRoYXQgaXMgbm90XG4gICAqIHN1cHBvcnRlZCB1bnRpbCAocGVyaGFwcykgQW5ndWxhciA5LlxuICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzkzNDNcbiAgICovXG4gIHByb3RlY3RlZCBzZXRDc3NQcm9wZXJ0eSh2YXJpYWJsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHZhcmlhYmxlLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,125 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, HostBinding, Input, QueryList, } from '@angular/core';
2
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { GraniteArrangeGridItemComponent } from './arrange-grid-item.component';
6
+ import * as i0 from "@angular/core";
7
+ export var GraniteArrangeGridOrientation;
8
+ (function (GraniteArrangeGridOrientation) {
9
+ GraniteArrangeGridOrientation["columns"] = "columns";
10
+ GraniteArrangeGridOrientation["rows"] = "rows";
11
+ })(GraniteArrangeGridOrientation || (GraniteArrangeGridOrientation = {}));
12
+ export class GraniteArrangeGridComponent {
13
+ constructor(element) {
14
+ this.element = element;
15
+ /** How to present grid items; `columns` (default) or `rows` */
16
+ this.orientation = GraniteArrangeGridOrientation.columns;
17
+ /** Exposes column orientation to template */
18
+ this.classColumnOrientation = false;
19
+ /** Exposes row orientation to template */
20
+ this.classRowOrientation = false;
21
+ /** Number of columns to render */
22
+ this._cols = GraniteArrangeGridComponent.defaultCols;
23
+ /** Nexted on component destruction to complete other observables. */
24
+ this.destroy$ = new Subject();
25
+ /* no-op */
26
+ }
27
+ /**
28
+ * Number of grid columns to use when orientation is set to `column`. The
29
+ * default is two columns.
30
+ */
31
+ set cols(value) {
32
+ this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));
33
+ }
34
+ get cols() {
35
+ return this._cols;
36
+ }
37
+ set rows(value) {
38
+ // Prevent pointless usage
39
+ throw Error('Explicitly setting rows value for arrange grid is unsupported');
40
+ }
41
+ get rows() {
42
+ return this._rows;
43
+ }
44
+ ngAfterContentInit() {
45
+ // Update style whenever grid item components change in content
46
+ this.arrangeGridItemComponents.changes
47
+ .pipe(takeUntil(this.destroy$))
48
+ .subscribe(() => this.updateStyles());
49
+ this.updateStyles();
50
+ }
51
+ ngOnChanges(changes) {
52
+ if ((changes.orientation && !changes.orientation.isFirstChange()) ||
53
+ (changes.cols && !changes.cols.isFirstChange())) {
54
+ this.updateStyles();
55
+ }
56
+ }
57
+ ngOnDestroy() {
58
+ this.destroy$.next();
59
+ }
60
+ /**
61
+ * Update grid row template style.
62
+ *
63
+ * Use content height of all but last row and let the last grow
64
+ * to take up any remaining space.
65
+ */
66
+ updateStyles() {
67
+ const children = (this.arrangeGridItemComponents || []).length;
68
+ if (this.orientation === GraniteArrangeGridOrientation.columns) {
69
+ // If too many items was placed into too few colums, there would
70
+ // be some wrapping. Take that into account when calculating the
71
+ // number of rows.
72
+ this._rows = Math.trunc((children - 1) / (this._cols || 1)) + 1;
73
+ this.classColumnOrientation = true;
74
+ this.classRowOrientation = false;
75
+ if (children > 0) {
76
+ // Fill any unused space caused by wrapped items by making the
77
+ // last item also span over remaining cells.
78
+ this.arrangeGridItemComponents.forEach((c) => (c.columnSpan = null));
79
+ this.arrangeGridItemComponents.last.columnSpan =
80
+ this._rows * this._cols - children + 1;
81
+ }
82
+ }
83
+ else {
84
+ this._cols = 1; // In row orientation, there is just a single column
85
+ this._rows = children;
86
+ this.classColumnOrientation = false;
87
+ this.classRowOrientation = true;
88
+ }
89
+ this.setCssProperty('--cols', this._cols.toString());
90
+ this.setCssProperty('--rows', this._rows.toString());
91
+ }
92
+ /**
93
+ * Set CSS variable value or remove it if a null value is given.
94
+ * Would of course rather have used property binding but that is not
95
+ * supported until (perhaps) Angular 9.
96
+ * See: https://github.com/angular/angular/issues/9343
97
+ *
98
+ * TODO: Replace with property binding with Angular 9 upgrade
99
+ */
100
+ setCssProperty(variable, value) {
101
+ this.element.nativeElement.style.setProperty(variable, value);
102
+ }
103
+ }
104
+ /** Default number of columns to use in column orientation */
105
+ GraniteArrangeGridComponent.defaultCols = 2;
106
+ GraniteArrangeGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
107
+ GraniteArrangeGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteArrangeGridComponent, selector: "granite-arrange-grid", inputs: { orientation: "orientation", cols: "cols" }, host: { properties: { "class.column-orientation": "this.classColumnOrientation", "class.row-orientation": "this.classRowOrientation" } }, queries: [{ propertyName: "arrangeGridItemComponents", predicate: GraniteArrangeGridItemComponent }], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\"granite-arrange-grid-item\"></ng-content>\n", styles: ["@media only screen and (min-width: 960px){:host{--cols: 1;--rows: 1;display:grid;grid-template-columns:repeat(var(--cols, 1),1fr);grid-column-gap:.5rem;column-gap:.5rem;grid-row-gap:.5rem;row-gap:.5rem}:host.row-orientation{grid-template-columns:auto;grid-template-rows:repeat(calc(var(--rows, 1) - 1),max-content)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridComponent, decorators: [{
109
+ type: Component,
110
+ args: [{ selector: 'granite-arrange-grid', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"granite-arrange-grid-item\"></ng-content>\n", styles: ["@media only screen and (min-width: 960px){:host{--cols: 1;--rows: 1;display:grid;grid-template-columns:repeat(var(--cols, 1),1fr);grid-column-gap:.5rem;column-gap:.5rem;grid-row-gap:.5rem;row-gap:.5rem}:host.row-orientation{grid-template-columns:auto;grid-template-rows:repeat(calc(var(--rows, 1) - 1),max-content)}}\n"] }]
111
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { orientation: [{
112
+ type: Input
113
+ }], classColumnOrientation: [{
114
+ type: HostBinding,
115
+ args: ['class.column-orientation']
116
+ }], classRowOrientation: [{
117
+ type: HostBinding,
118
+ args: ['class.row-orientation']
119
+ }], arrangeGridItemComponents: [{
120
+ type: ContentChildren,
121
+ args: [GraniteArrangeGridItemComponent]
122
+ }], cols: [{
123
+ type: Input
124
+ }] } });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYW5nZS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2FycmFuZ2UtZ3JpZC9hcnJhbmdlLWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFaEYsTUFBTSxDQUFOLElBQVksNkJBR1g7QUFIRCxXQUFZLDZCQUE2QjtJQUN2QyxvREFBbUIsQ0FBQTtJQUNuQiw4Q0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLDZCQUE2QixLQUE3Qiw2QkFBNkIsUUFHeEM7QUFRRCxNQUFNLE9BQU8sMkJBQTJCO0lBMER0QyxZQUFvQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQXBEcEQsK0RBQStEO1FBRS9ELGdCQUFXLEdBQ1QsNkJBQTZCLENBQUMsT0FBTyxDQUFDO1FBRXhDLDZDQUE2QztRQUU3QywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFL0IsMENBQTBDO1FBRTFDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQWtCNUIsa0NBQWtDO1FBQ3hCLFVBQUssR0FBVywyQkFBMkIsQ0FBQyxXQUFXLENBQUM7UUFtQmxFLHFFQUFxRTtRQUM3RCxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHOUMsV0FBVztJQUNiLENBQUM7SUF0Q0Q7OztPQUdHO0lBQ0gsSUFDSSxJQUFJLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQVdELElBQUksSUFBSSxDQUFDLEtBQWE7UUFDcEIsMEJBQTBCO1FBQzFCLE1BQU0sS0FBSyxDQUNULCtEQUErRCxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBU0Qsa0JBQWtCO1FBQ2hCLCtEQUErRDtRQUMvRCxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTzthQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdELENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDL0M7WUFDQSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWTtRQUNWLE1BQU0sUUFBUSxHQUFXLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV2RSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssNkJBQTZCLENBQUMsT0FBTyxFQUFFO1lBQzlELGdFQUFnRTtZQUNoRSxnRUFBZ0U7WUFDaEUsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBRWpDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtnQkFDaEIsOERBQThEO2dCQUM5RCw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVU7b0JBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsb0RBQW9EO1lBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxjQUFjLENBQUMsUUFBZ0IsRUFBRSxLQUFvQjtRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDOztBQTlIRCw2REFBNkQ7QUFDN0MsdUNBQVcsR0FBVyxDQUFFLENBQUE7eUhBSjdCLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHNTQW1CckIsK0JBQStCLGtEQ25EbEQsa0VBQ0E7NEZEK0JhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTTtpR0FVL0MsV0FBVztzQkFEVixLQUFLO2dCQU1OLHNCQUFzQjtzQkFEckIsV0FBVzt1QkFBQywwQkFBMEI7Z0JBS3ZDLG1CQUFtQjtzQkFEbEIsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBSXBDLHlCQUF5QjtzQkFEeEIsZUFBZTt1QkFBQywrQkFBK0I7Z0JBUTVDLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdyYW5pdGVBcnJhbmdlR3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2FycmFuZ2UtZ3JpZC1pdGVtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBlbnVtIEdyYW5pdGVBcnJhbmdlR3JpZE9yaWVudGF0aW9uIHtcbiAgY29sdW1ucyA9ICdjb2x1bW5zJyxcbiAgcm93cyA9ICdyb3dzJyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1hcnJhbmdlLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJ2FycmFuZ2UtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhcnJhbmdlLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVBcnJhbmdlR3JpZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKiBEZWZhdWx0IG51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBpbiBjb2x1bW4gb3JpZW50YXRpb24gKi9cbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRDb2xzOiBudW1iZXIgPSAyO1xuXG4gIC8qKiBIb3cgdG8gcHJlc2VudCBncmlkIGl0ZW1zOyBgY29sdW1uc2AgKGRlZmF1bHQpIG9yIGByb3dzYCAqL1xuICBASW5wdXQoKVxuICBvcmllbnRhdGlvbjogR3Jhbml0ZUFycmFuZ2VHcmlkT3JpZW50YXRpb24gPVxuICAgIEdyYW5pdGVBcnJhbmdlR3JpZE9yaWVudGF0aW9uLmNvbHVtbnM7XG5cbiAgLyoqIEV4cG9zZXMgY29sdW1uIG9yaWVudGF0aW9uIHRvIHRlbXBsYXRlICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY29sdW1uLW9yaWVudGF0aW9uJylcbiAgY2xhc3NDb2x1bW5PcmllbnRhdGlvbiA9IGZhbHNlO1xuXG4gIC8qKiBFeHBvc2VzIHJvdyBvcmllbnRhdGlvbiB0byB0ZW1wbGF0ZSAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdy1vcmllbnRhdGlvbicpXG4gIGNsYXNzUm93T3JpZW50YXRpb24gPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkcmVuKEdyYW5pdGVBcnJhbmdlR3JpZEl0ZW1Db21wb25lbnQpXG4gIGFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxHcmFuaXRlQXJyYW5nZUdyaWRJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGdyaWQgY29sdW1ucyB0byB1c2Ugd2hlbiBvcmllbnRhdGlvbiBpcyBzZXQgdG8gYGNvbHVtbmAuIFRoZVxuICAgKiBkZWZhdWx0IGlzIHR3byBjb2x1bW5zLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNvbHModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2NvbHMgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSkpO1xuICB9XG5cbiAgZ2V0IGNvbHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY29scztcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgY29sdW1ucyB0byByZW5kZXIgKi9cbiAgcHJvdGVjdGVkIF9jb2xzOiBudW1iZXIgPSBHcmFuaXRlQXJyYW5nZUdyaWRDb21wb25lbnQuZGVmYXVsdENvbHM7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiByb3dzIHRvIHJlbmRlci4gV2lsbCBiZSBzZXQgaW50ZXJuYWxseSB0YWtpbmcgY29sdW1uIGNvdW50LFxuICAgKiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGFuZCBhbnkgY2VsbCB3cmFwcGluZyBpbnRvIGNvbnNpZGVyYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgX3Jvd3M6IG51bWJlcjtcblxuICBzZXQgcm93cyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgLy8gUHJldmVudCBwb2ludGxlc3MgdXNhZ2VcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgICdFeHBsaWNpdGx5IHNldHRpbmcgcm93cyB2YWx1ZSBmb3IgYXJyYW5nZSBncmlkIGlzIHVuc3VwcG9ydGVkJ1xuICAgICk7XG4gIH1cblxuICBnZXQgcm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICB9XG5cbiAgLyoqIE5leHRlZCBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb24gdG8gY29tcGxldGUgb3RoZXIgb2JzZXJ2YWJsZXMuICovXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAvKiBuby1vcCAqL1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIFVwZGF0ZSBzdHlsZSB3aGVuZXZlciBncmlkIGl0ZW0gY29tcG9uZW50cyBjaGFuZ2UgaW4gY29udGVudFxuICAgIHRoaXMuYXJyYW5nZUdyaWRJdGVtQ29tcG9uZW50cy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3R5bGVzKCkpO1xuXG4gICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAoY2hhbmdlcy5vcmllbnRhdGlvbiAmJiAhY2hhbmdlcy5vcmllbnRhdGlvbi5pc0ZpcnN0Q2hhbmdlKCkpIHx8XG4gICAgICAoY2hhbmdlcy5jb2xzICYmICFjaGFuZ2VzLmNvbHMuaXNGaXJzdENoYW5nZSgpKVxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZ3JpZCByb3cgdGVtcGxhdGUgc3R5bGUuXG4gICAqXG4gICAqIFVzZSBjb250ZW50IGhlaWdodCBvZiBhbGwgYnV0IGxhc3Qgcm93IGFuZCBsZXQgdGhlIGxhc3QgZ3Jvd1xuICAgKiB0byB0YWtlIHVwIGFueSByZW1haW5pbmcgc3BhY2UuXG4gICAqL1xuICB1cGRhdGVTdHlsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW46IG51bWJlciA9ICh0aGlzLmFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudHMgfHwgW10pLmxlbmd0aDtcblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSBHcmFuaXRlQXJyYW5nZUdyaWRPcmllbnRhdGlvbi5jb2x1bW5zKSB7XG4gICAgICAvLyBJZiB0b28gbWFueSBpdGVtcyB3YXMgcGxhY2VkIGludG8gdG9vIGZldyBjb2x1bXMsIHRoZXJlIHdvdWxkXG4gICAgICAvLyBiZSBzb21lIHdyYXBwaW5nLiBUYWtlIHRoYXQgaW50byBhY2NvdW50IHdoZW4gY2FsY3VsYXRpbmcgdGhlXG4gICAgICAvLyBudW1iZXIgb2Ygcm93cy5cbiAgICAgIHRoaXMuX3Jvd3MgPSBNYXRoLnRydW5jKChjaGlsZHJlbiAtIDEpIC8gKHRoaXMuX2NvbHMgfHwgMSkpICsgMTtcbiAgICAgIHRoaXMuY2xhc3NDb2x1bW5PcmllbnRhdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNsYXNzUm93T3JpZW50YXRpb24gPSBmYWxzZTtcblxuICAgICAgaWYgKGNoaWxkcmVuID4gMCkge1xuICAgICAgICAvLyBGaWxsIGFueSB1bnVzZWQgc3BhY2UgY2F1c2VkIGJ5IHdyYXBwZWQgaXRlbXMgYnkgbWFraW5nIHRoZVxuICAgICAgICAvLyBsYXN0IGl0ZW0gYWxzbyBzcGFuIG92ZXIgcmVtYWluaW5nIGNlbGxzLlxuICAgICAgICB0aGlzLmFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudHMuZm9yRWFjaCgoYykgPT4gKGMuY29sdW1uU3BhbiA9IG51bGwpKTtcbiAgICAgICAgdGhpcy5hcnJhbmdlR3JpZEl0ZW1Db21wb25lbnRzLmxhc3QuY29sdW1uU3BhbiA9XG4gICAgICAgICAgdGhpcy5fcm93cyAqIHRoaXMuX2NvbHMgLSBjaGlsZHJlbiArIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbHMgPSAxOyAvLyBJbiByb3cgb3JpZW50YXRpb24sIHRoZXJlIGlzIGp1c3QgYSBzaW5nbGUgY29sdW1uXG4gICAgICB0aGlzLl9yb3dzID0gY2hpbGRyZW47XG4gICAgICB0aGlzLmNsYXNzQ29sdW1uT3JpZW50YXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xhc3NSb3dPcmllbnRhdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRDc3NQcm9wZXJ0eSgnLS1jb2xzJywgdGhpcy5fY29scy50b1N0cmluZygpKTtcbiAgICB0aGlzLnNldENzc1Byb3BlcnR5KCctLXJvd3MnLCB0aGlzLl9yb3dzLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBDU1MgdmFyaWFibGUgdmFsdWUgb3IgcmVtb3ZlIGl0IGlmIGEgbnVsbCB2YWx1ZSBpcyBnaXZlbi5cbiAgICogV291bGQgb2YgY291cnNlIHJhdGhlciBoYXZlIHVzZWQgcHJvcGVydHkgYmluZGluZyBidXQgdGhhdCBpcyBub3RcbiAgICogc3VwcG9ydGVkIHVudGlsIChwZXJoYXBzKSBBbmd1bGFyIDkuXG4gICAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvOTM0M1xuICAgKlxuICAgKiBUT0RPOiBSZXBsYWNlIHdpdGggcHJvcGVydHkgYmluZGluZyB3aXRoIEFuZ3VsYXIgOSB1cGdyYWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q3NzUHJvcGVydHkodmFyaWFibGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh2YXJpYWJsZSwgdmFsdWUpO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJncmFuaXRlLWFycmFuZ2UtZ3JpZC1pdGVtXCI+PC9uZy1jb250ZW50PlxuIl19
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { GraniteArrangeGridComponent } from './arrange-grid.component';
4
+ import { GraniteArrangeGridItemComponent } from './arrange-grid-item.component';
5
+ import * as i0 from "@angular/core";
6
+ export class GraniteArrangeGridModule {
7
+ }
8
+ GraniteArrangeGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ GraniteArrangeGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, declarations: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent], imports: [CommonModule], exports: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent] });
10
+ GraniteArrangeGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, imports: [[CommonModule]] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteArrangeGridModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent],
15
+ imports: [CommonModule],
16
+ exports: [GraniteArrangeGridComponent, GraniteArrangeGridItemComponent],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYW5nZS1ncmlkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvYXJyYW5nZS1ncmlkL2FycmFuZ2UtZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBT2hGLE1BQU0sT0FBTyx3QkFBd0I7O3NIQUF4Qix3QkFBd0I7dUhBQXhCLHdCQUF3QixpQkFKcEIsMkJBQTJCLEVBQUUsK0JBQStCLGFBQ2pFLFlBQVksYUFDWiwyQkFBMkIsRUFBRSwrQkFBK0I7dUhBRTNELHdCQUF3QixZQUgxQixDQUFDLFlBQVksQ0FBQzs0RkFHWix3QkFBd0I7a0JBTHBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUM7b0JBQzVFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUM7aUJBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEdyYW5pdGVBcnJhbmdlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vYXJyYW5nZS1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQXJyYW5nZUdyaWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9hcnJhbmdlLWdyaWQtaXRlbS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHcmFuaXRlQXJyYW5nZUdyaWRDb21wb25lbnQsIEdyYW5pdGVBcnJhbmdlR3JpZEl0ZW1Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW0dyYW5pdGVBcnJhbmdlR3JpZENvbXBvbmVudCwgR3Jhbml0ZUFycmFuZ2VHcmlkSXRlbUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVBcnJhbmdlR3JpZE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,39 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ElementRef, } from '@angular/core';
2
+ import { setPropertyValue } from '../core/theme.library';
3
+ import * as i0 from "@angular/core";
4
+ export class GraniteBadgeComponent {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ /** Pill style badge */
8
+ this.pill = false;
9
+ }
10
+ ngOnChanges(changes) {
11
+ if (changes.backgroundColor) {
12
+ if (changes.backgroundColor.previousValue !==
13
+ changes.backgroundColor.currentValue) {
14
+ setPropertyValue('background-color', changes.backgroundColor.currentValue, this.elementRef.nativeElement);
15
+ }
16
+ }
17
+ if (changes.color) {
18
+ if (changes.color.previousValue !== changes.color.currentValue) {
19
+ setPropertyValue('color', changes.color.currentValue, this.elementRef.nativeElement);
20
+ }
21
+ }
22
+ }
23
+ }
24
+ GraniteBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
25
+ GraniteBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteBadgeComponent, selector: "granite-badge", inputs: { backgroundColor: "backgroundColor", color: "color", pill: "pill" }, host: { properties: { "class.granite-badge-pill": "pill" }, classAttribute: "granite-badge" }, exportAs: ["graniteBadge"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:-moz-inline-flex;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;align-items:center;background-color:var(--granite-color-signal-neutral);color:var(--granite-color-text-static-light);padding:calc(var(--granite-spacing-m) * .3125);border-radius:.3125rem;padding-inline-start:calc(var(--granite-spacing-m) * .625);padding-inline-end:calc(var(--granite-spacing-m) * .625)}:host(.granite-badge-pill){border-radius:1.5625rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'granite-badge', exportAs: 'graniteBadge', host: {
29
+ class: 'granite-badge',
30
+ '[class.granite-badge-pill]': 'pill',
31
+ }, template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:-moz-inline-flex;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;align-items:center;background-color:var(--granite-color-signal-neutral);color:var(--granite-color-text-static-light);padding:calc(var(--granite-spacing-m) * .3125);border-radius:.3125rem;padding-inline-start:calc(var(--granite-spacing-m) * .625);padding-inline-end:calc(var(--granite-spacing-m) * .625)}:host(.granite-badge-pill){border-radius:1.5625rem}\n"] }]
32
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { backgroundColor: [{
33
+ type: Input
34
+ }], color: [{
35
+ type: Input
36
+ }], pill: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFhekQsTUFBTSxPQUFPLHFCQUFxQjtJQWlCaEMsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUoxQyx1QkFBdUI7UUFFdkIsU0FBSSxHQUFZLEtBQUssQ0FBQztJQUV1QixDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDM0IsSUFDRSxPQUFPLENBQUMsZUFBZSxDQUFDLGFBQWE7Z0JBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUNwQztnQkFDQSxnQkFBZ0IsQ0FDZCxrQkFBa0IsRUFDbEIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUM5QixDQUFDO2FBQ0g7U0FDRjtRQUNELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNqQixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUM5RCxnQkFBZ0IsQ0FDZCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUM5QixDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7O21IQXpDVSxxQkFBcUI7dUdBQXJCLHFCQUFxQixtUkFKdEIsMkJBQTJCOzRGQUkxQixxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0UsZUFBZSxZQUNmLGNBQWMsUUFDbEI7d0JBQ0osS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLDRCQUE0QixFQUFFLE1BQU07cUJBQ3JDLFlBQ1MsMkJBQTJCLG1CQUVwQix1QkFBdUIsQ0FBQyxNQUFNO2lHQU8vQyxlQUFlO3NCQURkLEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0UHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uL2NvcmUvdGhlbWUubGlicmFyeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYW5pdGUtYmFkZ2UnLFxuICBleHBvcnRBczogJ2dyYW5pdGVCYWRnZScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dyYW5pdGUtYmFkZ2UnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1iYWRnZS1waWxsXSc6ICdwaWxsJyxcbiAgfSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFkZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVCYWRnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBEZXNpZ24gdG9rZW4gbmFtZSB0byBnZXQgdGhlIHZhbHVlIGZvciB0aGUgQmFja2dyb3VuZCBjb2xvclxuICAgKi9cbiAgQElucHV0KClcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2lnbiB0b2tlbiBuYW1lIHRvIGdldCB0aGUgdmFsdWUgZm9yIHRoZSBGb250IGNvbG9yXG4gICAqL1xuICBASW5wdXQoKVxuICBjb2xvcjogc3RyaW5nO1xuXG4gIC8qKiBQaWxsIHN0eWxlIGJhZGdlICovXG4gIEBJbnB1dCgpXG4gIHBpbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmJhY2tncm91bmRDb2xvcikge1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzLmJhY2tncm91bmRDb2xvci5wcmV2aW91c1ZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzLmJhY2tncm91bmRDb2xvci5jdXJyZW50VmFsdWVcbiAgICAgICkge1xuICAgICAgICBzZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgICBjaGFuZ2VzLmJhY2tncm91bmRDb2xvci5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY29sb3IpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmNvbG9yLnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMuY29sb3IuY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHNldFByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICBjaGFuZ2VzLmNvbG9yLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { GraniteBadgeComponent } from './badge.component';
4
+ import * as i0 from "@angular/core";
5
+ export class GraniteBadgeModule {
6
+ }
7
+ GraniteBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ GraniteBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, declarations: [GraniteBadgeComponent], imports: [CommonModule], exports: [GraniteBadgeComponent] });
9
+ GraniteBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, imports: [[CommonModule]] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteBadgeModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [GraniteBadgeComponent],
14
+ imports: [CommonModule],
15
+ exports: [GraniteBadgeComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9iYWRnZS9iYWRnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTzFELE1BQU0sT0FBTyxrQkFBa0I7O2dIQUFsQixrQkFBa0I7aUhBQWxCLGtCQUFrQixpQkFKZCxxQkFBcUIsYUFDMUIsWUFBWSxhQUNaLHFCQUFxQjtpSEFFcEIsa0JBQWtCLFlBSHBCLENBQUMsWUFBWSxDQUFDOzRGQUdaLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyYW5pdGVCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vYmFkZ2UuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbR3Jhbml0ZUJhZGdlQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtHcmFuaXRlQmFkZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlQmFkZ2VNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { ComponentHarness, HarnessPredicate, } from '@angular/cdk/testing';
2
+ export class GraniteBadgeHarness extends ComponentHarness {
3
+ /**
4
+ * Gets a `HarnessPredicate` that can be used to search for a `GraniteBadgeHarness` that meets
5
+ * certain criteria.
6
+ * @param options Options for filtering which badge instances are considered a match.
7
+ * @return a `HarnessPredicate` configured with the given options.
8
+ */
9
+ static with(options = {}) {
10
+ const predicate = new HarnessPredicate(GraniteBadgeHarness, options);
11
+ predicate.addOption('text', options.text, (harness, label) => HarnessPredicate.stringMatches(harness.getText(), label));
12
+ predicate.addOption('pill', options.pill, async (harness, pill) => (await harness.isPill()) === pill);
13
+ return predicate;
14
+ }
15
+ /** Gets the Badge text. */
16
+ async getText() {
17
+ return (await this.host()).text();
18
+ }
19
+ /** Whether it's a Pill type badge. */
20
+ async isPill() {
21
+ return (await this.host()).hasClass('granite-badge-pill');
22
+ }
23
+ }
24
+ GraniteBadgeHarness.hostSelector = 'granite-badge';
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvYmFkZ2UvdGVzdGluZy9iYWRnZS5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQUd2RDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQ1QsVUFBc0MsRUFBRTtRQUV4QyxNQUFNLFNBQVMsR0FDYixJQUFJLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDM0QsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FDekQsQ0FBQztRQUNGLFNBQVMsQ0FBQyxTQUFTLENBQ2pCLE1BQU0sRUFDTixPQUFPLENBQUMsSUFBSSxFQUNaLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssSUFBSSxDQUMzRCxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixLQUFLLENBQUMsT0FBTztRQUNYLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsS0FBSyxDQUFDLE1BQU07UUFDVixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RCxDQUFDOztBQWhDTSxnQ0FBWSxHQUFHLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudEhhcm5lc3MsXG4gIEJhc2VIYXJuZXNzRmlsdGVycyxcbiAgSGFybmVzc1ByZWRpY2F0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUJhZGdlSGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ2dyYW5pdGUtYmFkZ2UnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhIGBHcmFuaXRlQmFkZ2VIYXJuZXNzYCB0aGF0IG1lZXRzXG4gICAqIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGZpbHRlcmluZyB3aGljaCBiYWRnZSBpbnN0YW5jZXMgYXJlIGNvbnNpZGVyZWQgYSBtYXRjaC5cbiAgICogQHJldHVybiBhIGBIYXJuZXNzUHJlZGljYXRlYCBjb25maWd1cmVkIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgd2l0aChcbiAgICBvcHRpb25zOiBHcmFuaXRlQmFkZ2VIYXJuZXNzRmlsdGVycyA9IHt9XG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8R3Jhbml0ZUJhZGdlSGFybmVzcz4ge1xuICAgIGNvbnN0IHByZWRpY2F0ZTogSGFybmVzc1ByZWRpY2F0ZTxHcmFuaXRlQmFkZ2VIYXJuZXNzPiA9XG4gICAgICBuZXcgSGFybmVzc1ByZWRpY2F0ZShHcmFuaXRlQmFkZ2VIYXJuZXNzLCBvcHRpb25zKTtcbiAgICBwcmVkaWNhdGUuYWRkT3B0aW9uKCd0ZXh0Jywgb3B0aW9ucy50ZXh0LCAoaGFybmVzcywgbGFiZWwpID0+XG4gICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoaGFybmVzcy5nZXRUZXh0KCksIGxhYmVsKVxuICAgICk7XG4gICAgcHJlZGljYXRlLmFkZE9wdGlvbihcbiAgICAgICdwaWxsJyxcbiAgICAgIG9wdGlvbnMucGlsbCxcbiAgICAgIGFzeW5jIChoYXJuZXNzLCBwaWxsKSA9PiAoYXdhaXQgaGFybmVzcy5pc1BpbGwoKSkgPT09IHBpbGxcbiAgICApO1xuICAgIHJldHVybiBwcmVkaWNhdGU7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgQmFkZ2UgdGV4dC4gKi9cbiAgYXN5bmMgZ2V0VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLnRleHQoKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGl0J3MgYSBQaWxsIHR5cGUgYmFkZ2UuICovXG4gIGFzeW5jIGlzUGlsbCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaG9zdCgpKS5oYXNDbGFzcygnZ3Jhbml0ZS1iYWRnZS1waWxsJyk7XG4gIH1cbn1cblxuLyoqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBgR3Jhbml0ZUJhZGdlSGFybmVzc2AgaW5zdGFuY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFuaXRlQmFkZ2VIYXJuZXNzRmlsdGVycyBleHRlbmRzIEJhc2VIYXJuZXNzRmlsdGVycyB7XG4gIC8qKiBPbmx5IGZpbmQgaW5zdGFuY2VzIHdob3NlIHRleHQgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gIHRleHQ/OiBzdHJpbmcgfCBSZWdFeHA7XG4gIHBpbGw/OiBib29sZWFuO1xufVxuIl19