@esri/solutions-components 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. package/dist/cjs/deduct-calculator.cjs.entry.js +1 -1
  2. package/dist/cjs/pci-calculator.cjs.entry.js +1 -1
  3. package/dist/cjs/{pciUtils-6a806ba4.js → pciUtils-423cfc68.js} +25 -7
  4. package/dist/collection/demos/deduct-calculator.html +2 -5
  5. package/dist/collection/demos/new-public-notification.html +6 -4
  6. package/dist/collection/utils/pciUtils.js +25 -7
  7. package/dist/collection/utils/pciUtils.ts +30 -7
  8. package/dist/components/ExpandToggle.js +110 -0
  9. package/dist/components/Heading.js +22 -0
  10. package/dist/components/_commonjsHelpers.js +22 -0
  11. package/dist/components/action-bar.js +276 -0
  12. package/dist/components/action-group.js +149 -0
  13. package/dist/components/action-menu.js +356 -0
  14. package/dist/components/action.js +214 -0
  15. package/dist/components/add-record-modal.d.ts +11 -0
  16. package/dist/components/add-record-modal.js +171 -0
  17. package/dist/components/array.js +15 -0
  18. package/dist/components/block.js +272 -0
  19. package/dist/components/buffer-tools.d.ts +11 -0
  20. package/dist/components/buffer-tools.js +11 -0
  21. package/dist/components/buffer-tools2.js +262 -0
  22. package/dist/components/button.js +263 -0
  23. package/dist/components/calcite-accordion-item.js +244 -0
  24. package/dist/components/calcite-accordion.js +180 -0
  25. package/dist/components/calcite-action-bar.js +11 -0
  26. package/dist/components/calcite-action-group.js +11 -0
  27. package/dist/components/calcite-action-menu.js +11 -0
  28. package/dist/components/calcite-action-pad.js +197 -0
  29. package/dist/components/calcite-action.js +11 -0
  30. package/dist/components/calcite-alert.js +297 -0
  31. package/dist/components/calcite-avatar.js +182 -0
  32. package/dist/components/calcite-block-section.js +155 -0
  33. package/dist/components/calcite-block.js +11 -0
  34. package/dist/components/calcite-button.js +11 -0
  35. package/dist/components/calcite-card.js +187 -0
  36. package/dist/components/calcite-checkbox.js +11 -0
  37. package/dist/components/calcite-chip.js +11 -0
  38. package/dist/components/calcite-color-picker-hex-input.js +11 -0
  39. package/dist/components/calcite-color-picker-swatch.js +11 -0
  40. package/dist/components/calcite-color-picker.js +1036 -0
  41. package/dist/components/calcite-combobox-item-group.js +75 -0
  42. package/dist/components/calcite-combobox-item.js +11 -0
  43. package/dist/components/calcite-combobox.js +11 -0
  44. package/dist/components/calcite-date-picker-day.js +11 -0
  45. package/dist/components/calcite-date-picker-month-header.js +11 -0
  46. package/dist/components/calcite-date-picker-month.js +11 -0
  47. package/dist/components/calcite-date-picker.js +11 -0
  48. package/dist/components/calcite-dropdown-group.js +11 -0
  49. package/dist/components/calcite-dropdown-item.js +11 -0
  50. package/dist/components/calcite-dropdown.js +11 -0
  51. package/dist/components/calcite-fab.js +144 -0
  52. package/dist/components/calcite-filter.js +195 -0
  53. package/dist/components/calcite-flow-item.js +243 -0
  54. package/dist/components/calcite-flow.js +147 -0
  55. package/dist/components/calcite-graph.js +11 -0
  56. package/dist/components/calcite-handle.js +11 -0
  57. package/dist/components/calcite-icon.js +11 -0
  58. package/dist/components/calcite-inline-editable.js +294 -0
  59. package/dist/components/calcite-input-date-picker.js +713 -0
  60. package/dist/components/calcite-input-message.js +11 -0
  61. package/dist/components/calcite-input-number.js +637 -0
  62. package/dist/components/calcite-input-text.js +400 -0
  63. package/dist/components/calcite-input-time-picker.js +434 -0
  64. package/dist/components/calcite-input.js +11 -0
  65. package/dist/components/calcite-label.js +11 -0
  66. package/dist/components/calcite-link.js +11 -0
  67. package/dist/components/calcite-list-item-group.js +65 -0
  68. package/dist/components/calcite-list-item.js +11 -0
  69. package/dist/components/calcite-list.js +11 -0
  70. package/dist/components/calcite-loader.js +11 -0
  71. package/dist/components/calcite-modal.js +11 -0
  72. package/dist/components/calcite-notice.js +11 -0
  73. package/dist/components/calcite-option-group.js +64 -0
  74. package/dist/components/calcite-option.js +11 -0
  75. package/dist/components/calcite-pagination.js +258 -0
  76. package/dist/components/calcite-panel.js +11 -0
  77. package/dist/components/calcite-pick-list-group.js +74 -0
  78. package/dist/components/calcite-pick-list-item.js +11 -0
  79. package/dist/components/calcite-pick-list.js +11 -0
  80. package/dist/components/calcite-popover-manager.js +94 -0
  81. package/dist/components/calcite-popover.js +11 -0
  82. package/dist/components/calcite-progress.js +11 -0
  83. package/dist/components/calcite-radio-button-group.js +132 -0
  84. package/dist/components/calcite-radio-button.js +310 -0
  85. package/dist/components/calcite-radio-group-item.js +11 -0
  86. package/dist/components/calcite-radio-group.js +11 -0
  87. package/dist/components/calcite-rating.js +201 -0
  88. package/dist/components/calcite-scrim.js +11 -0
  89. package/dist/components/calcite-select.js +11 -0
  90. package/dist/components/calcite-shell-center-row.js +100 -0
  91. package/dist/components/calcite-shell-panel.js +11 -0
  92. package/dist/components/calcite-shell.js +11 -0
  93. package/dist/components/calcite-slider.js +11 -0
  94. package/dist/components/calcite-sortable-list.js +202 -0
  95. package/dist/components/calcite-split-button.js +11 -0
  96. package/dist/components/calcite-stepper-item.js +271 -0
  97. package/dist/components/calcite-stepper.js +256 -0
  98. package/dist/components/calcite-switch.js +11 -0
  99. package/dist/components/calcite-tab-nav.js +11 -0
  100. package/dist/components/calcite-tab-title.js +11 -0
  101. package/dist/components/calcite-tab.js +11 -0
  102. package/dist/components/calcite-tabs.js +11 -0
  103. package/dist/components/calcite-tile-select-group.js +65 -0
  104. package/dist/components/calcite-tile-select.js +266 -0
  105. package/dist/components/calcite-tile.js +11 -0
  106. package/dist/components/calcite-time-picker.js +11 -0
  107. package/dist/components/calcite-tip-group.js +41 -0
  108. package/dist/components/calcite-tip-manager.js +223 -0
  109. package/dist/components/calcite-tip.js +162 -0
  110. package/dist/components/calcite-tooltip-manager.js +57 -0
  111. package/dist/components/calcite-tooltip.js +11 -0
  112. package/dist/components/calcite-tree-item.js +11 -0
  113. package/dist/components/calcite-tree.js +11 -0
  114. package/dist/components/calcite-value-list-item.js +11 -0
  115. package/dist/components/calcite-value-list.js +11 -0
  116. package/dist/components/card-manager.d.ts +11 -0
  117. package/dist/components/card-manager.js +143 -0
  118. package/dist/components/check-list.d.ts +11 -0
  119. package/dist/components/check-list.js +11 -0
  120. package/dist/components/check-list2.js +131 -0
  121. package/dist/components/checkbox.js +165 -0
  122. package/dist/components/chip.js +170 -0
  123. package/dist/components/color-picker-hex-input.js +363 -0
  124. package/dist/components/color-picker-swatch.js +2034 -0
  125. package/dist/components/combobox-item.js +182 -0
  126. package/dist/components/combobox.js +912 -0
  127. package/dist/components/comment-card.d.ts +11 -0
  128. package/dist/components/comment-card.js +90 -0
  129. package/dist/components/conditionalSlot.js +50 -0
  130. package/dist/components/config-buffer-tools.d.ts +11 -0
  131. package/dist/components/config-buffer-tools.js +187 -0
  132. package/dist/components/config-draw-tools.d.ts +11 -0
  133. package/dist/components/config-draw-tools.js +121 -0
  134. package/dist/components/config-layer-picker.d.ts +11 -0
  135. package/dist/components/config-layer-picker.js +163 -0
  136. package/dist/components/config-pdf-download.d.ts +11 -0
  137. package/dist/components/config-pdf-download.js +154 -0
  138. package/dist/components/crowdsource-manager.d.ts +11 -0
  139. package/dist/components/crowdsource-manager.js +90 -0
  140. package/dist/components/crowdsource-reporter.d.ts +11 -0
  141. package/dist/components/crowdsource-reporter.js +90 -0
  142. package/dist/components/csvUtils.js +74 -0
  143. package/dist/components/date-picker-day.js +111 -0
  144. package/dist/components/date-picker-month-header.js +224 -0
  145. package/dist/components/date-picker-month.js +344 -0
  146. package/dist/components/date-picker.js +575 -0
  147. package/dist/components/date.js +180 -0
  148. package/dist/components/debounce.js +487 -0
  149. package/dist/components/deduct-calculator.d.ts +11 -0
  150. package/dist/components/deduct-calculator.js +11 -0
  151. package/dist/components/deduct-calculator2.js +1002 -0
  152. package/dist/components/dom.js +231 -0
  153. package/dist/components/dropdown-group.js +96 -0
  154. package/dist/components/dropdown-item.js +232 -0
  155. package/dist/components/dropdown.js +505 -0
  156. package/dist/components/edit-record-modal.d.ts +11 -0
  157. package/dist/components/edit-record-modal.js +11 -0
  158. package/dist/components/edit-record-modal2.js +161 -0
  159. package/dist/components/filter.js +763 -0
  160. package/dist/components/floating-ui.js +1768 -0
  161. package/dist/components/form.js +228 -0
  162. package/dist/components/graph.js +254 -0
  163. package/dist/components/guid.js +24 -0
  164. package/dist/components/handle.js +119 -0
  165. package/dist/components/icon.js +202 -0
  166. package/dist/components/index.d.ts +61 -0
  167. package/dist/components/index.js +196 -0
  168. package/dist/components/index2.js +199 -0
  169. package/dist/components/info-card.d.ts +11 -0
  170. package/dist/components/info-card.js +11 -0
  171. package/dist/components/info-card2.js +97 -0
  172. package/dist/components/input-message.js +101 -0
  173. package/dist/components/input.js +740 -0
  174. package/dist/components/interactive.js +51 -0
  175. package/dist/components/interfaces.js +19 -0
  176. package/dist/components/interfaces2.js +21 -0
  177. package/dist/components/interfaces3.js +80 -0
  178. package/dist/components/json-editor.d.ts +11 -0
  179. package/dist/components/json-editor.js +11 -0
  180. package/dist/components/json-editor2.js +441 -0
  181. package/dist/components/key.js +16 -0
  182. package/dist/components/label.js +106 -0
  183. package/dist/components/label2.js +131 -0
  184. package/dist/components/labelFormats.js +210 -0
  185. package/dist/components/layer-table.d.ts +11 -0
  186. package/dist/components/layer-table.js +453 -0
  187. package/dist/components/link.js +123 -0
  188. package/dist/components/list-item.d.ts +11 -0
  189. package/dist/components/list-item.js +90 -0
  190. package/dist/components/list-item2.js +149 -0
  191. package/dist/components/list.js +83 -0
  192. package/dist/components/loadModules.js +28 -0
  193. package/dist/components/loader.js +116 -0
  194. package/dist/components/locale.js +412 -0
  195. package/dist/components/locale2.js +413 -0
  196. package/dist/components/map-card.d.ts +11 -0
  197. package/dist/components/map-card.js +354 -0
  198. package/dist/components/map-draw-tools.d.ts +11 -0
  199. package/dist/components/map-draw-tools.js +11 -0
  200. package/dist/components/map-draw-tools2.js +228 -0
  201. package/dist/components/map-layer-picker.d.ts +11 -0
  202. package/dist/components/map-layer-picker.js +11 -0
  203. package/dist/components/map-layer-picker2.js +188 -0
  204. package/dist/components/map-search.d.ts +11 -0
  205. package/dist/components/map-search.js +155 -0
  206. package/dist/components/map-select-tools.d.ts +11 -0
  207. package/dist/components/map-select-tools.js +11 -0
  208. package/dist/components/map-select-tools2.js +588 -0
  209. package/dist/components/mapViewUtils.js +129 -0
  210. package/dist/components/math.js +24 -0
  211. package/dist/components/media-card.d.ts +11 -0
  212. package/dist/components/media-card.js +11 -0
  213. package/dist/components/media-card2.js +177 -0
  214. package/dist/components/modal.js +495 -0
  215. package/dist/components/nonChromiumPlatformUtils.js +503 -0
  216. package/dist/components/notice.js +192 -0
  217. package/dist/components/observers.js +56 -0
  218. package/dist/components/openCloseComponent.js +56 -0
  219. package/dist/components/option.js +109 -0
  220. package/dist/components/panel.js +459 -0
  221. package/dist/components/pci-calculator.d.ts +11 -0
  222. package/dist/components/pci-calculator.js +193 -0
  223. package/dist/components/pdf-download.d.ts +11 -0
  224. package/dist/components/pdf-download.js +11 -0
  225. package/dist/components/pdf-download2.js +189 -0
  226. package/dist/components/pick-list-item.js +255 -0
  227. package/dist/components/pick-list.js +170 -0
  228. package/dist/components/popover.js +500 -0
  229. package/dist/components/progress.js +60 -0
  230. package/dist/components/public-notification.d.ts +11 -0
  231. package/dist/components/public-notification.js +825 -0
  232. package/dist/components/publicNotificationStore.js +38 -0
  233. package/dist/components/queryUtils.js +187 -0
  234. package/dist/components/radio-group-item.js +101 -0
  235. package/dist/components/radio-group.js +235 -0
  236. package/dist/components/refine-selection-tools.d.ts +11 -0
  237. package/dist/components/refine-selection-tools.js +11 -0
  238. package/dist/components/refine-selection-tools2.js +492 -0
  239. package/dist/components/refine-selection.d.ts +11 -0
  240. package/dist/components/refine-selection.js +11 -0
  241. package/dist/components/refine-selection2.js +376 -0
  242. package/dist/components/resources.js +24 -0
  243. package/dist/components/resources2.js +21 -0
  244. package/dist/components/resources3.js +38 -0
  245. package/dist/components/scrim.js +83 -0
  246. package/dist/components/select.js +259 -0
  247. package/dist/components/shared-list-render.js +319 -0
  248. package/dist/components/shell-panel.js +281 -0
  249. package/dist/components/shell.js +121 -0
  250. package/dist/components/slider.js +896 -0
  251. package/dist/components/solution-configuration.d.ts +11 -0
  252. package/dist/components/solution-configuration.js +2233 -0
  253. package/dist/components/solution-contents.d.ts +11 -0
  254. package/dist/components/solution-contents.js +11 -0
  255. package/dist/components/solution-contents2.js +128 -0
  256. package/dist/components/solution-item-details.d.ts +11 -0
  257. package/dist/components/solution-item-details.js +11 -0
  258. package/dist/components/solution-item-details2.js +234 -0
  259. package/dist/components/solution-item-icon.d.ts +11 -0
  260. package/dist/components/solution-item-icon.js +11 -0
  261. package/dist/components/solution-item-icon2.js +342 -0
  262. package/dist/components/solution-item-sharing.d.ts +11 -0
  263. package/dist/components/solution-item-sharing.js +11 -0
  264. package/dist/components/solution-item-sharing2.js +167 -0
  265. package/dist/components/solution-item.d.ts +11 -0
  266. package/dist/components/solution-item.js +11 -0
  267. package/dist/components/solution-item2.js +315 -0
  268. package/dist/components/solution-organization-variables.d.ts +11 -0
  269. package/dist/components/solution-organization-variables.js +11 -0
  270. package/dist/components/solution-organization-variables2.js +132 -0
  271. package/dist/components/solution-resource-item.d.ts +11 -0
  272. package/dist/components/solution-resource-item.js +11 -0
  273. package/dist/components/solution-resource-item2.js +356 -0
  274. package/dist/components/solution-spatial-ref.d.ts +11 -0
  275. package/dist/components/solution-spatial-ref.js +11 -0
  276. package/dist/components/solution-spatial-ref2.js +21446 -0
  277. package/dist/components/solution-store.js +4092 -0
  278. package/dist/components/solution-template-data.d.ts +11 -0
  279. package/dist/components/solution-template-data.js +11 -0
  280. package/dist/components/solution-template-data2.js +233 -0
  281. package/dist/components/solution-variables.d.ts +11 -0
  282. package/dist/components/solution-variables.js +11 -0
  283. package/dist/components/solution-variables2.js +150 -0
  284. package/dist/components/sortable.esm.js +3026 -0
  285. package/dist/components/split-button.js +165 -0
  286. package/dist/components/store-manager.d.ts +11 -0
  287. package/dist/components/store-manager.js +83 -0
  288. package/dist/components/switch.js +139 -0
  289. package/dist/components/tab-nav.js +241 -0
  290. package/dist/components/tab-title.js +276 -0
  291. package/dist/components/tab.js +154 -0
  292. package/dist/components/tabs.js +188 -0
  293. package/dist/components/tile.js +129 -0
  294. package/dist/components/time-picker.js +943 -0
  295. package/dist/components/tooltip.js +399 -0
  296. package/dist/components/tree-item.js +294 -0
  297. package/dist/components/tree.js +327 -0
  298. package/dist/components/utils.js +119 -0
  299. package/dist/components/utils2.js +51 -0
  300. package/dist/components/value-list-item.js +204 -0
  301. package/dist/components/value-list.js +333 -0
  302. package/dist/esm/deduct-calculator.entry.js +1 -1
  303. package/dist/esm/pci-calculator.entry.js +1 -1
  304. package/dist/esm/{pciUtils-e3007a1c.js → pciUtils-ecda46e5.js} +25 -7
  305. package/dist/solutions-components/demos/deduct-calculator.html +2 -5
  306. package/dist/solutions-components/demos/new-public-notification.html +6 -4
  307. package/dist/solutions-components/{p-ff80ffbb.entry.js → p-0512635b.entry.js} +1 -1
  308. package/dist/solutions-components/{p-5ec407c2.entry.js → p-0c088725.entry.js} +1 -1
  309. package/dist/solutions-components/p-cc815aca.js +21 -0
  310. package/dist/solutions-components/solutions-components.esm.js +1 -1
  311. package/dist/solutions-components/utils/pciUtils.ts +30 -7
  312. package/dist/types/utils/pciUtils.d.ts +2 -1
  313. package/package.json +4 -3
  314. package/dist/solutions-components/p-647bbd18.js +0 -21
@@ -0,0 +1,231 @@
1
+ /*!
2
+ * Copyright 2022 Esri
3
+ * Licensed under the Apache License, Version 2.0
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { g as guid } from './guid.js';
7
+
8
+ /*!
9
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
10
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
11
+ * v1.0.0-beta.97
12
+ */
13
+ const autoTheme = "calcite-theme-auto";
14
+ const darkTheme = "calcite-theme-dark";
15
+ const lightTheme = "calcite-theme-light";
16
+ const CSS_UTILITY = {
17
+ autoTheme,
18
+ darkTheme,
19
+ lightTheme,
20
+ rtl: "calcite--rtl"
21
+ };
22
+ const TEXT = {
23
+ loading: "Loading"
24
+ };
25
+
26
+ /*!
27
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
28
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
29
+ * v1.0.0-beta.97
30
+ */
31
+ /**
32
+ * This helper will guarantee an ID on the provided element.
33
+ *
34
+ * If it already has an ID, it will be preserved, otherwise a unique one will be generated and assigned.
35
+ *
36
+ * @param el
37
+ * @returns {string} The element's ID.
38
+ */
39
+ function ensureId(el) {
40
+ if (!el) {
41
+ return "";
42
+ }
43
+ return (el.id = el.id || `${el.tagName.toLowerCase()}-${guid()}`);
44
+ }
45
+ function nodeListToArray(nodeList) {
46
+ return Array.isArray(nodeList) ? nodeList : Array.from(nodeList);
47
+ }
48
+ function getThemeName(el) {
49
+ const closestElWithTheme = closestElementCrossShadowBoundary(el, `.${CSS_UTILITY.darkTheme}, .${CSS_UTILITY.lightTheme}`);
50
+ return (closestElWithTheme === null || closestElWithTheme === void 0 ? void 0 : closestElWithTheme.classList.contains("calcite-theme-dark")) ? "dark" : "light";
51
+ }
52
+ function getElementDir(el) {
53
+ const prop = "dir";
54
+ const selector = `[${prop}]`;
55
+ const closest = closestElementCrossShadowBoundary(el, selector);
56
+ return closest ? closest.getAttribute(prop) : "ltr";
57
+ }
58
+ function getElementProp(el, prop, fallbackValue) {
59
+ const selector = `[${prop}]`;
60
+ const closest = el.closest(selector);
61
+ return closest ? closest.getAttribute(prop) : fallbackValue;
62
+ }
63
+ function getRootNode(el) {
64
+ return el.getRootNode();
65
+ }
66
+ function getHost(root) {
67
+ return root.host || null;
68
+ }
69
+ /**
70
+ * This helper queries an element's rootNode and any ancestor rootNodes.
71
+ *
72
+ * If both an 'id' and 'selector' are supplied, 'id' will take precedence over 'selector'.
73
+ *
74
+ * @param element
75
+ * @param root0
76
+ * @param root0.selector
77
+ * @param root0.id
78
+ * @returns {Element} The element.
79
+ */
80
+ function queryElementRoots(element, { selector, id }) {
81
+ // Gets the rootNode and any ancestor rootNodes (shadowRoot or document) of an element and queries them for a selector.
82
+ // Based on: https://stackoverflow.com/q/54520554/194216
83
+ function queryFrom(el) {
84
+ if (!el) {
85
+ return null;
86
+ }
87
+ if (el.assignedSlot) {
88
+ el = el.assignedSlot;
89
+ }
90
+ const rootNode = getRootNode(el);
91
+ const found = id
92
+ ? "getElementById" in rootNode
93
+ ? /*
94
+ Check to make sure 'getElementById' exists in cases where element is no longer connected to the DOM and getRootNode() returns the element.
95
+ https://github.com/Esri/calcite-components/pull/4280
96
+ */
97
+ rootNode.getElementById(id)
98
+ : null
99
+ : selector
100
+ ? rootNode.querySelector(selector)
101
+ : null;
102
+ const host = getHost(rootNode);
103
+ return found ? found : host ? queryFrom(host) : null;
104
+ }
105
+ return queryFrom(element);
106
+ }
107
+ function closestElementCrossShadowBoundary(element, selector) {
108
+ // based on https://stackoverflow.com/q/54520554/194216
109
+ function closestFrom(el) {
110
+ return el ? el.closest(selector) || closestFrom(getHost(getRootNode(el))) : null;
111
+ }
112
+ return closestFrom(element);
113
+ }
114
+ /**
115
+ * This utility helps invoke a callback as it traverses a node and its ancestors until reaching the root document.
116
+ *
117
+ * Returning early or undefined in `onVisit` will continue traversing up the DOM tree. Otherwise, traversal will halt with the returned value as the result of the function
118
+ *
119
+ * @param element
120
+ * @param onVisit
121
+ */
122
+ function walkUpAncestry(element, onVisit) {
123
+ return visit(element, onVisit);
124
+ }
125
+ function visit(node, onVisit) {
126
+ if (!node) {
127
+ return;
128
+ }
129
+ const result = onVisit(node);
130
+ if (result !== undefined) {
131
+ return result;
132
+ }
133
+ const { parentNode } = node;
134
+ return visit(parentNode instanceof ShadowRoot ? parentNode.host : parentNode, onVisit);
135
+ }
136
+ function containsCrossShadowBoundary(element, maybeDescendant) {
137
+ return !!walkUpAncestry(maybeDescendant, (node) => (node === element ? true : undefined));
138
+ }
139
+ function isCalciteFocusable(el) {
140
+ return typeof (el === null || el === void 0 ? void 0 : el.setFocus) === "function";
141
+ }
142
+ async function focusElement(el) {
143
+ if (!el) {
144
+ return;
145
+ }
146
+ return isCalciteFocusable(el) ? el.setFocus() : el.focus();
147
+ }
148
+ const defaultSlotSelector = ":not([slot])";
149
+ function getSlotted(element, slotName, options) {
150
+ if (slotName && !Array.isArray(slotName) && typeof slotName !== "string") {
151
+ options = slotName;
152
+ slotName = null;
153
+ }
154
+ const slotSelector = slotName
155
+ ? Array.isArray(slotName)
156
+ ? slotName.map((name) => `[slot="${name}"]`).join(",")
157
+ : `[slot="${slotName}"]`
158
+ : defaultSlotSelector;
159
+ if (options === null || options === void 0 ? void 0 : options.all) {
160
+ return queryMultiple(element, slotSelector, options);
161
+ }
162
+ return querySingle(element, slotSelector, options);
163
+ }
164
+ function getDirectChildren(el, selector) {
165
+ return el ? Array.from(el.children || []).filter((child) => child === null || child === void 0 ? void 0 : child.matches(selector)) : [];
166
+ }
167
+ function queryMultiple(element, slotSelector, options) {
168
+ let matches = slotSelector === defaultSlotSelector
169
+ ? getDirectChildren(element, defaultSlotSelector)
170
+ : Array.from(element.querySelectorAll(slotSelector));
171
+ matches = options && options.direct === false ? matches : matches.filter((el) => el.parentElement === element);
172
+ matches = (options === null || options === void 0 ? void 0 : options.matches) ? matches.filter((el) => el === null || el === void 0 ? void 0 : el.matches(options.matches)) : matches;
173
+ const selector = options === null || options === void 0 ? void 0 : options.selector;
174
+ return selector
175
+ ? matches
176
+ .map((item) => Array.from(item.querySelectorAll(selector)))
177
+ .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], [])
178
+ .filter((match) => !!match)
179
+ : matches;
180
+ }
181
+ function querySingle(element, slotSelector, options) {
182
+ let match = slotSelector === defaultSlotSelector
183
+ ? getDirectChildren(element, defaultSlotSelector)[0] || null
184
+ : element.querySelector(slotSelector);
185
+ match = options && options.direct === false ? match : (match === null || match === void 0 ? void 0 : match.parentElement) === element ? match : null;
186
+ match = (options === null || options === void 0 ? void 0 : options.matches) ? ((match === null || match === void 0 ? void 0 : match.matches(options.matches)) ? match : null) : match;
187
+ const selector = options === null || options === void 0 ? void 0 : options.selector;
188
+ return selector ? match === null || match === void 0 ? void 0 : match.querySelector(selector) : match;
189
+ }
190
+ function filterDirectChildren(el, selector) {
191
+ return Array.from(el.children).filter((child) => child.matches(selector));
192
+ }
193
+ // set a default icon from a defined set or allow an override with an icon name string
194
+ function setRequestedIcon(iconObject, iconValue, matchedValue) {
195
+ if (typeof iconValue === "string" && iconValue !== "") {
196
+ return iconValue;
197
+ }
198
+ else if (iconValue === "") {
199
+ return iconObject[matchedValue];
200
+ }
201
+ }
202
+ function intersects(rect1, rect2) {
203
+ return !(rect2.left > rect1.right ||
204
+ rect2.right < rect1.left ||
205
+ rect2.top > rect1.bottom ||
206
+ rect2.bottom < rect1.top);
207
+ }
208
+ /**
209
+ * This helper makes sure that boolean aria attributes are properly converted to a string.
210
+ *
211
+ * It should only be used for aria attributes that require a string value of "true" or "false".
212
+ *
213
+ * @param value
214
+ * @returns {string} The string conversion of a boolean value ("true" | "false").
215
+ */
216
+ function toAriaBoolean(value) {
217
+ return Boolean(value).toString();
218
+ }
219
+ /**
220
+ * This helper returns true if the pointer event fired from the primary button of the device.
221
+ *
222
+ * See https://www.w3.org/TR/pointerevents/#the-button-property.
223
+ *
224
+ * @param event
225
+ * @returns {boolean}
226
+ */
227
+ function isPrimaryPointerButton(event) {
228
+ return !!(event.isPrimary && event.button === 0);
229
+ }
230
+
231
+ export { CSS_UTILITY as C, TEXT as T, autoTheme as a, getSlotted as b, getElementDir as c, darkTheme as d, getThemeName as e, focusElement as f, getElementProp as g, closestElementCrossShadowBoundary as h, isPrimaryPointerButton as i, ensureId as j, isCalciteFocusable as k, intersects as l, filterDirectChildren as m, nodeListToArray as n, getRootNode as o, containsCrossShadowBoundary as p, queryElementRoots as q, setRequestedIcon as s, toAriaBoolean as t };
@@ -0,0 +1,96 @@
1
+ /*!
2
+ * Copyright 2022 Esri
3
+ * Licensed under the Apache License, Version 2.0
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
7
+ import { g as getElementProp } from './dom.js';
8
+
9
+ /*!
10
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
11
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
12
+ * v1.0.0-beta.97
13
+ */
14
+ const CSS = {
15
+ containerSmall: "container--s",
16
+ containerMedium: "container--m",
17
+ containerLarge: "container--l"
18
+ };
19
+
20
+ const dropdownGroupCss = "@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{display:block}.container{text-align:start}.container--s{font-size:var(--calcite-font-size--2);line-height:1rem}.container--s .dropdown-title{padding:0.5rem}.container--m{font-size:var(--calcite-font-size--1);line-height:1rem}.container--m .dropdown-title{padding:0.75rem}.container--l{font-size:var(--calcite-font-size-0);line-height:1.25rem}.container--l .dropdown-title{padding:1rem}.dropdown-title{-webkit-margin-after:-1px;margin-block-end:-1px;display:block;cursor:default;overflow-wrap:break-word;border-width:0px;border-block-end-width:1px;border-style:solid;border-color:var(--calcite-ui-border-3);font-weight:var(--calcite-font-weight-bold);color:var(--calcite-ui-text-2)}.dropdown-separator{display:block;block-size:1px;background-color:var(--calcite-ui-border-3)}";
21
+
22
+ const DropdownGroup = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
23
+ constructor() {
24
+ super();
25
+ this.__registerHost();
26
+ this.__attachShadow();
27
+ this.calciteInternalDropdownItemChange = createEvent(this, "calciteInternalDropdownItemChange", 6);
28
+ /**
29
+ specify the selection mode - multi (allow any number of (or no) active items), single (allow and require one active item),
30
+ none (no active items), defaults to single
31
+ */
32
+ this.selectionMode = "single";
33
+ }
34
+ //--------------------------------------------------------------------------
35
+ //
36
+ // Lifecycle
37
+ //
38
+ //--------------------------------------------------------------------------
39
+ componentWillLoad() {
40
+ this.groupPosition = this.getGroupPosition();
41
+ }
42
+ render() {
43
+ const scale = this.scale || getElementProp(this.el, "scale", "m");
44
+ const groupTitle = this.groupTitle ? (h("span", { "aria-hidden": "true", class: "dropdown-title" }, this.groupTitle)) : null;
45
+ const dropdownSeparator = this.groupPosition > 0 ? h("div", { class: "dropdown-separator", role: "separator" }) : null;
46
+ return (h(Host, { "aria-label": this.groupTitle, role: "group" }, h("div", { class: {
47
+ container: true,
48
+ [CSS.containerSmall]: scale === "s",
49
+ [CSS.containerMedium]: scale === "m",
50
+ [CSS.containerLarge]: scale === "l"
51
+ }, title: this.groupTitle }, dropdownSeparator, groupTitle, h("slot", null))));
52
+ }
53
+ //--------------------------------------------------------------------------
54
+ //
55
+ // Event Listeners
56
+ //
57
+ //--------------------------------------------------------------------------
58
+ updateActiveItemOnChange(event) {
59
+ this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
60
+ this.requestedDropdownItem = event.detail.requestedDropdownItem;
61
+ this.calciteInternalDropdownItemChange.emit({
62
+ requestedDropdownGroup: this.requestedDropdownGroup,
63
+ requestedDropdownItem: this.requestedDropdownItem
64
+ });
65
+ }
66
+ //--------------------------------------------------------------------------
67
+ //
68
+ // Private Methods
69
+ //
70
+ //--------------------------------------------------------------------------
71
+ getGroupPosition() {
72
+ return Array.prototype.indexOf.call(this.el.parentElement.querySelectorAll("calcite-dropdown-group"), this.el);
73
+ }
74
+ get el() { return this; }
75
+ static get style() { return dropdownGroupCss; }
76
+ }, [1, "calcite-dropdown-group", {
77
+ "groupTitle": [513, "group-title"],
78
+ "selectionMode": [513, "selection-mode"],
79
+ "scale": [513]
80
+ }, [[0, "calciteInternalDropdownItemSelect", "updateActiveItemOnChange"]]]);
81
+ function defineCustomElement() {
82
+ if (typeof customElements === "undefined") {
83
+ return;
84
+ }
85
+ const components = ["calcite-dropdown-group"];
86
+ components.forEach(tagName => { switch (tagName) {
87
+ case "calcite-dropdown-group":
88
+ if (!customElements.get(tagName)) {
89
+ customElements.define(tagName, DropdownGroup);
90
+ }
91
+ break;
92
+ } });
93
+ }
94
+ defineCustomElement();
95
+
96
+ export { DropdownGroup as D, defineCustomElement as d };
@@ -0,0 +1,232 @@
1
+ /*!
2
+ * Copyright 2022 Esri
3
+ * Licensed under the Apache License, Version 2.0
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
7
+ import { g as getElementProp, t as toAriaBoolean } from './dom.js';
8
+ import { d as defineCustomElement$1 } from './icon.js';
9
+
10
+ /*!
11
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
12
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
13
+ * v1.0.0-beta.97
14
+ */
15
+ const CSS = {
16
+ containerLink: "container--link",
17
+ containerSmall: "container--s",
18
+ containerMedium: "container--m",
19
+ containerLarge: "container--l",
20
+ containerMulti: "container--multi-selection",
21
+ containerSingle: "container--single-selection",
22
+ containerNone: "container--none-selection"
23
+ };
24
+
25
+ const dropdownItemCss = "@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}.container--s{padding-block:0.25rem;font-size:var(--calcite-font-size--2);line-height:1rem;-webkit-padding-end:0.5rem;padding-inline-end:0.5rem;-webkit-padding-start:1.5rem;padding-inline-start:1.5rem}.container--m{padding-block:0.5rem;font-size:var(--calcite-font-size--1);line-height:1rem;-webkit-padding-end:0.75rem;padding-inline-end:0.75rem;-webkit-padding-start:2rem;padding-inline-start:2rem}.container--l{padding-block:0.75rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;-webkit-padding-end:1rem;padding-inline-end:1rem;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.container--s.container--none-selection{-webkit-padding-start:0.25rem;padding-inline-start:0.25rem}.container--s.container--none-selection .dropdown-link{-webkit-padding-start:0px;padding-inline-start:0px}.container--m.container--none-selection{-webkit-padding-start:0.5rem;padding-inline-start:0.5rem}.container--m.container--none-selection .dropdown-link{-webkit-padding-start:0px;padding-inline-start:0px}.container--l.container--none-selection{-webkit-padding-start:0.75rem;padding-inline-start:0.75rem}.container--l.container--none-selection .dropdown-link{-webkit-padding-start:0px;padding-inline-start:0px}:host{position:relative;display:flex;flex-grow:1;align-items:center}.container{position:relative;display:flex;flex-grow:1;cursor:pointer;align-items:center;color:var(--calcite-ui-text-3);-webkit-text-decoration-line:none;text-decoration-line:none;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);text-align:start}.dropdown-item-content{flex:1 1 auto;-webkit-padding-end:auto;padding-inline-end:auto;-webkit-padding-start:0.25rem;padding-inline-start:0.25rem}:host,.container--link a{outline-color:transparent}:host(:focus){outline:2px solid transparent;outline:2px solid var(--calcite-ui-brand);outline-offset:-2px}.container--link{padding:0px}.container--link a{position:relative;display:flex;flex-grow:1;cursor:pointer;align-items:center;color:var(--calcite-ui-text-3);-webkit-text-decoration-line:none;text-decoration-line:none;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}.container--s .dropdown-link{padding-block:0.25rem;font-size:var(--calcite-font-size--2);line-height:1rem;-webkit-padding-end:0.5rem;padding-inline-end:0.5rem;-webkit-padding-start:1.5rem;padding-inline-start:1.5rem}.container--m .dropdown-link{padding-block:0.5rem;font-size:var(--calcite-font-size--1);line-height:1rem;-webkit-padding-end:0.75rem;padding-inline-end:0.75rem;-webkit-padding-start:2rem;padding-inline-start:2rem}.container--l .dropdown-link{padding-block:0.75rem;font-size:var(--calcite-font-size-0);line-height:1.25rem;-webkit-padding-end:1rem;padding-inline-end:1rem;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}:host(:hover) .container,:host(:active) .container{background-color:var(--calcite-ui-foreground-2);color:var(--calcite-ui-text-1);-webkit-text-decoration-line:none;text-decoration-line:none}:host(:hover) .container--link .dropdown-link,:host(:active) .container--link .dropdown-link{color:var(--calcite-ui-text-1)}:host(:focus) .container{color:var(--calcite-ui-text-1);-webkit-text-decoration-line:none;text-decoration-line:none}:host(:active) .container{background-color:var(--calcite-ui-foreground-3)}:host(:hover) .container:before,:host(:active) .container:before,:host(:focus) .container:before{opacity:1}:host([selected]) .container:not(.container--none-selection),:host([selected]) .container--link .dropdown-link{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-ui-text-1)}:host([selected]) .container:not(.container--none-selection):before,:host([selected]) .container--link .dropdown-link:before{opacity:1;color:var(--calcite-ui-brand)}:host([selected]) .container:not(.container--none-selection) calcite-icon,:host([selected]) .container--link .dropdown-link calcite-icon{color:var(--calcite-ui-brand)}.container--multi-selection:before,.container--none-selection:before{display:none}.container--s:before{inset-inline-start:0.5rem}.container--m:before{inset-inline-start:0.75rem}.container--l:before{inset-inline-start:1rem}.dropdown-item-icon{position:absolute;opacity:0;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:scale(0.9)}.container--s .dropdown-item-icon{inset-inline-start:0.25rem}.container--m .dropdown-item-icon{inset-inline-start:0.5rem}.container--l .dropdown-item-icon{inset-inline-start:0.75rem}:host(:hover) .dropdown-item-icon{color:var(--calcite-ui-border-1);opacity:1}:host([active]) .dropdown-item-icon{color:var(--calcite-ui-brand);opacity:1}.container--s .dropdown-item-icon-start{-webkit-margin-end:0.5rem;margin-inline-end:0.5rem;-webkit-margin-start:0.25rem;margin-inline-start:0.25rem}.container--s .dropdown-item-icon-end{-webkit-margin-start:0.5rem;margin-inline-start:0.5rem}.container--m .dropdown-item-icon-start{-webkit-margin-end:0.75rem;margin-inline-end:0.75rem;-webkit-margin-start:0.25rem;margin-inline-start:0.25rem}.container--m .dropdown-item-icon-end{-webkit-margin-start:0.75rem;margin-inline-start:0.75rem}.container--l .dropdown-item-icon-start{-webkit-margin-end:1rem;margin-inline-end:1rem;-webkit-margin-start:0.25rem;margin-inline-start:0.25rem}.container--l .dropdown-item-icon-end{-webkit-margin-start:1rem;margin-inline-start:1rem}";
26
+
27
+ const DropdownItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
28
+ constructor() {
29
+ super();
30
+ this.__registerHost();
31
+ this.__attachShadow();
32
+ this.calciteInternalDropdownItemSelect = createEvent(this, "calciteInternalDropdownItemSelect", 6);
33
+ this.calciteInternalDropdownItemKeyEvent = createEvent(this, "calciteInternalDropdownItemKeyEvent", 6);
34
+ this.calciteInternalDropdownCloseRequest = createEvent(this, "calciteInternalDropdownCloseRequest", 6);
35
+ //--------------------------------------------------------------------------
36
+ //
37
+ // Public Properties
38
+ //
39
+ //--------------------------------------------------------------------------
40
+ /**
41
+ * Indicates whether the item is active.
42
+ *
43
+ * @deprecated Use selected instead.
44
+ */
45
+ this.active = false;
46
+ /** When true, item is selected */
47
+ this.selected = false;
48
+ }
49
+ activeHandler(value) {
50
+ this.selected = value;
51
+ }
52
+ selectedHandler(value) {
53
+ this.active = value;
54
+ }
55
+ //--------------------------------------------------------------------------
56
+ //
57
+ // Public Methods
58
+ //
59
+ //--------------------------------------------------------------------------
60
+ /** Sets focus on the component. */
61
+ async setFocus() {
62
+ var _a;
63
+ (_a = this.el) === null || _a === void 0 ? void 0 : _a.focus();
64
+ }
65
+ //--------------------------------------------------------------------------
66
+ //
67
+ // Lifecycle
68
+ //
69
+ //--------------------------------------------------------------------------
70
+ componentWillLoad() {
71
+ this.initialize();
72
+ }
73
+ connectedCallback() {
74
+ const isSelected = this.selected || this.active;
75
+ if (isSelected) {
76
+ this.activeHandler(isSelected);
77
+ this.selectedHandler(isSelected);
78
+ }
79
+ this.initialize();
80
+ }
81
+ render() {
82
+ const scale = getElementProp(this.el, "scale", "m");
83
+ const iconStartEl = (h("calcite-icon", { class: "dropdown-item-icon-start", flipRtl: this.iconFlipRtl === "start" || this.iconFlipRtl === "both", icon: this.iconStart, scale: "s" }));
84
+ const contentNode = (h("span", { class: "dropdown-item-content" }, h("slot", null)));
85
+ const iconEndEl = (h("calcite-icon", { class: "dropdown-item-icon-end", flipRtl: this.iconFlipRtl === "end" || this.iconFlipRtl === "both", icon: this.iconEnd, scale: "s" }));
86
+ const slottedContent = this.iconStart && this.iconEnd
87
+ ? [iconStartEl, contentNode, iconEndEl]
88
+ : this.iconStart
89
+ ? [iconStartEl, h("slot", null)]
90
+ : this.iconEnd
91
+ ? [contentNode, iconEndEl]
92
+ : contentNode;
93
+ const contentEl = !this.href ? (slottedContent) : (h("a", { "aria-label": this.label, class: "dropdown-link", href: this.href, ref: (el) => (this.childLink = el), rel: this.rel, target: this.target }, slottedContent));
94
+ const itemRole = this.href
95
+ ? null
96
+ : this.selectionMode === "single"
97
+ ? "menuitemradio"
98
+ : this.selectionMode === "multi"
99
+ ? "menuitemcheckbox"
100
+ : "menuitem";
101
+ const itemAria = this.selectionMode !== "none" ? toAriaBoolean(this.selected) : null;
102
+ return (h(Host, { "aria-checked": itemAria, role: itemRole, tabindex: "0" }, h("div", { class: {
103
+ container: true,
104
+ [CSS.containerLink]: !!this.href,
105
+ [CSS.containerSmall]: scale === "s",
106
+ [CSS.containerMedium]: scale === "m",
107
+ [CSS.containerLarge]: scale === "l",
108
+ [CSS.containerMulti]: this.selectionMode === "multi",
109
+ [CSS.containerSingle]: this.selectionMode === "single",
110
+ [CSS.containerNone]: this.selectionMode === "none"
111
+ } }, this.selectionMode !== "none" ? (h("calcite-icon", { class: "dropdown-item-icon", icon: this.selectionMode === "multi" ? "check" : "bullet-point", scale: "s" })) : null, contentEl)));
112
+ }
113
+ //--------------------------------------------------------------------------
114
+ //
115
+ // Event Listeners
116
+ //
117
+ //--------------------------------------------------------------------------
118
+ onClick() {
119
+ this.emitRequestedItem();
120
+ }
121
+ keyDownHandler(event) {
122
+ switch (event.key) {
123
+ case " ":
124
+ case "Enter":
125
+ this.emitRequestedItem();
126
+ if (this.href) {
127
+ this.childLink.click();
128
+ }
129
+ event.preventDefault();
130
+ break;
131
+ case "Escape":
132
+ this.calciteInternalDropdownCloseRequest.emit();
133
+ event.preventDefault();
134
+ break;
135
+ case "Tab":
136
+ this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
137
+ break;
138
+ case "ArrowUp":
139
+ case "ArrowDown":
140
+ case "Home":
141
+ case "End":
142
+ event.preventDefault();
143
+ this.calciteInternalDropdownItemKeyEvent.emit({ keyboardEvent: event });
144
+ break;
145
+ }
146
+ }
147
+ updateActiveItemOnChange(event) {
148
+ const parentEmittedChange = event.composedPath().includes(this.parentDropdownGroupEl);
149
+ if (parentEmittedChange) {
150
+ this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
151
+ this.requestedDropdownItem = event.detail.requestedDropdownItem;
152
+ this.determineActiveItem();
153
+ }
154
+ event.stopPropagation();
155
+ }
156
+ //--------------------------------------------------------------------------
157
+ //
158
+ // Private Methods
159
+ //
160
+ //--------------------------------------------------------------------------
161
+ initialize() {
162
+ this.selectionMode = getElementProp(this.el, "selection-mode", "single");
163
+ this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group");
164
+ if (this.selectionMode === "none") {
165
+ this.selected = false;
166
+ }
167
+ }
168
+ determineActiveItem() {
169
+ switch (this.selectionMode) {
170
+ case "multi":
171
+ if (this.el === this.requestedDropdownItem) {
172
+ this.selected = !this.selected;
173
+ }
174
+ break;
175
+ case "single":
176
+ if (this.el === this.requestedDropdownItem) {
177
+ this.selected = true;
178
+ }
179
+ else if (this.requestedDropdownGroup === this.parentDropdownGroupEl) {
180
+ this.selected = false;
181
+ }
182
+ break;
183
+ case "none":
184
+ this.selected = false;
185
+ break;
186
+ }
187
+ }
188
+ emitRequestedItem() {
189
+ this.calciteInternalDropdownItemSelect.emit({
190
+ requestedDropdownItem: this.el,
191
+ requestedDropdownGroup: this.parentDropdownGroupEl
192
+ });
193
+ }
194
+ get el() { return this; }
195
+ static get watchers() { return {
196
+ "active": ["activeHandler"],
197
+ "selected": ["selectedHandler"]
198
+ }; }
199
+ static get style() { return dropdownItemCss; }
200
+ }, [1, "calcite-dropdown-item", {
201
+ "active": [1540],
202
+ "selected": [1540],
203
+ "iconFlipRtl": [513, "icon-flip-rtl"],
204
+ "iconStart": [513, "icon-start"],
205
+ "iconEnd": [513, "icon-end"],
206
+ "href": [513],
207
+ "label": [1],
208
+ "rel": [513],
209
+ "target": [513],
210
+ "setFocus": [64]
211
+ }, [[0, "click", "onClick"], [0, "keydown", "keyDownHandler"], [16, "calciteInternalDropdownItemChange", "updateActiveItemOnChange"]]]);
212
+ function defineCustomElement() {
213
+ if (typeof customElements === "undefined") {
214
+ return;
215
+ }
216
+ const components = ["calcite-dropdown-item", "calcite-icon"];
217
+ components.forEach(tagName => { switch (tagName) {
218
+ case "calcite-dropdown-item":
219
+ if (!customElements.get(tagName)) {
220
+ customElements.define(tagName, DropdownItem);
221
+ }
222
+ break;
223
+ case "calcite-icon":
224
+ if (!customElements.get(tagName)) {
225
+ defineCustomElement$1();
226
+ }
227
+ break;
228
+ } });
229
+ }
230
+ defineCustomElement();
231
+
232
+ export { DropdownItem as D, defineCustomElement as d };