@shoper/phoenix_design_system 1.1.0-9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js +7 -1
  2. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  3. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_content.js +6 -4
  4. package/build/cjs/packages/phoenix/src/components/dropdown/dropdown_content.js.map +1 -1
  5. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox_control.js +1 -1
  6. package/build/cjs/packages/phoenix/src/components/form/checkbox/checkbox_control.js.map +1 -1
  7. package/build/cjs/packages/phoenix/src/components/form/select/components/option/select_option.js +20 -5
  8. package/build/cjs/packages/phoenix/src/components/form/select/components/option/select_option.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/form/select/components/option/select_option_content.js +0 -1
  10. package/build/cjs/packages/phoenix/src/components/form/select/components/option/select_option_content.js.map +1 -1
  11. package/build/cjs/packages/phoenix/src/components/form/select/components/search/select_search.js +1 -0
  12. package/build/cjs/packages/phoenix/src/components/form/select/components/search/select_search.js.map +1 -1
  13. package/build/cjs/packages/phoenix/src/components/form/select/components/select_close_btn.js +37 -0
  14. package/build/cjs/packages/phoenix/src/components/form/select/components/select_close_btn.js.map +1 -0
  15. package/build/cjs/packages/phoenix/src/components/form/select/components/select_components_constatns.js +2 -0
  16. package/build/cjs/packages/phoenix/src/components/form/select/components/select_components_constatns.js.map +1 -1
  17. package/build/cjs/packages/phoenix/src/components/form/select/components/toggler/select_toggler.js +23 -8
  18. package/build/cjs/packages/phoenix/src/components/form/select/components/toggler/select_toggler.js.map +1 -1
  19. package/build/cjs/packages/phoenix/src/components/form/select/components/toggler/select_toggler_constants.js +3 -1
  20. package/build/cjs/packages/phoenix/src/components/form/select/components/toggler/select_toggler_constants.js.map +1 -1
  21. package/build/cjs/packages/phoenix/src/components/form/select/controllers/base_select_controller.js +2 -1
  22. package/build/cjs/packages/phoenix/src/components/form/select/controllers/base_select_controller.js.map +1 -1
  23. package/build/cjs/packages/phoenix/src/components/form/select/controllers/multi_select_controller.js +2 -0
  24. package/build/cjs/packages/phoenix/src/components/form/select/controllers/multi_select_controller.js.map +1 -1
  25. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js +2 -1
  26. package/build/cjs/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
  27. package/build/cjs/packages/phoenix/src/components/form/select/select.js +88 -31
  28. package/build/cjs/packages/phoenix/src/components/form/select/select.js.map +1 -1
  29. package/build/cjs/packages/phoenix/src/components/form/select/select_constants.js +6 -1
  30. package/build/cjs/packages/phoenix/src/components/form/select/select_constants.js.map +1 -1
  31. package/build/cjs/packages/phoenix/src/directives/observable_directive.js +1 -1
  32. package/build/cjs/packages/phoenix/src/directives/observable_directive.js.map +1 -1
  33. package/build/cjs/packages/phoenix/src/index.js +7 -7
  34. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.d.ts +1 -0
  35. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js +7 -1
  36. package/build/esm/packages/phoenix/src/components/dropdown/dropdown.js.map +1 -1
  37. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.d.ts +1 -1
  38. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.js +6 -4
  39. package/build/esm/packages/phoenix/src/components/dropdown/dropdown_content.js.map +1 -1
  40. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox_control.js +1 -1
  41. package/build/esm/packages/phoenix/src/components/form/checkbox/checkbox_control.js.map +1 -1
  42. package/build/esm/packages/phoenix/src/components/form/select/components/option/select_option.d.ts +4 -2
  43. package/build/esm/packages/phoenix/src/components/form/select/components/option/select_option.js +20 -5
  44. package/build/esm/packages/phoenix/src/components/form/select/components/option/select_option.js.map +1 -1
  45. package/build/esm/packages/phoenix/src/components/form/select/components/option/select_option_content.js +0 -1
  46. package/build/esm/packages/phoenix/src/components/form/select/components/option/select_option_content.js.map +1 -1
  47. package/build/esm/packages/phoenix/src/components/form/select/components/search/select_search.js +1 -0
  48. package/build/esm/packages/phoenix/src/components/form/select/components/search/select_search.js.map +1 -1
  49. package/build/esm/packages/phoenix/src/components/form/select/components/select_close_btn.d.ts +1 -1
  50. package/build/esm/packages/phoenix/src/components/form/select/components/select_close_btn.js +34 -28
  51. package/build/esm/packages/phoenix/src/components/form/select/components/select_close_btn.js.map +1 -1
  52. package/build/esm/packages/phoenix/src/components/form/select/components/select_components_constatns.js +2 -1
  53. package/build/esm/packages/phoenix/src/components/form/select/components/select_components_constatns.js.map +1 -1
  54. package/build/esm/packages/phoenix/src/components/form/select/components/toggler/select_toggler.d.ts +3 -0
  55. package/build/esm/packages/phoenix/src/components/form/select/components/toggler/select_toggler.js +23 -8
  56. package/build/esm/packages/phoenix/src/components/form/select/components/toggler/select_toggler.js.map +1 -1
  57. package/build/esm/packages/phoenix/src/components/form/select/components/toggler/select_toggler_constants.d.ts +2 -0
  58. package/build/esm/packages/phoenix/src/components/form/select/components/toggler/select_toggler_constants.js +3 -1
  59. package/build/esm/packages/phoenix/src/components/form/select/components/toggler/select_toggler_constants.js.map +1 -1
  60. package/build/esm/packages/phoenix/src/components/form/select/controllers/base_select_controller.js +2 -1
  61. package/build/esm/packages/phoenix/src/components/form/select/controllers/base_select_controller.js.map +1 -1
  62. package/build/esm/packages/phoenix/src/components/form/select/controllers/multi_select_controller.js +2 -0
  63. package/build/esm/packages/phoenix/src/components/form/select/controllers/multi_select_controller.js.map +1 -1
  64. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js +2 -1
  65. package/build/esm/packages/phoenix/src/components/form/select/model/select_option_mapper.js.map +1 -1
  66. package/build/esm/packages/phoenix/src/components/form/select/select.d.ts +8 -0
  67. package/build/esm/packages/phoenix/src/components/form/select/select.js +89 -32
  68. package/build/esm/packages/phoenix/src/components/form/select/select.js.map +1 -1
  69. package/build/esm/packages/phoenix/src/components/form/select/select_constants.d.ts +4 -0
  70. package/build/esm/packages/phoenix/src/components/form/select/select_constants.js +6 -2
  71. package/build/esm/packages/phoenix/src/components/form/select/select_constants.js.map +1 -1
  72. package/build/esm/packages/phoenix/src/directives/observable_directive.js +1 -1
  73. package/build/esm/packages/phoenix/src/directives/observable_directive.js.map +1 -1
  74. package/build/esm/packages/phoenix/src/index.js +1 -1
  75. package/package.json +1 -1
@@ -28,6 +28,7 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
28
28
  this.toggleOnHover = false;
29
29
  this.name = '';
30
30
  this.transition = 'direction';
31
+ this.offset = 0;
31
32
  this.portalTarget = dropdown_constants.DEFAULT_DROPDOWN_PORTAL_NAME;
32
33
  this._backdropController = new backdrop_controller.BackdropController();
33
34
  this._lastFocusableElement = undefined;
@@ -242,7 +243,8 @@ exports.HDropdown = HDropdown_1 = class HDropdown extends phoenix_light_lit_elem
242
243
  relativeElement: this.$dropdownToggler,
243
244
  elementToPosition: this.$dropdownContent,
244
245
  disablePositioningOnCondition: () => window.innerWidth < global_constants.BREAKPOINTS.xs || !this.opened,
245
- portalElementsNames: [dropdown_constants.DROPDOWN_CONTENT_NAME]
246
+ portalElementsNames: [dropdown_constants.DROPDOWN_CONTENT_NAME],
247
+ offset: this.offset
246
248
  });
247
249
  if (!this._clickOutsideController)
248
250
  this._clickOutsideController = new click_outside_controller.ClickOutsideController({
@@ -365,6 +367,10 @@ tslib_es6.__decorate([
365
367
  decorators_js.property({ type: String }),
366
368
  tslib_es6.__metadata("design:type", Object)
367
369
  ], exports.HDropdown.prototype, "transition", void 0);
370
+ tslib_es6.__decorate([
371
+ decorators_js.property({ type: Number }),
372
+ tslib_es6.__metadata("design:type", Object)
373
+ ], exports.HDropdown.prototype, "offset", void 0);
368
374
  tslib_es6.__decorate([
369
375
  decorators_js.property({ type: String }),
370
376
  tslib_es6.__metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -11,11 +11,14 @@ var dropdown_constants = require('./dropdown_constants.js');
11
11
 
12
12
  exports.HDropdownContent = class HDropdownContent extends phoenix_light_lit_element.PhoenixLightLitElement {
13
13
  constructor() {
14
- super();
14
+ super(...arguments);
15
15
  this.name = '';
16
+ }
17
+ connectedCallback() {
18
+ super.connectedCallback();
19
+ this.classList.add(dropdown_constants.DROPDOWN_CONTENT_CSS_CLASS);
16
20
  this.setAttribute('role', 'menu');
17
21
  this.slot = this.hasAttribute('slot') ? this.slot : 'content';
18
- this.classList.add(dropdown_constants.DROPDOWN_CONTENT_CSS_CLASS);
19
22
  Array.from(this.children).forEach((element) => {
20
23
  element.setAttribute('role', 'menuitem');
21
24
  });
@@ -30,7 +33,6 @@ tslib_es6.__decorate([
30
33
  tslib_es6.__metadata("design:type", Object)
31
34
  ], exports.HDropdownContent.prototype, "name", void 0);
32
35
  exports.HDropdownContent = tslib_es6.__decorate([
33
- phoenix_custom_element.phoenixCustomElement('h-dropdown-content'),
34
- tslib_es6.__metadata("design:paramtypes", [])
36
+ phoenix_custom_element.phoenixCustomElement('h-dropdown-content')
35
37
  ], exports.HDropdownContent);
36
38
  //# sourceMappingURL=dropdown_content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -6,9 +6,9 @@ var tslib_es6 = require('../../../../../../external/tslib/tslib.es6.js');
6
6
  var phoenix_light_lit_element = require('../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
7
7
  var phoenix_custom_element = require('../../../core/decorators/phoenix_custom_element.js');
8
8
  var decorators_js = require('@lit/reactive-element/decorators.js');
9
+ var index = require('../../../../../../external/classnames/index.js');
9
10
  var litHtml = require('lit-html');
10
11
  var ref_js = require('lit-html/directives/ref.js');
11
- var index = require('../../../../../../external/classnames/index.js');
12
12
  var control_props_sync_consumer_controller = require('../controllers/props_synchronizing/control_props_sync_consumer_controller.js');
13
13
  var ifDefined_js = require('lit-html/directives/if-defined.js');
14
14
  var checkbox_constants = require('./checkbox_constants.js');
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA,oBAAoB,gDAAoD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA,oBAAoB,gDAAoD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -3,14 +3,12 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib_es6 = require('../../../../../../../../external/tslib/tslib.es6.js');
6
- var lit = require('lit');
7
6
  var phoenix_light_lit_element = require('../../../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
8
7
  var phoenix_custom_element = require('../../../../../core/decorators/phoenix_custom_element.js');
9
8
  var decorators_js = require('@lit/reactive-element/decorators.js');
10
9
  var select_components_constatns = require('../select_components_constatns.js');
11
10
  var btn_controller = require('../../../../../controllers/btn_controller/btn_controller.js');
12
11
  var select_option_constants = require('./select_option_constants.js');
13
- var litHtml = require('lit-html');
14
12
 
15
13
  exports.HOption = class HOption extends phoenix_light_lit_element.PhoenixLightLitElement {
16
14
  constructor() {
@@ -28,7 +26,10 @@ exports.HOption = class HOption extends phoenix_light_lit_element.PhoenixLightLi
28
26
  }
29
27
  connectedCallback() {
30
28
  super.connectedCallback();
31
- this._btnController = new btn_controller.BtnController(this, this._dispatchClickedEvent);
29
+ if (!this._btnController)
30
+ this._btnController = new btn_controller.BtnController(this, this._dispatchClickedEvent, {
31
+ isNavigable: false
32
+ });
32
33
  this.classList.add(select_option_constants.SELECT_OPTION_CSS_CLASSES.selectOption);
33
34
  this.setAttribute('role', 'option');
34
35
  this._setupEvents();
@@ -36,8 +37,22 @@ exports.HOption = class HOption extends phoenix_light_lit_element.PhoenixLightLi
36
37
  _setupEvents() {
37
38
  this.addEventListener('click', this._dispatchClickedEvent);
38
39
  }
39
- render() {
40
- return litHtml.html ` ${this.getSlot('content')} ${this.selected ? litHtml.html `<h-icon icon-name="icon-check"></h-icon>` : lit.nothing} `;
40
+ attributeChangedCallback(name, _old, value) {
41
+ super.attributeChangedCallback(name, _old, value);
42
+ switch (name) {
43
+ case 'selected':
44
+ this.selected ? this._addSelectedIcon() : this._removeSelectedIcon();
45
+ }
46
+ }
47
+ _addSelectedIcon() {
48
+ this._$checkedIcon = document.createElement('h-icon');
49
+ this._$checkedIcon.setAttribute('icon-name', 'icon-check');
50
+ this.append(this._$checkedIcon);
51
+ }
52
+ _removeSelectedIcon() {
53
+ var _a;
54
+ (_a = this._$checkedIcon) === null || _a === void 0 ? void 0 : _a.remove();
55
+ this._$checkedIcon = undefined;
41
56
  }
42
57
  };
43
58
  tslib_es6.__decorate([
@@ -1 +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;"}
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -11,7 +11,6 @@ var select_option_constants = require('./select_option_constants.js');
11
11
  exports.HOptionContent = class HOptionContent extends phoenix_light_lit_element.PhoenixLightLitElement {
12
12
  connectedCallback() {
13
13
  super.connectedCallback();
14
- this.setAttribute('slot', 'content');
15
14
  this.classList.add(select_option_constants.SELECT_OPTION_CSS_CLASSES.selectOptionContent);
16
15
  }
17
16
  };
@@ -1 +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;"}
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;"}
@@ -37,6 +37,7 @@ exports.HSelectSearch = class HSelectSearch extends phoenix_light_lit_element.Ph
37
37
  .value=${this.value}
38
38
  aria-autocomplete="list"
39
39
  autocomplete="false"
40
+ placeholder="Szukaj"
40
41
  @input=${this._handleInputChange}
41
42
  />
42
43
  `;
@@ -1 +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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,37 @@
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 select_components_constatns = require('./select_components_constatns.js');
9
+ var btn_controller = require('../../../../controllers/btn_controller/btn_controller.js');
10
+ var litHtml = require('lit-html');
11
+
12
+ exports.HSelectCloseBtn = class HSelectCloseBtn extends phoenix_light_lit_element.PhoenixLightLitElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this._dispatchCloseEvent = () => {
16
+ this.dispatchEvent(new CustomEvent(select_components_constatns.SELECT_CLOSE_BTN_EVENT_NAMES.close, {
17
+ bubbles: true
18
+ }));
19
+ };
20
+ }
21
+ connectedCallback() {
22
+ super.connectedCallback();
23
+ this.setAttribute('aria-label', 'close select');
24
+ if (!this._btnController)
25
+ this._btnController = new btn_controller.BtnController(this, this._dispatchCloseEvent);
26
+ this.addEventListener('click', this._dispatchCloseEvent);
27
+ }
28
+ render() {
29
+ return litHtml.html `${this.hasSlot(select_components_constatns.SELECT_CLOSE_BUTTON_CONTENT_SLOT_NAME)
30
+ ? this.getSlot(select_components_constatns.SELECT_CLOSE_BUTTON_CONTENT_SLOT_NAME)
31
+ : litHtml.html `<icon iconName="icon-x"></icon>`} `;
32
+ }
33
+ };
34
+ exports.HSelectCloseBtn = tslib_es6.__decorate([
35
+ phoenix_custom_element.phoenixCustomElement(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.closeBtn)
36
+ ], exports.HSelectCloseBtn);
37
+ //# sourceMappingURL=select_close_btn.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;"}
@@ -22,9 +22,11 @@ const SELECT_RELATED_COMPONENTS_NAMES = {
22
22
  closeBtn: 'h-select-close-btn',
23
23
  search: 'h-select-search'
24
24
  };
25
+ const SELECT_CLOSE_BUTTON_CONTENT_SLOT_NAME = 'content';
25
26
  const SELECT_INPUT_PLACEHOLDER_SLOT_NAME = 'placeholder';
26
27
 
27
28
  exports.SELECT_CLOSE_BTN_EVENT_NAMES = SELECT_CLOSE_BTN_EVENT_NAMES;
29
+ exports.SELECT_CLOSE_BUTTON_CONTENT_SLOT_NAME = SELECT_CLOSE_BUTTON_CONTENT_SLOT_NAME;
28
30
  exports.SELECT_INPUT_PLACEHOLDER_SLOT_NAME = SELECT_INPUT_PLACEHOLDER_SLOT_NAME;
29
31
  exports.SELECT_OPTIONS_EVENT_NAMES = SELECT_OPTIONS_EVENT_NAMES;
30
32
  exports.SELECT_OPTION_EVENT_NAMES = SELECT_OPTION_EVENT_NAMES;
@@ -1 +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;"}
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;"}
@@ -10,6 +10,7 @@ var select_components_constatns = require('../select_components_constatns.js');
10
10
  var litHtml = require('lit-html');
11
11
  var context_consumer_controller = require('../../../../../core/context/context_consumer_controller.js');
12
12
  var select_constants = require('../../select_constants.js');
13
+ var observer = require('../../../../../core/classes/observer/observer.js');
13
14
  var observable_directive = require('../../../../../directives/observable_directive.js');
14
15
  var select_toggler_constants = require('./select_toggler_constants.js');
15
16
 
@@ -17,6 +18,11 @@ exports.HSelectToggler = class HSelectToggler extends phoenix_light_lit_element.
17
18
  constructor() {
18
19
  super(...arguments);
19
20
  this._contextConsumer = new context_consumer_controller.ContextConsumerController(this);
21
+ this._handleSelectedOptionChanged = (selectedOptions) => {
22
+ selectedOptions.length
23
+ ? this.classList.add(select_toggler_constants.SELECT_TOGGLER_CSS_CLASSES.selectTogglerSelected)
24
+ : this.classList.remove(select_toggler_constants.SELECT_TOGGLER_CSS_CLASSES.selectTogglerSelected);
25
+ };
20
26
  this._dispatchOptionDeselect = (option) => {
21
27
  this.dispatchEvent(new CustomEvent(select_constants.SELECT_EVENT_NAMES.deselectOption, {
22
28
  detail: option.value,
@@ -34,27 +40,36 @@ exports.HSelectToggler = class HSelectToggler extends phoenix_light_lit_element.
34
40
  async _subscribeObserver() {
35
41
  this.isMultiselect = (await this._contextConsumer.consumeAsync(select_constants.SELECT_CONTEXTS.isMultiselect));
36
42
  this.selectedOptions$ = (await this._contextConsumer.consumeAsync(select_constants.SELECT_CONTEXTS.selectedOptions$));
43
+ this._selectedOptionsObserver = new observer.Observer(this._handleSelectedOptionChanged);
44
+ this.selectedOptions$.subscribe(this._selectedOptionsObserver);
45
+ }
46
+ disconnectedCallback() {
47
+ var _a;
48
+ super.disconnectedCallback();
49
+ (_a = this.selectedOptions$) === null || _a === void 0 ? void 0 : _a.unsubscribe(this._selectedOptionsObserver);
37
50
  }
38
51
  render() {
39
52
  if (!this.selectedOptions$)
40
53
  return;
41
54
  return litHtml.html `
42
- <ul class=${select_toggler_constants.SELECT_TOGGLER_CSS_CLASSES.selectTogglerValues}>
43
- ${observable_directive.observe(this.selectedOptions$, (selectOptions) => {
55
+ ${observable_directive.observe(this.selectedOptions$, (selectOptions) => {
44
56
  var _a;
45
57
  if (!selectOptions.length)
46
- return litHtml.html `${(_a = this.getSlot(select_components_constatns.SELECT_INPUT_PLACEHOLDER_SLOT_NAME)) !== null && _a !== void 0 ? _a : 'Select'}`;
47
- return this.isMultiselect
48
- ? litHtml.html `${selectOptions.map((option) => litHtml.html `<li>
58
+ return litHtml.html `<span class=${select_toggler_constants.SELECT_TOGGLER_CSS_CLASSES.selectTogglerPlaceholder}
59
+ >${(_a = this.getSlot(select_components_constatns.SELECT_INPUT_PLACEHOLDER_SLOT_NAME)) !== null && _a !== void 0 ? _a : 'Select'}</span
60
+ >`;
61
+ return litHtml.html `<ul class=${select_toggler_constants.SELECT_TOGGLER_CSS_CLASSES.selectTogglerValues}>
62
+ ${this.isMultiselect
63
+ ? selectOptions.map((option) => litHtml.html `<li>
49
64
  <h-tag @tag.remove=${() => this._dispatchOptionDeselect(option)}>
50
65
  ${option.content}
51
66
 
52
67
  <h-tag-remove-button></h-tag-remove-button>
53
68
  </h-tag>
54
- </li>`)}`
55
- : litHtml.html `<li>${selectOptions[0].content}</li>`;
69
+ </li>`)
70
+ : litHtml.html `<li>${selectOptions[0].content}</li>`}
71
+ </ul>`;
56
72
  })}
57
- </ul>
58
73
 
59
74
  <h-icon icon-name="icon-chevron-down"></h-icon>
60
75
  `;
@@ -1 +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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -5,7 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const baseClass = 'select-toggler';
6
6
  const SELECT_TOGGLER_CSS_CLASSES = {
7
7
  selectToggler: baseClass,
8
- selectTogglerValues: `${baseClass}__values`
8
+ selectTogglerSelected: `${baseClass}_selected`,
9
+ selectTogglerValues: `${baseClass}__values`,
10
+ selectTogglerPlaceholder: `${baseClass}__placeholder`
9
11
  };
10
12
 
11
13
  exports.SELECT_TOGGLER_CSS_CLASSES = SELECT_TOGGLER_CSS_CLASSES;
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -20,7 +20,6 @@ class BaseSelectController {
20
20
  }, { visibleCount: 0, selectedCount: 0 });
21
21
  this.visibleOptionsCount = visibleCount;
22
22
  this.selectedOptionsCount = selectedCount;
23
- this.selectedOptions$.notify(selectOptions.filter((option) => option.selected));
24
23
  };
25
24
  this.host = host;
26
25
  this.host.addController(this);
@@ -55,11 +54,13 @@ class BaseSelectController {
55
54
  deselectOptions() {
56
55
  var _a;
57
56
  (_a = this.options$.getValue()) === null || _a === void 0 ? void 0 : _a.forEach((option) => (option.selected = false));
57
+ this.selectedOptions$.notify([]);
58
58
  this.requestOptionsUpdate();
59
59
  }
60
60
  deselectOption(option) {
61
61
  var _a;
62
62
  (_a = this.options$.getValue()) === null || _a === void 0 ? void 0 : _a.forEach((option) => (option.selected = false));
63
+ this.selectedOptions$.notify([]);
63
64
  this.requestOptionsUpdate();
64
65
  }
65
66
  filterOptions(value) {
@@ -1 +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;"}
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;AACA;"}
@@ -10,10 +10,12 @@ class MultiSelectController extends base_select_controller.BaseSelectController
10
10
  }
11
11
  selectOption(option) {
12
12
  option.selected = true;
13
+ this.selectedOptions$.notify((selectedOptions) => [...selectedOptions, option]);
13
14
  this.requestOptionsUpdate();
14
15
  }
15
16
  deselectOption(option) {
16
17
  option.selected = false;
18
+ this.selectedOptions$.notify((selectedOptions) => selectedOptions.filter((currOption) => currOption.value !== option.value));
17
19
  this.requestOptionsUpdate();
18
20
  }
19
21
  }
@@ -1 +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;"}
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;"}
@@ -15,7 +15,8 @@ class SelectOptionMapper {
15
15
  value: $option.value,
16
16
  disabled: $option.disabled,
17
17
  hidden: $option.hidden,
18
- content: optionContent
18
+ content: optionContent,
19
+ selected: $option.selected
19
20
  });
20
21
  }
21
22
  }
@@ -1 +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;"}
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;"}
@@ -9,24 +9,27 @@ var phoenix_light_lit_element = require('../../../core/phoenix_light_lit_element
9
9
  var phoenix_custom_element = require('../../../core/decorators/phoenix_custom_element.js');
10
10
  var decorators_js = require('@lit/reactive-element/decorators.js');
11
11
  var select_components_constatns = require('./components/select_components_constatns.js');
12
+ var icon = require('../../icon/icon.js');
12
13
  var select_constants = require('./select_constants.js');
13
14
  var observer = require('../../../core/classes/observer/observer.js');
14
15
  var observable_directive = require('../../../directives/observable_directive.js');
15
16
  var context_provider_controller = require('../../../core/context/context_provider_controller.js');
16
17
  var ref_js = require('lit-html/directives/ref.js');
18
+ var debounce = require('../../../../../../external/lodash/debounce.js');
17
19
  var multi_select_controller = require('./controllers/multi_select_controller.js');
18
20
  var select_controller = require('./controllers/select_controller.js');
19
21
  var select_search = require('./components/search/select_search.js');
20
22
  var list_box_keyboard_controller = require('../../../controllers/list_box_controller/list_box_keyboard_controller.js');
21
- var icon = require('../../icon/icon.js');
22
23
  var select_option_mapper = require('./model/select_option_mapper.js');
23
24
  var select_utils = require('./select_utils.js');
25
+ var select_close_btn = require('./components/select_close_btn.js');
24
26
 
25
27
  exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLitElement {
26
28
  constructor() {
27
29
  super();
28
30
  this.multiselect = false;
29
31
  this.opened = false;
32
+ this.offset = 2;
30
33
  this._searchValue = '';
31
34
  this._$options = {};
32
35
  this._$dropdown = ref_js.createRef();
@@ -34,6 +37,10 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
34
37
  this._$optionsList = ref_js.createRef();
35
38
  this._$dropdownContent = ref_js.createRef();
36
39
  this._selectContext = new context_provider_controller.ContextProviderController(this);
40
+ this._setDropdownContentWidth = () => {
41
+ if (this._$dropdownContent.value)
42
+ this._$dropdownContent.value.style.width = `${this.getBoundingClientRect().width}px`;
43
+ };
37
44
  this._handleOptionDeselect = (event) => {
38
45
  const selectedOption = this._selectController.getSelectOption(event.detail);
39
46
  if (!selectedOption)
@@ -66,6 +73,8 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
66
73
  };
67
74
  this._closeSelect = () => {
68
75
  var _a;
76
+ if (!this.opened)
77
+ return;
69
78
  (_a = this._$dropdown.value) === null || _a === void 0 ? void 0 : _a.hide();
70
79
  this._searchValue = '';
71
80
  this.opened = false;
@@ -73,19 +82,35 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
73
82
  this._clearOptions = () => {
74
83
  this._selectController.deselectOptions();
75
84
  };
85
+ this._handleResize = debounce['default'](() => {
86
+ this._closeSelect();
87
+ this._setDropdownContentWidth();
88
+ }, select_constants.SELECT_RESIZE_DEBOUNCE_TIME);
76
89
  const $options = Array.from(this.querySelectorAll(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.option));
77
90
  $options.forEach(($option) => $option.setAttribute('slot', select_constants.SELECT_SLOT_NAMES.content));
78
91
  }
79
92
  updated(changedProperties) {
80
93
  super.updated(changedProperties);
81
- if (changedProperties.has('opened'))
82
- this.opened ? this.classList.add(select_constants.SELECT_CSS_CLASSES.selectOpened) : this.classList.remove(select_constants.SELECT_CSS_CLASSES.selectOpened);
94
+ if (changedProperties.has('opened')) {
95
+ if (this.opened) {
96
+ this.classList.add(select_constants.SELECT_CSS_CLASSES.selectOpened);
97
+ this._focusElementAfterSelectOpened();
98
+ }
99
+ else {
100
+ this.classList.remove(select_constants.SELECT_CSS_CLASSES.selectOpened);
101
+ }
102
+ }
83
103
  if (this._$optionsList.value && !this._listBoxController)
84
104
  this._listBoxController = new list_box_keyboard_controller.ListBoxKeyboardController({
85
105
  host: this,
86
106
  $list: this._$optionsList.value
87
107
  });
88
108
  }
109
+ _focusElementAfterSelectOpened() {
110
+ var _a, _b;
111
+ const $searchInput = (_a = this._$search.value) === null || _a === void 0 ? void 0 : _a.querySelector('[role="search"]');
112
+ $searchInput ? $searchInput.focus() : (_b = this._$optionsList.value) === null || _b === void 0 ? void 0 : _b.focus();
113
+ }
89
114
  connectedCallback() {
90
115
  super.connectedCallback();
91
116
  this.classList.add(select_constants.SELECT_CSS_CLASSES.select);
@@ -93,7 +118,8 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
93
118
  this._selectContext.provide(select_constants.SELECT_CONTEXTS.selectedOptions$, this._selectController.selectedOptions$);
94
119
  this._selectContext.provide(select_constants.SELECT_CONTEXTS.isMultiselect, this.multiselect);
95
120
  const $options = Array.from(this.querySelectorAll(select_components_constatns.SELECT_RELATED_COMPONENTS_NAMES.option));
96
- this._selectController.options$.subscribe(new observer.Observer((selectedOptions) => this._updateOptionsView(selectedOptions)));
121
+ this._optionsObserver = new observer.Observer((selectedOptions) => this._updateOptionsView(selectedOptions));
122
+ this._selectController.options$.subscribe(this._optionsObserver);
97
123
  this._$options = $options.reduce((acc, $option) => {
98
124
  if (acc[$option.value] !== undefined)
99
125
  throw Error('Select options must hava a unique values.');
@@ -102,17 +128,27 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
102
128
  [$option.value]: $option
103
129
  };
104
130
  }, {});
105
- this._selectController.options$.notify($options.map(select_option_mapper.SelectOptionMapper.toModel));
131
+ const options = $options.map(select_option_mapper.SelectOptionMapper.toModel);
132
+ this._selectController.options$.notify(options);
133
+ if (options.length)
134
+ this._selectController.selectedOptions$.notify(options.filter((option) => option.selected));
106
135
  this._setupEvents();
107
136
  }
137
+ attributeChangedCallback(name, _old, value) {
138
+ super.attributeChangedCallback(name, _old, value);
139
+ switch (name) {
140
+ case 'error':
141
+ this.error ? this.classList.add(select_constants.SELECT_CSS_CLASSES.selectError) : this.classList.remove(select_constants.SELECT_CSS_CLASSES.selectError);
142
+ }
143
+ }
108
144
  firstUpdated(props) {
109
145
  super.firstUpdated(props);
110
- if (this._$dropdownContent.value)
111
- this._$dropdownContent.value.style.width = `${this.getBoundingClientRect().width}px`;
146
+ this._setDropdownContentWidth();
112
147
  }
113
148
  _setupEvents() {
114
149
  this.addEventListener(select_constants.SELECT_EVENT_NAMES.deselectOption, this._handleOptionDeselect);
115
150
  this.addEventListener(select_components_constatns.SELECT_CLOSE_BTN_EVENT_NAMES.close, this._closeSelect);
151
+ window.addEventListener('resize', this._handleResize);
116
152
  }
117
153
  _appendNewHTMLOption(option, position) {
118
154
  const $list = this._$optionsList.value;
@@ -145,6 +181,11 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
145
181
  replaceOptions(options) {
146
182
  this._selectController.replaceOptions(options);
147
183
  }
184
+ disconnectedCallback() {
185
+ super.disconnectedCallback();
186
+ this._selectController.options$.unsubscribe(this._optionsObserver);
187
+ window.removeEventListener('resize', this._handleResize);
188
+ }
148
189
  render() {
149
190
  var _a;
150
191
  const options = (_a = this._selectController.options$.getValue()) !== null && _a !== void 0 ? _a : [];
@@ -154,41 +195,48 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
154
195
  @dropdown.showed=${() => (this.opened = true)}
155
196
  @dropdown.hidden=${this._closeSelect}
156
197
  name=${this.controlName}
198
+ offset=${this.offset}
157
199
  >
158
- <h-dropdown-toggler name=${this.controlName}">
159
- ${this.getSlot(select_constants.SELECT_SLOT_NAMES.input)}
160
- </h-dropdown-toggler>
200
+ <h-dropdown-toggler name=${this.controlName}> ${this.getSlot(select_constants.SELECT_SLOT_NAMES.input)} </h-dropdown-toggler>
161
201
 
162
202
  <h-dropdown-content class=${select_constants.SELECT_CSS_CLASSES.selectContent} ${ref_js.ref(this._$dropdownContent)} name=${this.controlName}>
163
- <h-select-close-btn @click=${this._closeSelect}></h-select-close-btn>
203
+ <h-select-close-btn @selectCloseBtn.close=${this._closeSelect}></h-select-close-btn>
164
204
 
165
205
  ${options.length > select_constants.MIN_NUMBER_OF_OPTIONS_TO_SHOW_SEARCH
166
206
  ? lit.html `<h-select-search
167
- class=${select_constants.SELECT_CSS_CLASSES.selectSearch}
168
- ${ref_js.ref(this._$search)}
169
- .value=${this._searchValue}
170
- @selectSearch.search=${this._handleSearch}
171
- ></h-select-search>`
207
+ class=${select_constants.SELECT_CSS_CLASSES.selectSearch}
208
+ ${ref_js.ref(this._$search)}
209
+ .value=${this._searchValue}
210
+ @selectSearch.search=${this._handleSearch}
211
+ ></h-select-search>`
172
212
  : lit.nothing}
173
213
  ${this.hasSlot(select_constants.SELECT_SLOT_NAMES.content)
174
214
  ? lit.html `
175
- <h-options
176
- class=${select_constants.SELECT_CSS_CLASSES.selectOptions}
177
- ${ref_js.ref(this._$optionsList)}
178
- @selectOptions.clicked=${this._handleOptionClicked}
179
- >
180
- ${this.getSlot(select_constants.SELECT_SLOT_NAMES.content)}
181
- </h-options>
182
- `
215
+ <h-options
216
+ class=${select_constants.SELECT_CSS_CLASSES.selectOptions}
217
+ ${ref_js.ref(this._$optionsList)}
218
+ @selectOptions.clicked=${this._handleOptionClicked}
219
+ >
220
+ ${this.getSlot(select_constants.SELECT_SLOT_NAMES.content)}
221
+ </h-options>
222
+ `
223
+ : lit.nothing}
224
+ ${!this._selectController.visibleOptionsCount
225
+ ? lit.html `<div>
226
+ <p class=${select_constants.SELECT_CSS_CLASSES.selectNoResult}>
227
+ Brak wyników dla: <em class=${select_constants.SELECT_CSS_CLASSES.selectSearchedPhrase}>"${this._searchValue}"</em>
228
+ </p>
229
+ </div>`
183
230
  : lit.nothing}
184
- ${!this._selectController.visibleOptionsCount ? lit.html `<p>brak wyników dla ${this._searchValue}</p>` : lit.nothing}
185
231
  ${this.multiselect && this._selectController.selectedOptionsCount >= 1
186
232
  ? lit.html `
187
- <section class=${select_constants.SELECT_CSS_CLASSES.selectFooter}>
188
- <button class="btn btn_secondary" @click=${this._clearOptions}>clear</button>
189
- <h-select-close-btn class="btn btn_primary" @click=${this._closeSelect}>ok</h-select-close-btn>
190
- </section>
191
- `
233
+ <section class=${select_constants.SELECT_CSS_CLASSES.selectFooter}>
234
+ <button class="btn btn_secondary btn_xs" @click=${this._clearOptions}>clear</button>
235
+ <h-select-close-btn class="btn btn_primary btn_xs" @selectCloseBtn.close=${this._closeSelect}
236
+ >ok</h-select-close-btn
237
+ >
238
+ </section>
239
+ `
192
240
  : lit.nothing}
193
241
  </h-dropdown-content>
194
242
  </h-dropdown>
@@ -199,7 +247,8 @@ exports.HSelect = class HSelect extends phoenix_light_lit_element.PhoenixLightLi
199
247
  };
200
248
  exports.HSelect._components = {
201
249
  search: select_search.HSelectSearch,
202
- icon: icon.HIcon
250
+ icon: icon.HIcon,
251
+ closeBtn: select_close_btn.HSelectCloseBtn
203
252
  };
204
253
  tslib_es6.__decorate([
205
254
  decorators_js.property({ type: String }),
@@ -213,6 +262,14 @@ tslib_es6.__decorate([
213
262
  decorators_js.property({ type: Boolean }),
214
263
  tslib_es6.__metadata("design:type", Boolean)
215
264
  ], exports.HSelect.prototype, "opened", void 0);
265
+ tslib_es6.__decorate([
266
+ decorators_js.property({ type: Number }),
267
+ tslib_es6.__metadata("design:type", Number)
268
+ ], exports.HSelect.prototype, "offset", void 0);
269
+ tslib_es6.__decorate([
270
+ decorators_js.property({ type: Boolean }),
271
+ tslib_es6.__metadata("design:type", Boolean)
272
+ ], exports.HSelect.prototype, "error", void 0);
216
273
  tslib_es6.__decorate([
217
274
  decorators.state(),
218
275
  tslib_es6.__metadata("design:type", String)