@shoper/phoenix_design_system 0.27.1 → 0.28.0-1

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 (243) hide show
  1. package/build/cjs/{packages/phoenix/external → external}/classnames/index.js +10 -16
  2. package/build/{esm/packages/phoenix → cjs}/external/classnames/index.js.map +1 -1
  3. package/build/cjs/external/lit/external/lit-html/async-directive.js +18 -0
  4. package/build/cjs/external/lit/external/lit-html/async-directive.js.map +1 -0
  5. package/build/cjs/external/lit/external/lit-html/directive-helpers.js +14 -0
  6. package/build/cjs/external/lit/external/lit-html/directive-helpers.js.map +1 -0
  7. package/build/cjs/external/lit/external/lit-html/directive.js +2 -1
  8. package/build/cjs/external/lit/external/lit-html/directive.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js +1 -1
  10. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +1 -1
  11. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js +2 -2
  12. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js +2 -2
  13. package/build/cjs/packages/phoenix/src/components/color_swatches/color_item/color_item.js +1 -1
  14. package/build/cjs/packages/phoenix/src/components/color_swatches/show-more/show_more.js +1 -1
  15. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js +6 -14
  16. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  17. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_constants.js +2 -0
  18. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_constants.js.map +1 -1
  19. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_toggler.js +4 -23
  20. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_toggler.js.map +1 -1
  21. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox.js +1 -1
  22. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox.js.map +1 -1
  23. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox_content.js +1 -1
  24. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox_control.js +3 -3
  25. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox_control.js.map +1 -1
  26. package/build/cjs/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js +11 -13
  27. package/build/cjs/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js.map +1 -1
  28. package/build/cjs/packages/phoenix/src/components/form/controllers/props_synchronizing/control_props_sync_consumer_controller.js +1 -1
  29. package/build/cjs/packages/phoenix/src/components/form/controllers/props_synchronizing/control_props_sync_provider_controller.js +1 -1
  30. package/build/cjs/packages/phoenix/src/components/form/input/input.js +2 -2
  31. package/build/cjs/packages/phoenix/src/components/form/input/input.js.map +1 -1
  32. package/build/cjs/packages/phoenix/src/components/form/input/input_icon.js +1 -1
  33. package/build/cjs/packages/phoenix/src/components/form/radio/radio.js +1 -1
  34. package/build/cjs/packages/phoenix/src/components/form/radio/radio.js.map +1 -1
  35. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_components_constatns.js +29 -0
  36. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_components_constatns.js.map +1 -0
  37. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_input.js +66 -0
  38. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_input.js.map +1 -0
  39. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_option.js +57 -0
  40. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_option.js.map +1 -0
  41. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_options.js +31 -0
  42. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_options.js.map +1 -0
  43. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_search.js +43 -0
  44. package/build/cjs/packages/phoenix/src/components/form/select/control/components/select_search.js.map +1 -0
  45. package/build/cjs/packages/phoenix/src/components/form/select/control/controllers/base_select_controller.js +93 -0
  46. package/build/cjs/packages/phoenix/src/components/form/select/control/controllers/base_select_controller.js.map +1 -0
  47. package/build/cjs/packages/phoenix/src/components/form/select/control/controllers/multi_select_controller.js +22 -0
  48. package/build/cjs/packages/phoenix/src/components/form/select/control/controllers/multi_select_controller.js.map +1 -0
  49. package/build/cjs/packages/phoenix/src/components/form/select/control/controllers/select_controller.js +19 -0
  50. package/build/cjs/packages/phoenix/src/components/form/select/control/controllers/select_controller.js.map +1 -0
  51. package/build/cjs/packages/phoenix/src/components/form/select/control/model/select_option.js +19 -0
  52. package/build/cjs/packages/phoenix/src/components/form/select/control/model/select_option.js.map +1 -0
  53. package/build/cjs/packages/phoenix/src/components/form/select/control/model/select_option_mapper.js +24 -0
  54. package/build/cjs/packages/phoenix/src/components/form/select/control/model/select_option_mapper.js.map +1 -0
  55. package/build/cjs/packages/phoenix/src/components/form/select/control/select_control.js +200 -0
  56. package/build/cjs/packages/phoenix/src/components/form/select/control/select_control.js.map +1 -0
  57. package/build/cjs/packages/phoenix/src/components/form/select/control/select_control_constants.js +23 -0
  58. package/build/cjs/packages/phoenix/src/components/form/select/control/select_control_constants.js.map +1 -0
  59. package/build/cjs/packages/phoenix/src/components/form/select/control/select_control_utils.js +52 -0
  60. package/build/cjs/packages/phoenix/src/components/form/select/control/select_control_utils.js.map +1 -0
  61. package/build/cjs/packages/phoenix/src/components/form/select/select.js +67 -0
  62. package/build/cjs/packages/phoenix/src/components/form/select/select.js.map +1 -0
  63. package/build/cjs/packages/phoenix/src/components/form/select/select_constants.js +15 -0
  64. package/build/cjs/packages/phoenix/src/components/form/select/select_constants.js.map +1 -0
  65. package/build/cjs/packages/phoenix/src/components/form/switch/switch.js +1 -1
  66. package/build/cjs/packages/phoenix/src/components/form/switch/switch.js.map +1 -1
  67. package/build/cjs/packages/phoenix/src/components/form/textarea/textarea.js +1 -1
  68. package/build/cjs/packages/phoenix/src/components/form/textarea/textarea.js.map +1 -1
  69. package/build/cjs/packages/phoenix/src/components/icon/icon.js +1 -1
  70. package/build/cjs/packages/phoenix/src/components/icon/icon.js.map +1 -1
  71. package/build/cjs/packages/phoenix/src/components/messages/base_message.js +1 -1
  72. package/build/cjs/packages/phoenix/src/components/modal/modal.js +4 -4
  73. package/build/cjs/packages/phoenix/src/components/portal/portal.js +1 -1
  74. package/build/cjs/packages/phoenix/src/components/portal/portal.js.map +1 -1
  75. package/build/cjs/packages/phoenix/src/components/portal/portal_target.js +1 -1
  76. package/build/cjs/packages/phoenix/src/components/scroll_to/scroll_to.js +1 -1
  77. package/build/cjs/packages/phoenix/src/components/tabs/tab/tab.js +1 -1
  78. package/build/cjs/packages/phoenix/src/components/tag/tag.js +3 -2
  79. package/build/cjs/packages/phoenix/src/components/tag/tag.js.map +1 -1
  80. package/build/cjs/packages/phoenix/src/controllers/{btn_controller.js → btn_controller/btn_controller.js} +4 -3
  81. package/build/cjs/packages/phoenix/src/controllers/btn_controller/btn_controller.js.map +1 -0
  82. package/build/cjs/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js +4 -4
  83. package/build/cjs/packages/phoenix/src/controllers/list_box_controller/list_box_controller_constants.js +11 -0
  84. package/build/cjs/packages/phoenix/src/controllers/list_box_controller/list_box_controller_constants.js.map +1 -0
  85. package/build/cjs/packages/phoenix/src/controllers/list_box_controller/list_box_keyboard_controller.js +84 -0
  86. package/build/cjs/packages/phoenix/src/controllers/list_box_controller/list_box_keyboard_controller.js.map +1 -0
  87. package/build/cjs/packages/phoenix/src/core/classes/behavior_subject/behavior_subject.js +2 -7
  88. package/build/cjs/packages/phoenix/src/core/classes/behavior_subject/behavior_subject.js.map +1 -1
  89. package/build/cjs/packages/phoenix/src/core/classes/subject/subject.js +8 -1
  90. package/build/cjs/packages/phoenix/src/core/classes/subject/subject.js.map +1 -1
  91. package/build/cjs/packages/phoenix/src/core/context/context_consumer_controller.js +1 -1
  92. package/build/cjs/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js +10 -5
  93. package/build/cjs/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js.map +1 -1
  94. package/build/cjs/packages/phoenix/src/directives/observable_directive.js +40 -0
  95. package/build/cjs/packages/phoenix/src/directives/observable_directive.js.map +1 -0
  96. package/build/cjs/packages/phoenix/src/index.js +85 -50
  97. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  98. package/build/esm/{packages/phoenix/external → external}/classnames/index.js +10 -16
  99. package/build/{cjs/packages/phoenix → esm}/external/classnames/index.js.map +1 -1
  100. package/build/esm/external/lit/external/lit-html/async-directive.js +12 -0
  101. package/build/esm/external/lit/external/lit-html/async-directive.js.map +1 -0
  102. package/build/esm/external/lit/external/lit-html/directive-helpers.js +10 -0
  103. package/build/esm/external/lit/external/lit-html/directive-helpers.js.map +1 -0
  104. package/build/esm/external/lit/external/lit-html/directive.js +2 -2
  105. package/build/esm/packages/phoenix/src/components/accordion/accordion.js +1 -1
  106. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +1 -1
  107. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +2 -2
  108. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js +2 -2
  109. package/build/esm/packages/phoenix/src/components/color_swatches/color_item/color_item.js +1 -1
  110. package/build/esm/packages/phoenix/src/components/color_swatches/show-more/show_more.js +1 -1
  111. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.d.ts +1 -2
  112. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js +6 -14
  113. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  114. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.d.ts +1 -0
  115. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.js +2 -1
  116. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_constants.js.map +1 -1
  117. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.d.ts +0 -3
  118. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.js +5 -24
  119. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_toggler.js.map +1 -1
  120. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_types.d.ts +0 -1
  121. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox.js +1 -1
  122. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox.js.map +1 -1
  123. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox_content.js +1 -1
  124. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox_control.js +3 -3
  125. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox_control.js.map +1 -1
  126. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.d.ts +2 -3
  127. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js +11 -13
  128. package/build/esm/packages/phoenix/src/components/form/color_swatches_control/color_swatches_control.js.map +1 -1
  129. package/build/esm/packages/phoenix/src/components/form/controllers/props_synchronizing/control_props_sync_consumer_controller.js +1 -1
  130. package/build/esm/packages/phoenix/src/components/form/controllers/props_synchronizing/control_props_sync_provider_controller.js +1 -1
  131. package/build/esm/packages/phoenix/src/components/form/input/input.js +2 -2
  132. package/build/esm/packages/phoenix/src/components/form/input/input.js.map +1 -1
  133. package/build/esm/packages/phoenix/src/components/form/input/input_icon.js +1 -1
  134. package/build/esm/packages/phoenix/src/components/form/radio/radio.js +1 -1
  135. package/build/esm/packages/phoenix/src/components/form/radio/radio.js.map +1 -1
  136. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_close_btn.d.ts +6 -0
  137. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_close_btn.js +23 -0
  138. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_close_btn.js.map +1 -0
  139. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_components_constatns.d.ts +19 -0
  140. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_components_constatns.js +21 -0
  141. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_components_types.d.ts +4 -0
  142. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_components_types.js +2 -0
  143. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_components_types.js.map +1 -0
  144. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_input.d.ts +13 -0
  145. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_input.js +64 -0
  146. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_input.js.map +1 -0
  147. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_option.d.ts +11 -0
  148. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_option.js +55 -0
  149. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_option.js.map +1 -0
  150. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_options.d.ts +5 -0
  151. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_options.js +29 -0
  152. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_options.js.map +1 -0
  153. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_search.d.ts +7 -0
  154. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_search.js +41 -0
  155. package/build/esm/packages/phoenix/src/components/form/select/control/components/select_search.js.map +1 -0
  156. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/base_select_controller.d.ts +27 -0
  157. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/base_select_controller.js +89 -0
  158. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/base_select_controller.js.map +1 -0
  159. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/multi_select_controller.d.ts +7 -0
  160. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/multi_select_controller.js +18 -0
  161. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/multi_select_controller.js.map +1 -0
  162. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/select_controller.d.ts +5 -0
  163. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/select_controller.js +15 -0
  164. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/select_controller.js.map +1 -0
  165. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/select_controllers_types.d.ts +22 -0
  166. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/select_controllers_types.js +5 -0
  167. package/build/esm/packages/phoenix/src/components/form/select/control/controllers/select_controllers_types.js.map +1 -0
  168. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option.d.ts +10 -0
  169. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option.js +15 -0
  170. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option.js.map +1 -0
  171. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option_constants.d.ts +7 -0
  172. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option_constants.js +2 -0
  173. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option_constants.js.map +1 -0
  174. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option_mapper.d.ts +5 -0
  175. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option_mapper.js +20 -0
  176. package/build/esm/packages/phoenix/src/components/form/select/control/model/select_option_mapper.js.map +1 -0
  177. package/build/esm/packages/phoenix/src/components/form/select/control/select_control.d.ts +34 -0
  178. package/build/esm/packages/phoenix/src/components/form/select/control/select_control.js +198 -0
  179. package/build/esm/packages/phoenix/src/components/form/select/control/select_control.js.map +1 -0
  180. package/build/esm/packages/phoenix/src/components/form/select/control/select_control_constants.d.ts +13 -0
  181. package/build/esm/packages/phoenix/src/components/form/select/control/select_control_constants.js +16 -0
  182. package/build/esm/packages/phoenix/src/components/form/select/control/select_control_constants.js.map +1 -0
  183. package/build/esm/packages/phoenix/src/components/form/select/control/select_control_utils.d.ts +9 -0
  184. package/build/esm/packages/phoenix/src/components/form/select/control/select_control_utils.js +48 -0
  185. package/build/esm/packages/phoenix/src/components/form/select/control/select_control_utils.js.map +1 -0
  186. package/build/esm/packages/phoenix/src/components/form/select/select.d.ts +12 -0
  187. package/build/esm/packages/phoenix/src/components/form/select/select.js +65 -0
  188. package/build/esm/packages/phoenix/src/components/form/select/select.js.map +1 -0
  189. package/build/esm/packages/phoenix/src/components/form/select/select_constants.d.ts +7 -0
  190. package/build/esm/packages/phoenix/src/components/form/select/select_constants.js +11 -0
  191. package/build/esm/packages/phoenix/src/components/form/select/select_constants.js.map +1 -0
  192. package/build/esm/packages/phoenix/src/components/form/select/select_types.d.ts +8 -0
  193. package/build/esm/packages/phoenix/src/components/form/select/select_types.js +3 -0
  194. package/build/esm/packages/phoenix/src/components/form/select/select_types.js.map +1 -0
  195. package/build/esm/packages/phoenix/src/components/form/switch/switch.js +1 -1
  196. package/build/esm/packages/phoenix/src/components/form/switch/switch.js.map +1 -1
  197. package/build/esm/packages/phoenix/src/components/form/textarea/textarea.js +1 -1
  198. package/build/esm/packages/phoenix/src/components/form/textarea/textarea.js.map +1 -1
  199. package/build/esm/packages/phoenix/src/components/icon/icon.js +1 -1
  200. package/build/esm/packages/phoenix/src/components/icon/icon.js.map +1 -1
  201. package/build/esm/packages/phoenix/src/components/messages/base_message.js +1 -1
  202. package/build/esm/packages/phoenix/src/components/modal/modal.js +4 -4
  203. package/build/esm/packages/phoenix/src/components/portal/portal.js +1 -1
  204. package/build/esm/packages/phoenix/src/components/portal/portal.js.map +1 -1
  205. package/build/esm/packages/phoenix/src/components/portal/portal_target.js +1 -1
  206. package/build/esm/packages/phoenix/src/components/scroll_to/scroll_to.js +1 -1
  207. package/build/esm/packages/phoenix/src/components/tabs/tab/tab.js +1 -1
  208. package/build/esm/packages/phoenix/src/components/tag/tag.js +3 -2
  209. package/build/esm/packages/phoenix/src/components/tag/tag.js.map +1 -1
  210. package/build/esm/packages/phoenix/src/controllers/{btn_controller.d.ts → btn_controller/btn_controller.d.ts} +2 -1
  211. package/build/esm/packages/phoenix/src/controllers/{btn_controller.js → btn_controller/btn_controller.js} +4 -3
  212. package/build/{cjs/packages/phoenix/src/controllers → esm/packages/phoenix/src/controllers/btn_controller}/btn_controller.js.map +1 -1
  213. package/build/esm/packages/phoenix/src/controllers/btn_controller/btn_controller_types.d.ts +3 -0
  214. package/build/esm/packages/phoenix/src/controllers/btn_controller/btn_controller_types.js +2 -0
  215. package/build/esm/packages/phoenix/src/controllers/btn_controller/btn_controller_types.js.map +1 -0
  216. package/build/esm/packages/phoenix/src/controllers/keystrokes_controller/keystrokes_controller.js +4 -4
  217. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_controller_constants.d.ts +4 -0
  218. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_controller_constants.js +7 -0
  219. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_controller_constants.js.map +1 -0
  220. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_controller_types.d.ts +10 -0
  221. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_controller_types.js +4 -0
  222. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_controller_types.js.map +1 -0
  223. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_keyboard_controller.d.ts +10 -0
  224. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_keyboard_controller.js +80 -0
  225. package/build/esm/packages/phoenix/src/controllers/list_box_controller/list_box_keyboard_controller.js.map +1 -0
  226. package/build/esm/packages/phoenix/src/core/classes/behavior_subject/behavior_subject.d.ts +0 -2
  227. package/build/esm/packages/phoenix/src/core/classes/behavior_subject/behavior_subject.js +2 -7
  228. package/build/esm/packages/phoenix/src/core/classes/behavior_subject/behavior_subject.js.map +1 -1
  229. package/build/esm/packages/phoenix/src/core/classes/subject/subject.d.ts +4 -2
  230. package/build/esm/packages/phoenix/src/core/classes/subject/subject.js +8 -1
  231. package/build/esm/packages/phoenix/src/core/classes/subject/subject.js.map +1 -1
  232. package/build/esm/packages/phoenix/src/core/classes/subject/subject_types.d.ts +2 -1
  233. package/build/esm/packages/phoenix/src/core/context/context_consumer_controller.js +1 -1
  234. package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js +10 -5
  235. package/build/esm/packages/phoenix/src/core/phoenix_light_lit_element/phoenix_light_lit_element.js.map +1 -1
  236. package/build/esm/packages/phoenix/src/directives/observable_directive.d.ts +1 -0
  237. package/build/esm/packages/phoenix/src/directives/observable_directive.js +35 -31
  238. package/build/esm/packages/phoenix/src/directives/observable_directive.js.map +1 -1
  239. package/build/esm/packages/phoenix/src/index.d.ts +6 -1
  240. package/build/esm/packages/phoenix/src/index.js +18 -13
  241. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  242. package/package.json +3 -3
  243. /package/build/esm/packages/phoenix/src/{controllers/btn_controller.js.map → components/form/select/control/components/select_components_constatns.js.map} +0 -0
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../../../../external/tslib/tslib.es6.js');
6
+ var decorators = require('lit/decorators');
7
+ var phoenix_light_lit_element = require('../../../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
8
+ var phoenix_custom_element = require('../../../../../core/decorators/phoenix_custom_element.js');
9
+ var select_components_constatns = require('./select_components_constatns.js');
10
+ var select_control_constants = require('../select_control_constants.js');
11
+ var litHtml = require('lit-html');
12
+ var context_consumer_controller = require('../../../../../core/context/context_consumer_controller.js');
13
+ var observable_directive = require('../../../../../directives/observable_directive.js');
14
+
15
+ exports.HSelectInput = class HSelectInput extends phoenix_light_lit_element.PhoenixLightLitElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ this._contextConsumer = new context_consumer_controller.ContextConsumerController(this);
19
+ this._dispatchOptionDeselect = (option) => {
20
+ this.dispatchEvent(new CustomEvent(select_control_constants.SELECT_EVENT_NAMES.deselectOption, {
21
+ detail: option.value,
22
+ bubbles: true
23
+ }));
24
+ };
25
+ }
26
+ connectedCallback() {
27
+ super.connectedCallback();
28
+ this.setAttribute('slot', select_control_constants.SELECT_SLOT_NAMES.input);
29
+ this.setAttribute('role', 'textbox');
30
+ this._subscribeObserver();
31
+ }
32
+ async _subscribeObserver() {
33
+ this.isMultiselect = (await this._contextConsumer.consumeAsync(select_control_constants.SELECT_CONTEXTS.isMultiselect));
34
+ this.selectedOptions$ = (await this._contextConsumer.consumeAsync(select_control_constants.SELECT_CONTEXTS.selectedOptions$));
35
+ }
36
+ render() {
37
+ if (!this.selectedOptions$)
38
+ return;
39
+ return litHtml.html `
40
+ ${observable_directive.observe(this.selectedOptions$, (selectOptions) => {
41
+ var _a;
42
+ if (!selectOptions.length)
43
+ return litHtml.html `${(_a = this.getSlot(select_components_constatns.SELECT_INPUT_PLACEHOLDER_SLOT_NAME)) !== null && _a !== void 0 ? _a : 'Select'}`;
44
+ return this.isMultiselect
45
+ ? litHtml.html `${selectOptions.map((option) => litHtml.html `<h-tag @tag.remove=${() => this._dispatchOptionDeselect(option)}>
46
+ ${option.content}
47
+
48
+ <h-tag-remove-button>x</h-tag-remove-button>
49
+ </h-tag>`)}`
50
+ : selectOptions[0].content;
51
+ })}
52
+ `;
53
+ }
54
+ };
55
+ tslib_es6.__decorate([
56
+ decorators.state(),
57
+ tslib_es6.__metadata("design:type", Object)
58
+ ], exports.HSelectInput.prototype, "selectedOptions$", void 0);
59
+ tslib_es6.__decorate([
60
+ decorators.state(),
61
+ tslib_es6.__metadata("design:type", Boolean)
62
+ ], exports.HSelectInput.prototype, "isMultiselect", void 0);
63
+ exports.HSelectInput = tslib_es6.__decorate([
64
+ phoenix_custom_element.phoenixCustomElement(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.input)
65
+ ], exports.HSelectInput);
66
+ //# sourceMappingURL=select_input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,qDAAyD;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../../../../external/tslib/tslib.es6.js');
6
+ var phoenix_light_lit_element = require('../../../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
7
+ var phoenix_custom_element = require('../../../../../core/decorators/phoenix_custom_element.js');
8
+ var decorators_js = require('@lit/reactive-element/decorators.js');
9
+ var select_components_constatns = require('./select_components_constatns.js');
10
+ var btn_controller = require('../../../../../controllers/btn_controller/btn_controller.js');
11
+
12
+ exports.HOption = class HOption extends phoenix_light_lit_element.PhoenixLightLitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.selected = false;
16
+ this.disabled = false;
17
+ this._dispatchClickedEvent = () => {
18
+ if (this.disabled)
19
+ return;
20
+ this.dispatchEvent(new CustomEvent(select_components_constatns.SELECT_OPTION_EVENT_NAMES.clicked, {
21
+ bubbles: true,
22
+ detail: {
23
+ $option: this
24
+ }
25
+ }));
26
+ };
27
+ }
28
+ connectedCallback() {
29
+ super.connectedCallback();
30
+ this._btnController = new btn_controller.BtnController(this, this._dispatchClickedEvent);
31
+ this.setAttribute('role', 'option');
32
+ this._setupEvents();
33
+ }
34
+ _setupEvents() {
35
+ this.addEventListener('click', this._dispatchClickedEvent);
36
+ }
37
+ };
38
+ tslib_es6.__decorate([
39
+ decorators_js.property({ type: String, reflect: true }),
40
+ tslib_es6.__metadata("design:type", String)
41
+ ], exports.HOption.prototype, "value", void 0);
42
+ tslib_es6.__decorate([
43
+ decorators_js.property({ type: Boolean, reflect: true }),
44
+ tslib_es6.__metadata("design:type", Boolean)
45
+ ], exports.HOption.prototype, "selected", void 0);
46
+ tslib_es6.__decorate([
47
+ decorators_js.property({ type: Boolean, reflect: true }),
48
+ tslib_es6.__metadata("design:type", Boolean)
49
+ ], exports.HOption.prototype, "disabled", void 0);
50
+ tslib_es6.__decorate([
51
+ decorators_js.property({ type: Boolean, reflect: true }),
52
+ tslib_es6.__metadata("design:type", Boolean)
53
+ ], exports.HOption.prototype, "hidden", void 0);
54
+ exports.HOption = tslib_es6.__decorate([
55
+ phoenix_custom_element.phoenixCustomElement(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.option)
56
+ ], exports.HOption);
57
+ //# sourceMappingURL=select_option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,qDAAyD;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../../../../external/tslib/tslib.es6.js');
6
+ var utilities = require('@dreamcommerce/utilities');
7
+ var phoenix_light_lit_element = require('../../../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
8
+ var phoenix_custom_element = require('../../../../../core/decorators/phoenix_custom_element.js');
9
+ var select_components_constatns = require('./select_components_constatns.js');
10
+
11
+ exports.HSelectOptions = class HSelectOptions extends phoenix_light_lit_element.PhoenixLightLitElement {
12
+ constructor() {
13
+ super();
14
+ this._dispatchClickedEvent = ({ detail }) => {
15
+ this.dispatchEvent(new CustomEvent(select_components_constatns.SELECT_OPTIONS_EVENT_NAMES.clicked, {
16
+ bubbles: true,
17
+ detail: {
18
+ $option: detail.$option
19
+ }
20
+ }));
21
+ };
22
+ this.setAttribute('role', 'listbox');
23
+ utilities.UiDomUtils.makeNavigable(this);
24
+ this.addEventListener(select_components_constatns.SELECT_OPTION_EVENT_NAMES.clicked, this._dispatchClickedEvent);
25
+ }
26
+ };
27
+ exports.HSelectOptions = tslib_es6.__decorate([
28
+ phoenix_custom_element.phoenixCustomElement(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.options),
29
+ tslib_es6.__metadata("design:paramtypes", [])
30
+ ], exports.HSelectOptions);
31
+ //# sourceMappingURL=select_options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,qDAAyD;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../../../../external/tslib/tslib.es6.js');
6
+ var lit = require('lit');
7
+ var decorators = require('lit/decorators');
8
+ var phoenix_light_lit_element = require('../../../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
9
+ var phoenix_custom_element = require('../../../../../core/decorators/phoenix_custom_element.js');
10
+ var select_components_constatns = require('./select_components_constatns.js');
11
+ var debounce = require('../../../../../../../../external/lodash/debounce.js');
12
+
13
+ exports.HSelectSearch = class HSelectSearch extends phoenix_light_lit_element.PhoenixLightLitElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.value = '';
17
+ this._handleInputChange = debounce['default'](({ target }) => {
18
+ this.value = target.value;
19
+ this.dispatchEvent(new CustomEvent(select_components_constatns.SELECT_SEARCH_EVENT_NAMES.search, {
20
+ bubbles: true,
21
+ detail: target.value
22
+ }));
23
+ }, 200);
24
+ }
25
+ render() {
26
+ return lit.html `<input
27
+ type="text"
28
+ role="search"
29
+ .value=${this.value}
30
+ aria-autocomplete="list"
31
+ autocomplete="false"
32
+ @input=${this._handleInputChange}
33
+ />`;
34
+ }
35
+ };
36
+ tslib_es6.__decorate([
37
+ decorators.property({ type: String, reflect: true }),
38
+ tslib_es6.__metadata("design:type", String)
39
+ ], exports.HSelectSearch.prototype, "value", void 0);
40
+ exports.HSelectSearch = tslib_es6.__decorate([
41
+ phoenix_custom_element.phoenixCustomElement(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.search)
42
+ ], exports.HSelectSearch);
43
+ //# sourceMappingURL=select_search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,qDAAyD;AACjF;AACA;AACA;AACA;AACA;AACA,uBAAuB,qDAAyD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('lit');
6
+ var utilities = require('@dreamcommerce/utilities');
7
+ var observer = require('../../../../../core/classes/observer/observer.js');
8
+ var behavior_subject = require('../../../../../core/classes/behavior_subject/behavior_subject.js');
9
+
10
+ class BaseSelectController {
11
+ constructor({ host }) {
12
+ this.options$ = new behavior_subject.BehaviorSubject([]);
13
+ this.selectedOptions$ = new behavior_subject.BehaviorSubject([]);
14
+ this._calculateValuesRelatedToOptions = (selectOptions) => {
15
+ const { visibleCount, selectedCount } = selectOptions.reduce((acc, option) => {
16
+ return {
17
+ visibleCount: !option.hidden ? acc.visibleCount + 1 : acc.visibleCount,
18
+ selectedCount: option.selected ? acc.selectedCount + 1 : acc.selectedCount
19
+ };
20
+ }, { visibleCount: 0, selectedCount: 0 });
21
+ this.visibleOptionsCount = visibleCount;
22
+ this.selectedOptionsCount = selectedCount;
23
+ this.selectedOptions$.notify(selectOptions.filter((option) => option.selected));
24
+ };
25
+ this.host = host;
26
+ this.host.addController(this);
27
+ this._setupComputedStateObserver();
28
+ }
29
+ _setupComputedStateObserver() {
30
+ this._optionsObserver = new observer.Observer(this._calculateValuesRelatedToOptions);
31
+ this.options$.subscribe(this._optionsObserver);
32
+ }
33
+ toggleOption(option) {
34
+ option.selected ? this.deselectOption(option) : this.selectOption(option);
35
+ }
36
+ removeOption(optionValue) {
37
+ const options = this.options$.getValue();
38
+ if (!options)
39
+ return;
40
+ this.options$.notify(options.filter((option) => option.value !== optionValue));
41
+ }
42
+ addOption(option, position) {
43
+ var _a;
44
+ const options = (_a = this.options$.getValue()) !== null && _a !== void 0 ? _a : [];
45
+ if (position === undefined) {
46
+ options.push(option);
47
+ this.options$.notify(options);
48
+ return;
49
+ }
50
+ this.options$.notify([...options.slice(0, position - 1), option, ...options.slice(position - 1)]);
51
+ }
52
+ replaceOptions(options) {
53
+ this.options$.notify(options);
54
+ }
55
+ deselectOptions() {
56
+ var _a;
57
+ (_a = this.options$.getValue()) === null || _a === void 0 ? void 0 : _a.forEach((option) => (option.selected = false));
58
+ this.requestOptionsUpdate();
59
+ }
60
+ deselectOption(option) {
61
+ var _a;
62
+ (_a = this.options$.getValue()) === null || _a === void 0 ? void 0 : _a.forEach((option) => (option.selected = false));
63
+ this.requestOptionsUpdate();
64
+ }
65
+ filterOptions(value) {
66
+ const selectOptions = this.options$.getValue();
67
+ if (!selectOptions)
68
+ return;
69
+ const filtered = utilities.SearchingUtils.fuzzySearch(value, selectOptions, 'content');
70
+ selectOptions.forEach((option) => (option.hidden = true));
71
+ filtered.forEach((option) => {
72
+ option.hidden = false;
73
+ });
74
+ this.requestOptionsUpdate();
75
+ }
76
+ requestOptionsUpdate() {
77
+ const selectOptions = this.options$.getValue();
78
+ if (!selectOptions)
79
+ return;
80
+ this.options$.notify([...selectOptions]);
81
+ this.host.requestUpdate();
82
+ }
83
+ getSelectOption(selectValue) {
84
+ var _a;
85
+ return (_a = this.options$.getValue()) === null || _a === void 0 ? void 0 : _a.find((option) => option.value === selectValue);
86
+ }
87
+ hostConnected() {
88
+ this.options$.unsubscribe(this._optionsObserver);
89
+ }
90
+ }
91
+
92
+ exports.BaseSelectController = BaseSelectController;
93
+ //# sourceMappingURL=base_select_controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var base_select_controller = require('./base_select_controller.js');
6
+
7
+ class MultiSelectController extends base_select_controller.BaseSelectController {
8
+ toggleOption(option) {
9
+ option.selected ? this.deselectOption(option) : this.selectOption(option);
10
+ }
11
+ selectOption(option) {
12
+ option.selected = true;
13
+ this.requestOptionsUpdate();
14
+ }
15
+ deselectOption(option) {
16
+ option.selected = false;
17
+ this.requestOptionsUpdate();
18
+ }
19
+ }
20
+
21
+ exports.MultiSelectController = MultiSelectController;
22
+ //# sourceMappingURL=multi_select_controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var base_select_controller = require('./base_select_controller.js');
6
+
7
+ class SelectController extends base_select_controller.BaseSelectController {
8
+ selectOption(option) {
9
+ var _a;
10
+ const selectedOptions = (_a = this.options$.getValue()) !== null && _a !== void 0 ? _a : [];
11
+ selectedOptions.forEach((option) => (option.selected = false));
12
+ option.selected = true;
13
+ this.selectedOptions$.notify([option]);
14
+ this.requestOptionsUpdate();
15
+ }
16
+ }
17
+
18
+ exports.SelectController = SelectController;
19
+ //# sourceMappingURL=select_controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ class SelectOption {
6
+ constructor({ selected = false, hidden = false, disabled = false, value, content }) {
7
+ this.value = value;
8
+ this.selected = selected;
9
+ this.hidden = hidden;
10
+ this.disabled = disabled;
11
+ this.content = content;
12
+ }
13
+ static create(options) {
14
+ return new SelectOption(options);
15
+ }
16
+ }
17
+
18
+ exports.SelectOption = SelectOption;
19
+ //# sourceMappingURL=select_option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var select_components_constatns = require('../components/select_components_constatns.js');
6
+ var select_option = require('./select_option.js');
7
+
8
+ class SelectOptionMapper {
9
+ static toModel($option) {
10
+ var _a;
11
+ const optionContent = (_a = $option.querySelector(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.optionContent)) === null || _a === void 0 ? void 0 : _a.textContent;
12
+ if (!optionContent)
13
+ throw new Error('h-options must contains a h-option-content element inside');
14
+ return select_option.SelectOption.create({
15
+ value: $option.value,
16
+ disabled: $option.disabled,
17
+ hidden: $option.hidden,
18
+ content: optionContent
19
+ });
20
+ }
21
+ }
22
+
23
+ exports.SelectOptionMapper = SelectOptionMapper;
24
+ //# sourceMappingURL=select_option_mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,200 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../../../external/tslib/tslib.es6.js');
6
+ var lit = require('lit');
7
+ var decorators = require('lit/decorators');
8
+ var phoenix_light_lit_element = require('../../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
9
+ var phoenix_custom_element = require('../../../../core/decorators/phoenix_custom_element.js');
10
+ var decorators_js = require('@lit/reactive-element/decorators.js');
11
+ var select_components_constatns = require('./components/select_components_constatns.js');
12
+ var select_control_constants = require('./select_control_constants.js');
13
+ var observer = require('../../../../core/classes/observer/observer.js');
14
+ var observable_directive = require('../../../../directives/observable_directive.js');
15
+ var context_provider_controller = require('../../../../core/context/context_provider_controller.js');
16
+ var ref_js = require('lit-html/directives/ref.js');
17
+ var multi_select_controller = require('./controllers/multi_select_controller.js');
18
+ var select_controller = require('./controllers/select_controller.js');
19
+ var select_search = require('./components/select_search.js');
20
+ var list_box_keyboard_controller = require('../../../../controllers/list_box_controller/list_box_keyboard_controller.js');
21
+ var icon = require('../../../icon/icon.js');
22
+ var select_option_mapper = require('./model/select_option_mapper.js');
23
+ var select_control_utils = require('./select_control_utils.js');
24
+
25
+ exports.HSelectControl = class HSelectControl extends phoenix_light_lit_element.PhoenixLightLitElement {
26
+ constructor() {
27
+ super();
28
+ this.multiselect = false;
29
+ this._searchValue = '';
30
+ this._$options = {};
31
+ this._$dropdown = ref_js.createRef();
32
+ this._$search = ref_js.createRef();
33
+ this._$optionsList = ref_js.createRef();
34
+ this._selectContext = new context_provider_controller.ContextProviderController(this);
35
+ this._handleOptionDeselect = (event) => {
36
+ const selectedOption = this._selectController.getSelectOption(event.detail);
37
+ if (!selectedOption)
38
+ return;
39
+ this._selectController.deselectOption(selectedOption);
40
+ };
41
+ this._updateOptionsView = (options) => {
42
+ if (options.length < Object.keys(this._$options).length)
43
+ this._removeHTMLOptions(options.map((option) => option.value));
44
+ options.forEach((option, index) => {
45
+ const { selected, value } = option;
46
+ const $option = this._$options[value];
47
+ if (!$option) {
48
+ this._appendNewHTMLOption(option, index + 1);
49
+ return;
50
+ }
51
+ select_control_utils.SelectControlUtils.syncHTMLOptionWithModel(option, $option);
52
+ if (!selected)
53
+ return;
54
+ $option.setAttribute(this.multiselect ? 'aria-checked' : 'aria-selected', 'true');
55
+ });
56
+ };
57
+ this._handleOptionClicked = (event) => {
58
+ const selectedOption = this._selectController.getSelectOption(event.detail.$option.value);
59
+ if (!selectedOption)
60
+ return;
61
+ this._selectController.toggleOption(selectedOption);
62
+ if (!this.multiselect)
63
+ this._closeSelect();
64
+ };
65
+ this._closeSelect = () => {
66
+ var _a;
67
+ (_a = this._$dropdown.value) === null || _a === void 0 ? void 0 : _a.hide();
68
+ };
69
+ this._clearOptions = () => {
70
+ this._selectController.deselectOptions();
71
+ };
72
+ this._handleDropdownHidden = () => {
73
+ this._searchValue = '';
74
+ };
75
+ const $options = Array.from(this.querySelectorAll(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.option));
76
+ $options.forEach(($option) => $option.setAttribute('slot', select_control_constants.SELECT_SLOT_NAMES.content));
77
+ }
78
+ updated(props) {
79
+ super.updated(props);
80
+ if (this._$optionsList.value && !this._listBoxController)
81
+ this._listBoxController = new list_box_keyboard_controller.ListBoxKeyboardController({
82
+ host: this,
83
+ $list: this._$optionsList.value
84
+ });
85
+ }
86
+ connectedCallback() {
87
+ super.connectedCallback();
88
+ this._selectController = this.multiselect ? new multi_select_controller.MultiSelectController({ host: this }) : new select_controller.SelectController({ host: this });
89
+ this._selectContext.provide(select_control_constants.SELECT_CONTEXTS.selectedOptions$, this._selectController.selectedOptions$);
90
+ this._selectContext.provide(select_control_constants.SELECT_CONTEXTS.isMultiselect, this.multiselect);
91
+ const $options = Array.from(this.querySelectorAll(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.option));
92
+ this._selectController.options$.subscribe(new observer.Observer((selectedOptions) => this._updateOptionsView(selectedOptions)));
93
+ this._$options = $options.reduce((acc, $option) => {
94
+ if (acc[$option.value] !== undefined)
95
+ throw Error('Select options must hava a unique values.');
96
+ return {
97
+ ...acc,
98
+ [$option.value]: $option
99
+ };
100
+ }, {});
101
+ this._selectController.options$.notify($options.map(select_option_mapper.SelectOptionMapper.toModel));
102
+ this._setupEvents();
103
+ }
104
+ _setupEvents() {
105
+ this.addEventListener(select_control_constants.SELECT_EVENT_NAMES.deselectOption, this._handleOptionDeselect);
106
+ }
107
+ _appendNewHTMLOption(option, position) {
108
+ const $list = this._$optionsList.value;
109
+ if (!$list)
110
+ return;
111
+ const { value, selected } = option;
112
+ const $option = select_control_utils.SelectControlUtils.createHTMLOption(option);
113
+ if (selected)
114
+ $option.setAttribute(this.multiselect ? 'aria-checked' : 'aria-selected', 'true');
115
+ this._$options[value] = $option;
116
+ select_control_utils.SelectControlUtils.appendHTMLOption($option, $list, position);
117
+ }
118
+ _removeHTMLOptions(optionsValues) {
119
+ this._$options = select_control_utils.SelectControlUtils.removeHTMLOption(Object.values(this._$options), optionsValues);
120
+ }
121
+ _handleSearch({ detail }) {
122
+ this._searchValue = detail;
123
+ }
124
+ update(changedProperties) {
125
+ super.update(changedProperties);
126
+ if (changedProperties.has('_searchValue'))
127
+ this._selectController.filterOptions(this._searchValue);
128
+ }
129
+ addOption(option, position) {
130
+ this._selectController.addOption(option, position);
131
+ }
132
+ removeOption(optionValue) {
133
+ this._selectController.removeOption(optionValue);
134
+ }
135
+ replaceOptions(options) {
136
+ this._selectController.replaceOptions(options);
137
+ }
138
+ render() {
139
+ var _a;
140
+ const options = (_a = this._selectController.options$.getValue()) !== null && _a !== void 0 ? _a : [];
141
+ return lit.html `
142
+ <div>
143
+ <h-dropdown ${ref_js.ref(this._$dropdown)} @dropdown.hidden=${this._handleDropdownHidden} name=${this.controlName}>
144
+ <h-dropdown-toggler name=${this.controlName}> ${this.getSlot(select_control_constants.SELECT_SLOT_NAMES.input)} </h-dropdown-toggler>
145
+
146
+ <h-dropdown-content name=${this.controlName}>
147
+ <h-select-close-btn @click=${this._closeSelect}></h-select-close-btn>
148
+
149
+ ${options.length > select_control_constants.MIN_NUMBER_OF_OPTIONS_TO_SHOW_SEARCH
150
+ ? lit.html `<h-select-search
151
+ ${ref_js.ref(this._$search)}
152
+ .value=${this._searchValue}
153
+ @selectSearch.search=${this._handleSearch}
154
+ ></h-select-search>`
155
+ : lit.nothing}
156
+ ${this.hasSlot(select_control_constants.SELECT_SLOT_NAMES.content)
157
+ ? lit.html `
158
+ <h-select-options ${ref_js.ref(this._$optionsList)} @selectOptions.clicked=${this._handleOptionClicked}>
159
+ ${this.getSlot(select_control_constants.SELECT_SLOT_NAMES.content)}
160
+ </h-select-options>
161
+ `
162
+ : lit.nothing}
163
+ ${!this._selectController.visibleOptionsCount ? lit.html `<p>brak wyników dla ${this._searchValue}</p>` : lit.nothing}
164
+ ${this.multiselect && this._selectController.selectedOptionsCount >= 1
165
+ ? lit.html `
166
+ <section>
167
+ <button @click=${this._clearOptions}>clear</button>
168
+ <h-select-close-btn @click=${this._closeSelect}>ok</h-select-close-btn>
169
+ </section>
170
+ `
171
+ : lit.nothing}
172
+ </h-dropdown-content>
173
+ </h-dropdown>
174
+
175
+ ${observable_directive.observe(this._selectController.selectedOptions$, (selectOptions) => selectOptions.map((option) => lit.html `<input type="hidden" name=${this.controlName} value=${option.value} />`))}
176
+ </div>
177
+ `;
178
+ }
179
+ };
180
+ exports.HSelectControl._components = {
181
+ search: select_search.HSelectSearch,
182
+ icon: icon.HIcon
183
+ };
184
+ tslib_es6.__decorate([
185
+ decorators_js.property({ type: String }),
186
+ tslib_es6.__metadata("design:type", String)
187
+ ], exports.HSelectControl.prototype, "controlName", void 0);
188
+ tslib_es6.__decorate([
189
+ decorators_js.property({ type: Boolean }),
190
+ tslib_es6.__metadata("design:type", Boolean)
191
+ ], exports.HSelectControl.prototype, "multiselect", void 0);
192
+ tslib_es6.__decorate([
193
+ decorators.state(),
194
+ tslib_es6.__metadata("design:type", String)
195
+ ], exports.HSelectControl.prototype, "_searchValue", void 0);
196
+ exports.HSelectControl = tslib_es6.__decorate([
197
+ phoenix_custom_element.phoenixCustomElement('h-select-control'),
198
+ tslib_es6.__metadata("design:paramtypes", [])
199
+ ], exports.HSelectControl);
200
+ //# sourceMappingURL=select_control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,kDAAsD;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const SELECT_CONTEXTS = {
6
+ isMultiselect: 'isMultiselect',
7
+ selectedOptions$: 'selectedOptions$'
8
+ };
9
+ const SELECT_SLOT_NAMES = {
10
+ content: 'content',
11
+ input: 'input'
12
+ };
13
+ const SELECT_EVENT_NAMES = {
14
+ selectOption: 'selectOption.select',
15
+ deselectOption: 'selectOption.deselect'
16
+ };
17
+ const MIN_NUMBER_OF_OPTIONS_TO_SHOW_SEARCH = 6;
18
+
19
+ exports.MIN_NUMBER_OF_OPTIONS_TO_SHOW_SEARCH = MIN_NUMBER_OF_OPTIONS_TO_SHOW_SEARCH;
20
+ exports.SELECT_CONTEXTS = SELECT_CONTEXTS;
21
+ exports.SELECT_EVENT_NAMES = SELECT_EVENT_NAMES;
22
+ exports.SELECT_SLOT_NAMES = SELECT_SLOT_NAMES;
23
+ //# sourceMappingURL=select_control_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}