@coorpacademy/components 10.1.12-alpha.0 → 10.1.15

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 (145) hide show
  1. package/es/atom/input-checkbox/index.js +9 -3
  2. package/es/atom/input-checkbox/index.js.map +1 -1
  3. package/es/atom/input-checkbox/style.css +15 -0
  4. package/es/atom/tag/test/fixtures.js +4 -2
  5. package/es/atom/tag/test/fixtures.js.map +1 -1
  6. package/es/molecule/banner/index.js +16 -7
  7. package/es/molecule/banner/index.js.map +1 -1
  8. package/es/molecule/banner/style.css +47 -0
  9. package/es/molecule/banner/test/fixtures/default.js +1 -1
  10. package/es/molecule/banner/test/fixtures/default.js.map +1 -1
  11. package/es/molecule/banner/test/fixtures/error-temporary-banner.js +8 -0
  12. package/es/molecule/banner/test/fixtures/error-temporary-banner.js.map +1 -0
  13. package/es/molecule/banner/test/fixtures/success-banner.js +7 -0
  14. package/es/molecule/banner/test/fixtures/success-banner.js.map +1 -0
  15. package/es/molecule/banner/test/fixtures/success-temporary-banner.js +8 -0
  16. package/es/molecule/banner/test/fixtures/success-temporary-banner.js.map +1 -0
  17. package/es/molecule/banner/test/fixtures/warning-temporary-banner.js +8 -0
  18. package/es/molecule/banner/test/fixtures/warning-temporary-banner.js.map +1 -0
  19. package/es/molecule/brand-form-group/style.css +5 -0
  20. package/es/molecule/brand-tabs/style.css +0 -1
  21. package/es/molecule/bullet-point-menu-button/index.js +1 -5
  22. package/es/molecule/bullet-point-menu-button/index.js.map +1 -1
  23. package/es/molecule/bullet-point-menu-button/style.css +11 -7
  24. package/es/molecule/select-multiple/index.js +99 -16
  25. package/es/molecule/select-multiple/index.js.map +1 -1
  26. package/es/molecule/select-multiple/style.css +293 -11
  27. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme-disabled.js +32 -0
  28. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme-disabled.js.map +1 -0
  29. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme-error.js +32 -0
  30. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme-error.js.map +1 -0
  31. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme-multiple.js +32 -0
  32. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme-multiple.js.map +1 -0
  33. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme.js +32 -0
  34. package/es/molecule/select-multiple/test/fixtures/checked-cm-theme.js.map +1 -0
  35. package/es/molecule/select-multiple/test/fixtures/setup-theme-error.js +1 -1
  36. package/es/molecule/select-multiple/test/fixtures/setup-theme-error.js.map +1 -1
  37. package/es/organism/accordion/coorp-manager/index.js +3 -3
  38. package/es/organism/accordion/coorp-manager/index.js.map +1 -1
  39. package/es/organism/brand-dashboard/index.js +1 -3
  40. package/es/organism/brand-dashboard/index.js.map +1 -1
  41. package/es/organism/brand-dashboard/style.css +0 -10
  42. package/es/organism/brand-form/test/fixtures/wizard-playlists.js +26 -0
  43. package/es/organism/brand-form/test/fixtures/wizard-playlists.js.map +1 -1
  44. package/es/organism/list-item/index.js +68 -0
  45. package/es/organism/list-item/index.js.map +1 -0
  46. package/es/organism/list-item/style.css +53 -0
  47. package/es/organism/list-item/test/fixtures/archived.js +39 -0
  48. package/es/organism/list-item/test/fixtures/archived.js.map +1 -0
  49. package/es/organism/list-item/test/fixtures/draft.js +39 -0
  50. package/es/organism/list-item/test/fixtures/draft.js.map +1 -0
  51. package/es/organism/list-item/test/fixtures/published.js +39 -0
  52. package/es/organism/list-item/test/fixtures/published.js.map +1 -0
  53. package/es/organism/list-item/test/fixtures/revised.js +41 -0
  54. package/es/organism/list-item/test/fixtures/revised.js.map +1 -0
  55. package/es/organism/setup-header/style.css +16 -7
  56. package/es/template/back-office/brand-update/index.js +106 -92
  57. package/es/template/back-office/brand-update/index.js.map +1 -1
  58. package/es/template/back-office/brand-update/style.css +22 -66
  59. package/es/template/back-office/brand-update/test/fixtures/default.js +1 -58
  60. package/es/template/back-office/brand-update/test/fixtures/default.js.map +1 -1
  61. package/es/template/back-office/brand-update/test/fixtures/general-settings.js +77 -3
  62. package/es/template/back-office/brand-update/test/fixtures/general-settings.js.map +1 -1
  63. package/es/template/back-office/brand-update/test/fixtures/loader.js +1 -1
  64. package/es/template/back-office/brand-update/test/fixtures/loader.js.map +1 -1
  65. package/es/template/back-office/brand-update/test/fixtures/manageusers-edit.js +1 -1
  66. package/es/template/back-office/brand-update/test/fixtures/manageusers-edit.js.map +1 -1
  67. package/es/template/back-office/brand-update/test/fixtures/manageusers-list.js +1 -1
  68. package/es/template/back-office/brand-update/test/fixtures/manageusers-list.js.map +1 -1
  69. package/es/template/back-office/brand-update/test/fixtures/uploadusers.js +1 -1
  70. package/es/template/back-office/brand-update/test/fixtures/uploadusers.js.map +1 -1
  71. package/lib/atom/input-checkbox/index.js +10 -3
  72. package/lib/atom/input-checkbox/index.js.map +1 -1
  73. package/lib/atom/input-checkbox/style.css +15 -0
  74. package/lib/atom/tag/test/fixtures.js +5 -2
  75. package/lib/atom/tag/test/fixtures.js.map +1 -1
  76. package/lib/molecule/banner/index.js +17 -6
  77. package/lib/molecule/banner/index.js.map +1 -1
  78. package/lib/molecule/banner/style.css +47 -0
  79. package/lib/molecule/banner/test/fixtures/default.js +1 -1
  80. package/lib/molecule/banner/test/fixtures/default.js.map +1 -1
  81. package/lib/molecule/banner/test/fixtures/error-temporary-banner.js +13 -0
  82. package/lib/molecule/banner/test/fixtures/error-temporary-banner.js.map +1 -0
  83. package/lib/molecule/banner/test/fixtures/success-banner.js +12 -0
  84. package/lib/molecule/banner/test/fixtures/success-banner.js.map +1 -0
  85. package/lib/molecule/banner/test/fixtures/success-temporary-banner.js +13 -0
  86. package/lib/molecule/banner/test/fixtures/success-temporary-banner.js.map +1 -0
  87. package/lib/molecule/banner/test/fixtures/warning-temporary-banner.js +13 -0
  88. package/lib/molecule/banner/test/fixtures/warning-temporary-banner.js.map +1 -0
  89. package/lib/molecule/brand-form-group/style.css +5 -0
  90. package/lib/molecule/brand-tabs/style.css +0 -1
  91. package/lib/molecule/bullet-point-menu-button/index.js +1 -5
  92. package/lib/molecule/bullet-point-menu-button/index.js.map +1 -1
  93. package/lib/molecule/bullet-point-menu-button/style.css +11 -7
  94. package/lib/molecule/select-multiple/index.js +101 -15
  95. package/lib/molecule/select-multiple/index.js.map +1 -1
  96. package/lib/molecule/select-multiple/style.css +293 -11
  97. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme-disabled.js +37 -0
  98. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme-disabled.js.map +1 -0
  99. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme-error.js +37 -0
  100. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme-error.js.map +1 -0
  101. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme-multiple.js +37 -0
  102. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme-multiple.js.map +1 -0
  103. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme.js +37 -0
  104. package/lib/molecule/select-multiple/test/fixtures/checked-cm-theme.js.map +1 -0
  105. package/lib/molecule/select-multiple/test/fixtures/setup-theme-error.js +1 -1
  106. package/lib/molecule/select-multiple/test/fixtures/setup-theme-error.js.map +1 -1
  107. package/lib/organism/accordion/coorp-manager/index.js +2 -4
  108. package/lib/organism/accordion/coorp-manager/index.js.map +1 -1
  109. package/lib/organism/brand-dashboard/index.js +1 -3
  110. package/lib/organism/brand-dashboard/index.js.map +1 -1
  111. package/lib/organism/brand-dashboard/style.css +0 -10
  112. package/lib/organism/brand-form/test/fixtures/wizard-playlists.js +26 -0
  113. package/lib/organism/brand-form/test/fixtures/wizard-playlists.js.map +1 -1
  114. package/lib/organism/list-item/index.js +82 -0
  115. package/lib/organism/list-item/index.js.map +1 -0
  116. package/lib/organism/list-item/style.css +53 -0
  117. package/lib/organism/list-item/test/fixtures/archived.js +44 -0
  118. package/lib/organism/list-item/test/fixtures/archived.js.map +1 -0
  119. package/lib/organism/list-item/test/fixtures/draft.js +44 -0
  120. package/lib/organism/list-item/test/fixtures/draft.js.map +1 -0
  121. package/lib/organism/list-item/test/fixtures/published.js +44 -0
  122. package/lib/organism/list-item/test/fixtures/published.js.map +1 -0
  123. package/lib/organism/list-item/test/fixtures/revised.js +46 -0
  124. package/lib/organism/list-item/test/fixtures/revised.js.map +1 -0
  125. package/lib/organism/setup-header/style.css +16 -7
  126. package/lib/template/back-office/brand-update/index.js +106 -93
  127. package/lib/template/back-office/brand-update/index.js.map +1 -1
  128. package/lib/template/back-office/brand-update/style.css +22 -66
  129. package/lib/template/back-office/brand-update/test/fixtures/default.js +1 -58
  130. package/lib/template/back-office/brand-update/test/fixtures/default.js.map +1 -1
  131. package/lib/template/back-office/brand-update/test/fixtures/general-settings.js +76 -3
  132. package/lib/template/back-office/brand-update/test/fixtures/general-settings.js.map +1 -1
  133. package/lib/template/back-office/brand-update/test/fixtures/loader.js +2 -2
  134. package/lib/template/back-office/brand-update/test/fixtures/loader.js.map +1 -1
  135. package/lib/template/back-office/brand-update/test/fixtures/manageusers-edit.js +2 -2
  136. package/lib/template/back-office/brand-update/test/fixtures/manageusers-edit.js.map +1 -1
  137. package/lib/template/back-office/brand-update/test/fixtures/manageusers-list.js +2 -2
  138. package/lib/template/back-office/brand-update/test/fixtures/manageusers-list.js.map +1 -1
  139. package/lib/template/back-office/brand-update/test/fixtures/uploadusers.js +2 -2
  140. package/lib/template/back-office/brand-update/test/fixtures/uploadusers.js.map +1 -1
  141. package/package.json +2 -2
  142. package/es/template/back-office/brand-update/test/fixtures/manageusers.js +0 -11
  143. package/es/template/back-office/brand-update/test/fixtures/manageusers.js.map +0 -1
  144. package/lib/template/back-office/brand-update/test/fixtures/manageusers.js +0 -25
  145. package/lib/template/back-office/brand-update/test/fixtures/manageusers.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/molecule/bullet-point-menu-button/index.js"],"names":["BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","buttons","handleOnClick","menuProps","menu","style","bulletPointMenu","bulletPointButtonProps","size","icon","bulletPointWrapper","bulletPointButton","propTypes","PropTypes","bool","string","ButtonMenu","func"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,qBAAqB,GAAGC,KAAK,IAAI;AACrC,QAAM;AAACC,IAAAA,QAAQ,GAAG,KAAZ;AAAmBC,IAAAA,eAAnB;AAAoCC,IAAAA,aAApC;AAAmDC,IAAAA,OAAnD;AAA4DC,IAAAA;AAA5D,MAAuEL,KAA7E;AACA,QAAMM,aAAa,GAAG,wBAAY,MAAMF,OAAO,EAAzB,EAA6B,CAACA,OAAD,CAA7B,CAAtB;AAEA,QAAMG,SAAS,GAAG;AAChB,iBAAa,aADG;AAEhBF,IAAAA;AAFgB,GAAlB;;AAKA,QAAMG,IAAI,gBACR;AAAK,IAAA,SAAS,EAAEC,eAAMC,eAAtB;AAAuC,iBAAU,cAAjD;AAAgE,kBAAYP;AAA5E,kBACE,6BAAC,mBAAD,EAAgBI,SAAhB,CADF,CADF;;AAKA,QAAMI,sBAAsB,GAAG;AAC7BC,IAAAA,IAAI,EAAE,SADuB;AAE7B,kBAAcV,eAFe;AAG7B,iBAAa,qBAHgB;AAI7BW,IAAAA,IAAI,EAAE,cAJuB;AAK7BT,IAAAA,OAAO,EAAEE,aALoB;AAM7BL,IAAAA;AAN6B,GAA/B;AASA,sBACE;AAAK,IAAA,SAAS,EAAEQ,eAAMK,kBAAtB;AAA0C,iBAAU;AAApD,kBACE,6BAAC,2BAAD,eAAwBH,sBAAxB;AAAgD,IAAA,SAAS,EAAEF,eAAMM;AAAjE,KADF,EAEGP,IAFH,CADF;AAMD,CA7BD;;AA+BAT,qBAAqB,CAACiB,SAAtB,2CAAkC;AAChCf,EAAAA,QAAQ,EAAEgB,mBAAUC,IADY;AAEhChB,EAAAA,eAAe,EAAEe,mBAAUE,MAFK;AAGhChB,EAAAA,aAAa,EAAEc,mBAAUE,MAHO;AAIhCd,EAAAA,OAAO,EAAEe,oBAAWJ,SAAX,CAAqBX,OAJE;AAKhCD,EAAAA,OAAO,EAAEa,mBAAUI;AALa,CAAlC;eAQetB,qB","sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonLinkIconOnly from '../../atom/button-link-icon-only';\nimport ButtonMenu from '../../atom/button-menu';\nimport style from './style.css';\n\nconst BulletPointMenuButton = props => {\n const {disabled = false, buttonAriaLabel, menuAriaLabel, onClick, buttons} = props;\n const handleOnClick = useCallback(() => onClick(), [onClick]);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menu = (\n <div className={style.bulletPointMenu} data-name=\"menu-wrapper\" aria-label={menuAriaLabel}>\n <ButtonMenu {...menuProps} />\n </div>\n );\n const bulletPointButtonProps = {\n size: 'default',\n 'aria-label': buttonAriaLabel,\n 'data-name': 'bullet-point-button',\n icon: 'bullet-point',\n onClick: handleOnClick,\n disabled\n };\n\n return (\n <div className={style.bulletPointWrapper} data-name=\"bullet-point-wrapper\">\n <ButtonLinkIconOnly {...bulletPointButtonProps} className={style.bulletPointButton} />\n {menu}\n </div>\n );\n};\n\nBulletPointMenuButton.propTypes = {\n disabled: PropTypes.bool,\n buttonAriaLabel: PropTypes.string,\n menuAriaLabel: PropTypes.string,\n buttons: ButtonMenu.propTypes.buttons,\n onClick: PropTypes.func\n};\n\nexport default BulletPointMenuButton;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/molecule/bullet-point-menu-button/index.js"],"names":["BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","buttons","handleOnClick","menuProps","menu","style","bulletPointMenu","bulletPointButtonProps","size","icon","bulletPointWrapper","propTypes","PropTypes","bool","string","ButtonMenu","func"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,qBAAqB,GAAGC,KAAK,IAAI;AACrC,QAAM;AAACC,IAAAA,QAAQ,GAAG,KAAZ;AAAmBC,IAAAA,eAAnB;AAAoCC,IAAAA,aAApC;AAAmDC,IAAAA,OAAnD;AAA4DC,IAAAA;AAA5D,MAAuEL,KAA7E;AACA,QAAMM,aAAa,GAAG,wBAAY,MAAMF,OAAO,EAAzB,EAA6B,CAACA,OAAD,CAA7B,CAAtB;AAEA,QAAMG,SAAS,GAAG;AAChB,iBAAa,aADG;AAEhBF,IAAAA;AAFgB,GAAlB;;AAKA,QAAMG,IAAI,gBACR;AAAK,IAAA,SAAS,EAAEC,eAAMC,eAAtB;AAAuC,iBAAU,cAAjD;AAAgE,kBAAYP;AAA5E,kBACE,6BAAC,mBAAD,EAAgBI,SAAhB,CADF,CADF;;AAKA,QAAMI,sBAAsB,GAAG;AAC7BC,IAAAA,IAAI,EAAE,SADuB;AAE7B,kBAAcV,eAFe;AAG7B,iBAAa,qBAHgB;AAI7BW,IAAAA,IAAI,EAAE,cAJuB;AAK7BT,IAAAA,OAAO,EAAEE,aALoB;AAM7BL,IAAAA;AAN6B,GAA/B;AASA,sBACE;AAAK,IAAA,SAAS,EAAEQ,eAAMK,kBAAtB;AAA0C,iBAAU;AAApD,kBACE,6BAAC,2BAAD,EAAwBH,sBAAxB,CADF,EAEGH,IAFH,CADF;AAMD,CA7BD;;AA+BAT,qBAAqB,CAACgB,SAAtB,2CAAkC;AAChCd,EAAAA,QAAQ,EAAEe,mBAAUC,IADY;AAEhCf,EAAAA,eAAe,EAAEc,mBAAUE,MAFK;AAGhCf,EAAAA,aAAa,EAAEa,mBAAUE,MAHO;AAIhCb,EAAAA,OAAO,EAAEc,oBAAWJ,SAAX,CAAqBV,OAJE;AAKhCD,EAAAA,OAAO,EAAEY,mBAAUI;AALa,CAAlC;eAQerB,qB","sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonLinkIconOnly from '../../atom/button-link-icon-only';\nimport ButtonMenu from '../../atom/button-menu';\nimport style from './style.css';\n\nconst BulletPointMenuButton = props => {\n const {disabled = false, buttonAriaLabel, menuAriaLabel, onClick, buttons} = props;\n const handleOnClick = useCallback(() => onClick(), [onClick]);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menu = (\n <div className={style.bulletPointMenu} data-name=\"menu-wrapper\" aria-label={menuAriaLabel}>\n <ButtonMenu {...menuProps} />\n </div>\n );\n const bulletPointButtonProps = {\n size: 'default',\n 'aria-label': buttonAriaLabel,\n 'data-name': 'bullet-point-button',\n icon: 'bullet-point',\n onClick: handleOnClick,\n disabled\n };\n\n return (\n <div className={style.bulletPointWrapper} data-name=\"bullet-point-wrapper\">\n <ButtonLinkIconOnly {...bulletPointButtonProps} />\n {menu}\n </div>\n );\n};\n\nBulletPointMenuButton.propTypes = {\n disabled: PropTypes.bool,\n buttonAriaLabel: PropTypes.string,\n menuAriaLabel: PropTypes.string,\n buttons: ButtonMenu.propTypes.buttons,\n onClick: PropTypes.func\n};\n\nexport default BulletPointMenuButton;\n"],"file":"index.js"}
@@ -10,7 +10,7 @@
10
10
  position: relative;
11
11
  }
12
12
 
13
- .bulletPointButton {
13
+ .bulletPointWrapper > button {
14
14
  position: relative;
15
15
  cursor: pointer;
16
16
  }
@@ -31,8 +31,8 @@
31
31
  background-color: cm_grey_100;
32
32
  }
33
33
 
34
- /* Fade-in - Fade-out */
35
- .bulletPointButton,button + .bulletPointMenu {
34
+ /* Fade-in - Fade-out, does target button class but bulletPointMenu only */
35
+ button + .bulletPointMenu {
36
36
  max-height: 0;
37
37
  /* fade out combo */
38
38
  visibility: hidden;
@@ -40,13 +40,17 @@
40
40
  transition:visibility 0.5s ease,opacity 0.5s ease;
41
41
  }
42
42
 
43
- .bulletPointButton,button:focus + .bulletPointMenu {
43
+ /* Does target button class but bulletPointMenu only */
44
+ button:focus + .bulletPointMenu {
44
45
  /* fade in combo */
45
46
  max-height: max-content;
46
47
  visibility:visible;
47
48
  opacity:1;
48
49
  }
49
50
 
50
- /* Recover - unset pointer-events */
51
- .bulletPointButton,button:focus { pointer-events: none; }
52
- .bulletPointButton,button:not(:focus) { pointer-events: auto; }
51
+ /*
52
+ Recover - unset pointer-events,
53
+ to be able to click on the button when the menu is open to close it
54
+ */
55
+ .bulletPointWrapper > button:focus { pointer-events: none; }
56
+ .bulletPointWrapper > button:not(:focus) { pointer-events: auto; }
@@ -3,6 +3,10 @@
3
3
  exports.__esModule = true;
4
4
  exports.default = exports.useChoices = void 0;
5
5
 
6
+ var _isEmpty2 = _interopRequireDefault(require("lodash/fp/isEmpty"));
7
+
8
+ var _keys2 = _interopRequireDefault(require("lodash/fp/keys"));
9
+
6
10
  var _set2 = _interopRequireDefault(require("lodash/fp/set"));
7
11
 
8
12
  var _get2 = _interopRequireDefault(require("lodash/fp/get"));
@@ -27,6 +31,8 @@ var _titledCheckbox = _interopRequireDefault(require("../titled-checkbox"));
27
31
 
28
32
  var _provider = _interopRequireDefault(require("../../atom/provider"));
29
33
 
34
+ var _inputCheckbox = _interopRequireDefault(require("../../atom/input-checkbox"));
35
+
30
36
  var _getClassState = _interopRequireDefault(require("../../util/get-class-state"));
31
37
 
32
38
  var _style = _interopRequireDefault(require("./style.css"));
@@ -42,7 +48,8 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
42
48
  const themeStyle = {
43
49
  setup: _style.default.setup,
44
50
  cockpit: _style.default.cockpit,
45
- sidebar: _style.default.sidebar
51
+ sidebar: _style.default.sidebar,
52
+ coorpmanager: _style.default.coorpmanager
46
53
  };
47
54
 
48
55
  const useChoices = options => {
@@ -62,17 +69,49 @@ const useChoices = options => {
62
69
 
63
70
  exports.useChoices = useChoices;
64
71
 
72
+ const CMMultipleView = ({
73
+ multiple,
74
+ choice,
75
+ onChange
76
+ }) => {
77
+ const handleChange = (0, _react.useCallback)(checked => {
78
+ if (!multiple) {
79
+ return onChange(choice);
80
+ }
81
+
82
+ return onChange(_extends(_extends({}, choice), {}, {
83
+ selected: checked
84
+ }));
85
+ }, [onChange, choice, multiple]);
86
+ return multiple ? /*#__PURE__*/_react.default.createElement("div", {
87
+ className: _style.default.item
88
+ }, /*#__PURE__*/_react.default.createElement(_inputCheckbox.default, {
89
+ titleStyle: "inherit",
90
+ checked: choice.selected,
91
+ onChange: handleChange,
92
+ noLabelMargins: true,
93
+ title: choice.name
94
+ })) : /*#__PURE__*/_react.default.createElement("span", {
95
+ className: _style.default.item,
96
+ onClick: handleChange,
97
+ title: choice.name
98
+ }, choice.name);
99
+ };
100
+
65
101
  const SelectMultiple = ({
66
102
  title,
67
103
  options,
68
104
  theme,
69
105
  placeholder,
70
106
  description,
107
+ hint,
71
108
  multiple,
72
109
  onChange,
110
+ onError,
73
111
  modified = false,
74
112
  required = false,
75
- error = false
113
+ error = '',
114
+ disabled = false
76
115
  }, {
77
116
  skin
78
117
  }) => {
@@ -82,10 +121,11 @@ const SelectMultiple = ({
82
121
  const defaultColor = (0, _get2.default)('common.primary', skin);
83
122
  const black = (0, _get2.default)('common.black', skin);
84
123
  const handleOnClick = (0, _react.useCallback)(e => {
124
+ if (disabled) return;
85
125
  e.preventDefault();
86
126
  e.stopPropagation();
87
127
  updateIsOpened(prev => !prev);
88
- }, []);
128
+ }, [disabled]);
89
129
  const closeHandle = (0, _react.useCallback)(e => {
90
130
  if (nodeRef && nodeRef.current && !nodeRef.current.contains(e.target)) {
91
131
  updateIsOpened(false);
@@ -109,6 +149,7 @@ const SelectMultiple = ({
109
149
  document.removeEventListener('touchstart', closeHandle);
110
150
  };
111
151
  }, [closeHandle]);
152
+ const isCMTheme = theme === 'coorpmanager';
112
153
 
113
154
  const lines = _map2.default.convert({
114
155
  cap: false
@@ -116,7 +157,13 @@ const SelectMultiple = ({
116
157
  return /*#__PURE__*/_react.default.createElement("li", {
117
158
  key: i,
118
159
  className: _style.default.choice
119
- }, /*#__PURE__*/_react.default.createElement(_titledCheckbox.default, {
160
+ }, isCMTheme ? /*#__PURE__*/_react.default.createElement(CMMultipleView, {
161
+ multiple: multiple,
162
+ choice: _extends(_extends({}, choice), {}, {
163
+ i
164
+ }),
165
+ onChange: handleChange
166
+ }) : /*#__PURE__*/_react.default.createElement(_titledCheckbox.default, {
120
167
  onToggle: handleChange,
121
168
  choice: _extends(_extends({}, choice), {}, {
122
169
  i
@@ -131,47 +178,86 @@ const SelectMultiple = ({
131
178
 
132
179
  const _title = title && `${title}${required ? ' *' : ''}`;
133
180
 
134
- const titleView = title ? /*#__PURE__*/_react.default.createElement("span", {
135
- className: _style.default.title
136
- }, _title, " ") : null;
137
181
  const isActive = isOpened === true;
182
+ const titleView = title ? /*#__PURE__*/_react.default.createElement("span", {
183
+ className: (0, _classnames.default)(_style.default.title, isCMTheme && selection && _style.default.titleWithSelection, isCMTheme && (0, _isEmpty2.default)(selection) && _style.default.noValue, isActive && _style.default.active)
184
+ }, _title, isCMTheme ? /*#__PURE__*/_react.default.createElement("div", {
185
+ className: _style.default.infoIconWrapper
186
+ }, /*#__PURE__*/_react.default.createElement(_novaIcons.NovaCompositionCoorpacademyInformationIcon, {
187
+ className: _style.default.infoIcon
188
+ }), /*#__PURE__*/_react.default.createElement("div", {
189
+ className: _style.default.descriptionLabel
190
+ }, description)) : null) : null;
191
+ const hintView = isCMTheme && !isActive ? /*#__PURE__*/_react.default.createElement("div", {
192
+ className: _style.default.hint // eslint-disable-next-line react/no-danger
193
+ ,
194
+ dangerouslySetInnerHTML: {
195
+ __html: error || hint
196
+ }
197
+ }) : null;
138
198
  const mainClass = theme ? themeStyle[theme] : _style.default.default;
199
+ const showPlaceholder = isCMTheme && isActive;
139
200
  const behaviourClassName = (0, _getClassState.default)(_style.default.default, _style.default.modified, _style.default.error, modified, error);
201
+ const errorIconView = error ? /*#__PURE__*/_react.default.createElement(_novaIcons.NovaSolidStatusClose, {
202
+ onClick: onError,
203
+ className: _style.default.errorIcon
204
+ }) : null;
140
205
  return /*#__PURE__*/_react.default.createElement("div", {
141
- className: (0, _classnames.default)(mainClass, behaviourClassName),
206
+ className: (0, _classnames.default)(mainClass, behaviourClassName, disabled && _style.default.disabled),
142
207
  ref: nodeRef
143
- }, /*#__PURE__*/_react.default.createElement("label", null, titleView, /*#__PURE__*/_react.default.createElement("div", {
208
+ }, /*#__PURE__*/_react.default.createElement("label", null, !isCMTheme && titleView, /*#__PURE__*/_react.default.createElement("div", {
144
209
  className: _style.default.select,
145
210
  title: selection || placeholder,
146
211
  onClick: handleOnClick
147
- }, selection || placeholder, /*#__PURE__*/_react.default.createElement(_novaIcons.NovaCompositionNavigationArrowDown, {
212
+ }, isCMTheme && titleView, /*#__PURE__*/_react.default.createElement("span", {
213
+ className: (0, _classnames.default)(_style.default.selection, isCMTheme && (0, _isEmpty2.default)(selection) && _style.default.noselection)
214
+ }, selection || !isCMTheme || showPlaceholder && placeholder || null), isCMTheme ? /*#__PURE__*/_react.default.createElement("div", {
215
+ className: _style.default.iconsWrapper
216
+ }, /*#__PURE__*/_react.default.createElement("div", {
217
+ className: _style.default.flex
218
+ }, errorIconView), /*#__PURE__*/_react.default.createElement("div", {
219
+ className: (0, _classnames.default)(_style.default.flex, isActive && _style.default.clicked)
220
+ }, /*#__PURE__*/_react.default.createElement(_novaIcons.NovaCompositionNavigationArrowDown, {
221
+ color: black,
222
+ className: (0, _classnames.default)(_style.default.arrow, {
223
+ [_style.default.down]: isActive
224
+ })
225
+ }))) : /*#__PURE__*/_react.default.createElement(_novaIcons.NovaCompositionNavigationArrowDown, {
148
226
  color: black,
149
227
  className: (0, _classnames.default)(_style.default.arrow, {
150
228
  [_style.default.down]: isActive
151
229
  })
152
230
  })), /*#__PURE__*/_react.default.createElement("div", {
153
- className: isActive ? _style.default.activeChoices : _style.default.choices
231
+ className: (0, _classnames.default)(_style.default.choices, isActive && _style.default.activeChoices)
154
232
  }, /*#__PURE__*/_react.default.createElement("ul", {
155
233
  className: _style.default.list
156
- }, lines))), /*#__PURE__*/_react.default.createElement("div", {
234
+ }, lines))), !isCMTheme ? /*#__PURE__*/_react.default.createElement("div", {
157
235
  className: _style.default.description
158
- }, description));
236
+ }, description) : null, hintView);
159
237
  };
160
238
 
161
239
  SelectMultiple.contextTypes = {
162
240
  skin: _provider.default.childContextTypes.skin
163
241
  };
242
+ CMMultipleView.propTypes = process.env.NODE_ENV !== "production" ? {
243
+ multiple: _propTypes.default.bool,
244
+ choice: _titledCheckbox.default.propTypes.choice,
245
+ onChange: _propTypes.default.func
246
+ } : {};
164
247
  SelectMultiple.propTypes = process.env.NODE_ENV !== "production" ? {
165
248
  title: _propTypes.default.string,
166
249
  placeholder: _propTypes.default.string,
167
250
  description: _propTypes.default.string,
251
+ hint: _propTypes.default.string,
168
252
  options: _propTypes.default.arrayOf(_titledCheckbox.default.propTypes.choice),
169
253
  onChange: _propTypes.default.func,
254
+ onError: _propTypes.default.func,
170
255
  multiple: _propTypes.default.bool,
171
- theme: _propTypes.default.string,
172
256
  modified: _propTypes.default.bool,
257
+ disabled: _propTypes.default.bool,
173
258
  required: _propTypes.default.bool,
174
- error: _propTypes.default.bool
259
+ error: _propTypes.default.string,
260
+ theme: _propTypes.default.oneOf((0, _keys2.default)(themeStyle))
175
261
  } : {};
176
262
  var _default = SelectMultiple;
177
263
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/molecule/select-multiple/index.js"],"names":["themeStyle","setup","style","cockpit","sidebar","useChoices","options","choicesRef","getChoices","current","setChoices","choice","choices","i","selected","filter","c","SelectMultiple","title","theme","placeholder","description","multiple","onChange","modified","required","error","skin","isOpened","updateIsOpened","nodeRef","defaultColor","black","handleOnClick","e","preventDefault","stopPropagation","prev","closeHandle","contains","target","handleChange","document","addEventListener","removeEventListener","lines","convert","cap","selection","_title","titleView","isActive","mainClass","default","behaviourClassName","select","arrow","down","activeChoices","list","contextTypes","Provider","childContextTypes","propTypes","PropTypes","string","arrayOf","TitledCheckbox","func","bool"],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {map, pipe, join, filter, get, set} from 'lodash/fp';\nimport {NovaCompositionNavigationArrowDown as ArrowDown} from '@coorpacademy/nova-icons';\nimport TitledCheckbox from '../titled-checkbox';\nimport Provider from '../../atom/provider';\nimport getClassState from '../../util/get-class-state';\nimport style from './style.css';\n\nconst themeStyle = {\n setup: style.setup,\n cockpit: style.cockpit,\n sidebar: style.sidebar\n};\n\nexport const useChoices = options => {\n const choicesRef = useRef(options);\n\n const getChoices = () => {\n return choicesRef.current;\n };\n\n const setChoices = choice => {\n const choices = set(`[${choice.i}].selected`, !choice.selected, getChoices());\n\n choicesRef.current = choices.filter(c => c.selected);\n };\n\n return [getChoices, setChoices];\n};\n\nconst SelectMultiple = (\n {\n title,\n options,\n theme,\n placeholder,\n description,\n multiple,\n onChange,\n modified = false,\n required = false,\n error = false\n },\n {skin}\n) => {\n const [isOpened, updateIsOpened] = useState(false);\n const [getChoices, setChoices] = useChoices(options);\n const nodeRef = useRef(null);\n\n const defaultColor = get('common.primary', skin);\n const black = get('common.black', skin);\n\n const handleOnClick = useCallback(e => {\n e.preventDefault();\n e.stopPropagation();\n\n updateIsOpened(prev => !prev);\n }, []);\n\n const closeHandle = useCallback(e => {\n if (nodeRef && nodeRef.current && !nodeRef.current.contains(e.target)) {\n updateIsOpened(false);\n }\n }, []);\n\n const handleChange = useCallback(\n choice => {\n // if multiple prop is turned on\n // we return all selected choices\n if (multiple) {\n setChoices(choice);\n\n return onChange(getChoices());\n }\n\n return onChange(choice);\n },\n [setChoices, multiple, onChange]\n );\n\n useEffect(() => {\n document.addEventListener('click', closeHandle);\n document.addEventListener('touchstart', closeHandle);\n\n return () => {\n document.removeEventListener('click', closeHandle);\n document.removeEventListener('touchstart', closeHandle);\n };\n }, [closeHandle]);\n\n const lines = map.convert({cap: false})((choice, i) => {\n return (\n <li key={i} className={style.choice}>\n <TitledCheckbox onToggle={handleChange} choice={{...choice, i}} background={defaultColor} />\n </li>\n );\n }, options);\n\n const selection = pipe(filter({selected: true}), map('name'), join(', '))(options);\n\n const _title = title && `${title}${required ? ' *' : ''}`;\n\n const titleView = title ? <span className={style.title}>{_title} </span> : null;\n const isActive = isOpened === true;\n const mainClass = theme ? themeStyle[theme] : style.default;\n const behaviourClassName = getClassState(\n style.default,\n style.modified,\n style.error,\n modified,\n error\n );\n\n return (\n <div className={classnames(mainClass, behaviourClassName)} ref={nodeRef}>\n <label>\n {titleView}\n <div className={style.select} title={selection || placeholder} onClick={handleOnClick}>\n {selection || placeholder}\n <ArrowDown color={black} className={classnames(style.arrow, {[style.down]: isActive})} />\n </div>\n <div className={isActive ? style.activeChoices : style.choices}>\n <ul className={style.list}>{lines}</ul>\n </div>\n </label>\n <div className={style.description}>{description}</div>\n </div>\n );\n};\n\nSelectMultiple.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSelectMultiple.propTypes = {\n title: PropTypes.string,\n placeholder: PropTypes.string,\n description: PropTypes.string,\n options: PropTypes.arrayOf(TitledCheckbox.propTypes.choice),\n onChange: PropTypes.func,\n multiple: PropTypes.bool,\n theme: PropTypes.string,\n modified: PropTypes.bool,\n required: PropTypes.bool,\n error: PropTypes.bool\n};\n\nexport default SelectMultiple;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/molecule/select-multiple/index.js"],"names":["themeStyle","setup","style","cockpit","sidebar","coorpmanager","useChoices","options","choicesRef","getChoices","current","setChoices","choice","choices","i","selected","filter","c","CMMultipleView","multiple","onChange","handleChange","checked","item","name","SelectMultiple","title","theme","placeholder","description","hint","onError","modified","required","error","disabled","skin","isOpened","updateIsOpened","nodeRef","defaultColor","black","handleOnClick","e","preventDefault","stopPropagation","prev","closeHandle","contains","target","document","addEventListener","removeEventListener","isCMTheme","lines","convert","cap","selection","_title","isActive","titleView","titleWithSelection","noValue","active","infoIconWrapper","infoIcon","descriptionLabel","hintView","__html","mainClass","default","showPlaceholder","behaviourClassName","errorIconView","errorIcon","select","noselection","iconsWrapper","flex","clicked","arrow","down","activeChoices","list","contextTypes","Provider","childContextTypes","propTypes","PropTypes","bool","TitledCheckbox","func","string","arrayOf","oneOf"],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useRef, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {map, pipe, join, filter, get, set, keys, isEmpty} from 'lodash/fp';\nimport {\n NovaCompositionNavigationArrowDown as ArrowDown,\n NovaSolidStatusClose as ErrorIcon,\n NovaCompositionCoorpacademyInformationIcon as InfoIcon\n} from '@coorpacademy/nova-icons';\nimport TitledCheckbox from '../titled-checkbox';\nimport Provider from '../../atom/provider';\nimport Checkbox from '../../atom/input-checkbox';\nimport getClassState from '../../util/get-class-state';\nimport style from './style.css';\n\nconst themeStyle = {\n setup: style.setup,\n cockpit: style.cockpit,\n sidebar: style.sidebar,\n coorpmanager: style.coorpmanager\n};\n\nexport const useChoices = options => {\n const choicesRef = useRef(options);\n\n const getChoices = () => {\n return choicesRef.current;\n };\n\n const setChoices = choice => {\n const choices = set(`[${choice.i}].selected`, !choice.selected, getChoices());\n\n choicesRef.current = choices.filter(c => c.selected);\n };\n\n return [getChoices, setChoices];\n};\n\nconst CMMultipleView = ({multiple, choice, onChange}) => {\n const handleChange = useCallback(\n checked => {\n if (!multiple) {\n return onChange(choice);\n }\n return onChange({...choice, selected: checked});\n },\n [onChange, choice, multiple]\n );\n\n return multiple ? (\n <div className={style.item}>\n <Checkbox\n titleStyle=\"inherit\"\n checked={choice.selected}\n onChange={handleChange}\n noLabelMargins\n title={choice.name}\n />\n </div>\n ) : (\n <span className={style.item} onClick={handleChange} title={choice.name}>\n {choice.name}\n </span>\n );\n};\n\nconst SelectMultiple = (\n {\n title,\n options,\n theme,\n placeholder,\n description,\n hint,\n multiple,\n onChange,\n onError,\n modified = false,\n required = false,\n error = '',\n disabled = false\n },\n {skin}\n) => {\n const [isOpened, updateIsOpened] = useState(false);\n const [getChoices, setChoices] = useChoices(options);\n const nodeRef = useRef(null);\n\n const defaultColor = get('common.primary', skin);\n const black = get('common.black', skin);\n\n const handleOnClick = useCallback(\n e => {\n if (disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n updateIsOpened(prev => !prev);\n },\n [disabled]\n );\n\n const closeHandle = useCallback(e => {\n if (nodeRef && nodeRef.current && !nodeRef.current.contains(e.target)) {\n updateIsOpened(false);\n }\n }, []);\n\n const handleChange = useCallback(\n choice => {\n // if multiple prop is turned on\n // we return all selected choices\n if (multiple) {\n setChoices(choice);\n\n return onChange(getChoices());\n }\n\n return onChange(choice);\n },\n [setChoices, multiple, onChange]\n );\n\n useEffect(() => {\n document.addEventListener('click', closeHandle);\n document.addEventListener('touchstart', closeHandle);\n\n return () => {\n document.removeEventListener('click', closeHandle);\n document.removeEventListener('touchstart', closeHandle);\n };\n }, [closeHandle]);\n\n const isCMTheme = theme === 'coorpmanager';\n\n const lines = map.convert({cap: false})((choice, i) => {\n return (\n <li key={i} className={style.choice}>\n {isCMTheme ? (\n <CMMultipleView multiple={multiple} choice={{...choice, i}} onChange={handleChange} />\n ) : (\n <TitledCheckbox\n onToggle={handleChange}\n choice={{...choice, i}}\n background={defaultColor}\n />\n )}\n </li>\n );\n }, options);\n\n const selection = pipe(filter({selected: true}), map('name'), join(', '))(options);\n\n const _title = title && `${title}${required ? ' *' : ''}`;\n\n const isActive = isOpened === true;\n\n const titleView = title ? (\n <span\n className={classnames(\n style.title,\n isCMTheme && selection && style.titleWithSelection,\n isCMTheme && isEmpty(selection) && style.noValue,\n isActive && style.active\n )}\n >\n {_title}\n {isCMTheme ? (\n <div className={style.infoIconWrapper}>\n <InfoIcon className={style.infoIcon} />\n <div className={style.descriptionLabel}>{description}</div>\n </div>\n ) : null}\n </span>\n ) : null;\n\n const hintView =\n isCMTheme && !isActive ? (\n <div\n className={style.hint}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: error || hint}}\n />\n ) : null;\n\n const mainClass = theme ? themeStyle[theme] : style.default;\n const showPlaceholder = isCMTheme && isActive;\n const behaviourClassName = getClassState(\n style.default,\n style.modified,\n style.error,\n modified,\n error\n );\n\n const errorIconView = error ? <ErrorIcon onClick={onError} className={style.errorIcon} /> : null;\n\n return (\n <div\n className={classnames(mainClass, behaviourClassName, disabled && style.disabled)}\n ref={nodeRef}\n >\n <label>\n {!isCMTheme && titleView}\n <div className={style.select} title={selection || placeholder} onClick={handleOnClick}>\n {isCMTheme && titleView}\n <span\n className={classnames(\n style.selection,\n isCMTheme && isEmpty(selection) && style.noselection\n )}\n >\n {selection || !isCMTheme || (showPlaceholder && placeholder) || null}\n </span>\n {isCMTheme ? (\n <div className={style.iconsWrapper}>\n <div className={style.flex}>{errorIconView}</div>\n <div className={classnames(style.flex, isActive && style.clicked)}>\n <ArrowDown\n color={black}\n className={classnames(style.arrow, {[style.down]: isActive})}\n />\n </div>\n </div>\n ) : (\n <ArrowDown\n color={black}\n className={classnames(style.arrow, {[style.down]: isActive})}\n />\n )}\n </div>\n <div className={classnames(style.choices, isActive && style.activeChoices)}>\n <ul className={style.list}>{lines}</ul>\n </div>\n </label>\n {!isCMTheme ? <div className={style.description}>{description}</div> : null}\n {hintView}\n </div>\n );\n};\n\nSelectMultiple.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nCMMultipleView.propTypes = {\n multiple: PropTypes.bool,\n choice: TitledCheckbox.propTypes.choice,\n onChange: PropTypes.func\n};\n\nSelectMultiple.propTypes = {\n title: PropTypes.string,\n placeholder: PropTypes.string,\n description: PropTypes.string,\n hint: PropTypes.string,\n options: PropTypes.arrayOf(TitledCheckbox.propTypes.choice),\n onChange: PropTypes.func,\n onError: PropTypes.func,\n multiple: PropTypes.bool,\n modified: PropTypes.bool,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n error: PropTypes.string,\n theme: PropTypes.oneOf(keys(themeStyle))\n};\n\nexport default SelectMultiple;\n"],"file":"index.js"}