@hitachivantara/uikit-react-core 4.1.1 → 4.2.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 (76) hide show
  1. package/dist/BreadCrumb/BreadCrumb.js +32 -20
  2. package/dist/BreadCrumb/BreadCrumb.js.map +1 -1
  3. package/dist/BreadCrumb/styles.js +3 -0
  4. package/dist/BreadCrumb/styles.js.map +1 -1
  5. package/dist/BreadCrumb/utils.js +3 -8
  6. package/dist/BreadCrumb/utils.js.map +1 -1
  7. package/dist/Dialog/Dialog.d.ts +1 -1
  8. package/dist/Dialog/Dialog.js +11 -13
  9. package/dist/Dialog/Dialog.js.map +1 -1
  10. package/dist/Dialog/DialogActions/DialogActions.js.map +1 -1
  11. package/dist/Dialog/DialogActions/styles.js +2 -9
  12. package/dist/Dialog/DialogActions/styles.js.map +1 -1
  13. package/dist/Dialog/DialogContent/DialogContent.js +19 -5
  14. package/dist/Dialog/DialogContent/DialogContent.js.map +1 -1
  15. package/dist/Dialog/DialogContent/styles.js +2 -3
  16. package/dist/Dialog/DialogContent/styles.js.map +1 -1
  17. package/dist/Dialog/DialogTitle/DialogTitle.js +1 -6
  18. package/dist/Dialog/DialogTitle/DialogTitle.js.map +1 -1
  19. package/dist/Dialog/DialogTitle/styles.js +1 -4
  20. package/dist/Dialog/DialogTitle/styles.js.map +1 -1
  21. package/dist/Dialog/styles.js +10 -6
  22. package/dist/Dialog/styles.js.map +1 -1
  23. package/dist/Dropdown/Dropdown.d.ts +4 -0
  24. package/dist/Dropdown/List/List.js +9 -4
  25. package/dist/Dropdown/List/List.js.map +1 -1
  26. package/dist/legacy/BreadCrumb/BreadCrumb.js +31 -19
  27. package/dist/legacy/BreadCrumb/BreadCrumb.js.map +1 -1
  28. package/dist/legacy/BreadCrumb/styles.js +3 -0
  29. package/dist/legacy/BreadCrumb/styles.js.map +1 -1
  30. package/dist/legacy/BreadCrumb/utils.js +2 -6
  31. package/dist/legacy/BreadCrumb/utils.js.map +1 -1
  32. package/dist/legacy/Dialog/Dialog.d.ts +1 -1
  33. package/dist/legacy/Dialog/Dialog.js +16 -18
  34. package/dist/legacy/Dialog/Dialog.js.map +1 -1
  35. package/dist/legacy/Dialog/DialogActions/DialogActions.js.map +1 -1
  36. package/dist/legacy/Dialog/DialogActions/styles.js +2 -9
  37. package/dist/legacy/Dialog/DialogActions/styles.js.map +1 -1
  38. package/dist/legacy/Dialog/DialogContent/DialogContent.js +19 -5
  39. package/dist/legacy/Dialog/DialogContent/DialogContent.js.map +1 -1
  40. package/dist/legacy/Dialog/DialogContent/styles.js +2 -3
  41. package/dist/legacy/Dialog/DialogContent/styles.js.map +1 -1
  42. package/dist/legacy/Dialog/DialogTitle/DialogTitle.js +1 -6
  43. package/dist/legacy/Dialog/DialogTitle/DialogTitle.js.map +1 -1
  44. package/dist/legacy/Dialog/DialogTitle/styles.js +1 -4
  45. package/dist/legacy/Dialog/DialogTitle/styles.js.map +1 -1
  46. package/dist/legacy/Dialog/styles.js +10 -6
  47. package/dist/legacy/Dialog/styles.js.map +1 -1
  48. package/dist/legacy/Dropdown/Dropdown.d.ts +4 -0
  49. package/dist/legacy/Dropdown/List/List.js +9 -4
  50. package/dist/legacy/Dropdown/List/List.js.map +1 -1
  51. package/dist/modern/BreadCrumb/BreadCrumb.js +12 -7
  52. package/dist/modern/BreadCrumb/BreadCrumb.js.map +1 -1
  53. package/dist/modern/BreadCrumb/styles.js +3 -0
  54. package/dist/modern/BreadCrumb/styles.js.map +1 -1
  55. package/dist/modern/BreadCrumb/utils.js +2 -2
  56. package/dist/modern/BreadCrumb/utils.js.map +1 -1
  57. package/dist/modern/Dialog/Dialog.d.ts +1 -1
  58. package/dist/modern/Dialog/Dialog.js +9 -7
  59. package/dist/modern/Dialog/Dialog.js.map +1 -1
  60. package/dist/modern/Dialog/DialogActions/DialogActions.js.map +1 -1
  61. package/dist/modern/Dialog/DialogActions/styles.js +2 -9
  62. package/dist/modern/Dialog/DialogActions/styles.js.map +1 -1
  63. package/dist/modern/Dialog/DialogContent/DialogContent.js +18 -10
  64. package/dist/modern/Dialog/DialogContent/DialogContent.js.map +1 -1
  65. package/dist/modern/Dialog/DialogContent/styles.js +2 -3
  66. package/dist/modern/Dialog/DialogContent/styles.js.map +1 -1
  67. package/dist/modern/Dialog/DialogTitle/DialogTitle.js +1 -8
  68. package/dist/modern/Dialog/DialogTitle/DialogTitle.js.map +1 -1
  69. package/dist/modern/Dialog/DialogTitle/styles.js +1 -4
  70. package/dist/modern/Dialog/DialogTitle/styles.js.map +1 -1
  71. package/dist/modern/Dialog/styles.js +10 -6
  72. package/dist/modern/Dialog/styles.js.map +1 -1
  73. package/dist/modern/Dropdown/Dropdown.d.ts +4 -0
  74. package/dist/modern/Dropdown/List/List.js +9 -4
  75. package/dist/modern/Dropdown/List/List.js.map +1 -1
  76. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["styles","theme","root","padding","hvSpacing","margin","flex","messageContainer","display","alignItems","textWithIcon","marginLeft","marginRight","icon","hv","spacing","md","width","height"],"sources":["../../../src/Dialog/DialogTitle/styles.js"],"sourcesContent":["const styles = (theme) => ({\n root: {\n padding: theme.hvSpacing(\"sm\"),\n margin: 0,\n \"&:not(.fullscreen)\": {\n flex: 1,\n },\n },\n messageContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n textWithIcon: {\n marginLeft: theme.hvSpacing(\"xs\"),\n // 32px is the icon width\n marginRight: `calc(32px + ${theme.hvSpacing(\"xs\")})`,\n },\n icon: {\n marginRight: theme.hv.spacing.md,\n width: 48,\n height: 48,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;AAAA,IAAMA,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAK;EAAA,OAAM;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAEF,KAAK,CAACG,SAAS,CAAC,IAAI,CAAC;MAC9BC,MAAM,EAAE,CAAC;MACT,oBAAoB,EAAE;QACpBC,IAAI,EAAE;MACR;IACF,CAAC;IACDC,gBAAgB,EAAE;MAChBC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE;IACd,CAAC;IACDC,YAAY,EAAE;MACZC,UAAU,EAAEV,KAAK,CAACG,SAAS,CAAC,IAAI,CAAC;MACjC;MACAQ,WAAW,wBAAiBX,KAAK,CAACG,SAAS,CAAC,IAAI,CAAC;IACnD,CAAC;IACDS,IAAI,EAAE;MACJD,WAAW,EAAEX,KAAK,CAACa,EAAE,CAACC,OAAO,CAACC,EAAE;MAChCC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE;IACV;EACF,CAAC;AAAA,CAAC;AAAC,eAEYlB,MAAM;AAAA"}
1
+ {"version":3,"file":"styles.js","names":["styles","theme","root","padding","hvSpacing","margin","messageContainer","display","alignItems","textWithIcon","marginLeft","marginRight","icon","hv","spacing","md","width","height"],"sources":["../../../src/Dialog/DialogTitle/styles.js"],"sourcesContent":["const styles = (theme) => ({\n root: {\n padding: theme.hvSpacing(\"sm\"),\n margin: 0,\n },\n messageContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n textWithIcon: {\n marginLeft: theme.hvSpacing(\"xs\"),\n // 32px is the icon width\n marginRight: `calc(32px + ${theme.hvSpacing(\"xs\")})`,\n },\n icon: {\n marginRight: theme.hv.spacing.md,\n width: 48,\n height: 48,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;AAAA,IAAMA,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAK;EAAA,OAAM;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAEF,KAAK,CAACG,SAAS,CAAC,IAAI,CAAC;MAC9BC,MAAM,EAAE;IACV,CAAC;IACDC,gBAAgB,EAAE;MAChBC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE;IACd,CAAC;IACDC,YAAY,EAAE;MACZC,UAAU,EAAET,KAAK,CAACG,SAAS,CAAC,IAAI,CAAC;MACjC;MACAO,WAAW,wBAAiBV,KAAK,CAACG,SAAS,CAAC,IAAI,CAAC;IACnD,CAAC;IACDQ,IAAI,EAAE;MACJD,WAAW,EAAEV,KAAK,CAACY,EAAE,CAACC,OAAO,CAACC,EAAE;MAChCC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE;IACV;EACF,CAAC;AAAA,CAAC;AAAC,eAEYjB,MAAM;AAAA"}
@@ -12,16 +12,20 @@ var styles = function styles(theme) {
12
12
  background: (0, _hexToRgbA.default)(theme.hv.palette.atmosphere.atmo4, 0.8)
13
13
  },
14
14
  paper: {
15
- background: "".concat(theme.hv.palette.atmosphere.atmo1),
16
- padding: "0px",
15
+ background: theme.hv.palette.atmosphere.atmo1,
16
+ padding: 0,
17
17
  overflow: "auto",
18
18
  boxShadow: theme.hv.shadows[1],
19
- "&:not(.fullscreen)": {
20
- maxHeight: "calc(100% - 200px)",
21
- display: "flex",
22
- flexDirection: "column"
19
+ maxHeight: "calc(100% - 200px)",
20
+ "@media (max-height:720px)": {
21
+ maxHeight: "calc(100% - 40px)" // "sm" margin
22
+ },
23
+
24
+ "&$fullscreen": {
25
+ maxHeight: "none"
23
26
  }
24
27
  },
28
+ fullscreen: {},
25
29
  closeButton: {
26
30
  padding: 0,
27
31
  minWidth: "inherit",
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["styles","theme","background","fade","hv","palette","atmosphere","atmo4","paper","atmo1","padding","overflow","boxShadow","shadows","maxHeight","display","flexDirection","closeButton","minWidth","position","top","hvSpacing","right"],"sources":["../../src/Dialog/styles.js"],"sourcesContent":["import fade from \"../utils/hexToRgbA\";\n\nconst styles = (theme) => ({\n background: {\n background: fade(theme.hv.palette.atmosphere.atmo4, 0.8),\n },\n paper: {\n background: `${theme.hv.palette.atmosphere.atmo1}`,\n padding: \"0px\",\n overflow: \"auto\",\n boxShadow: theme.hv.shadows[1],\n \"&:not(.fullscreen)\": {\n maxHeight: \"calc(100% - 200px)\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n },\n closeButton: {\n padding: 0,\n minWidth: \"inherit\",\n position: \"absolute\",\n top: theme.hvSpacing(\"sm\"),\n right: theme.hvSpacing(\"sm\"),\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;AAAA;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAK;EAAA,OAAM;IACzBC,UAAU,EAAE;MACVA,UAAU,EAAE,IAAAC,kBAAI,EAACF,KAAK,CAACG,EAAE,CAACC,OAAO,CAACC,UAAU,CAACC,KAAK,EAAE,GAAG;IACzD,CAAC;IACDC,KAAK,EAAE;MACLN,UAAU,YAAKD,KAAK,CAACG,EAAE,CAACC,OAAO,CAACC,UAAU,CAACG,KAAK,CAAE;MAClDC,OAAO,EAAE,KAAK;MACdC,QAAQ,EAAE,MAAM;MAChBC,SAAS,EAAEX,KAAK,CAACG,EAAE,CAACS,OAAO,CAAC,CAAC,CAAC;MAC9B,oBAAoB,EAAE;QACpBC,SAAS,EAAE,oBAAoB;QAC/BC,OAAO,EAAE,MAAM;QACfC,aAAa,EAAE;MACjB;IACF,CAAC;IACDC,WAAW,EAAE;MACXP,OAAO,EAAE,CAAC;MACVQ,QAAQ,EAAE,SAAS;MACnBC,QAAQ,EAAE,UAAU;MACpBC,GAAG,EAAEnB,KAAK,CAACoB,SAAS,CAAC,IAAI,CAAC;MAC1BC,KAAK,EAAErB,KAAK,CAACoB,SAAS,CAAC,IAAI;IAC7B;EACF,CAAC;AAAA,CAAC;AAAC,eAEYrB,MAAM;AAAA"}
1
+ {"version":3,"file":"styles.js","names":["styles","theme","background","fade","hv","palette","atmosphere","atmo4","paper","atmo1","padding","overflow","boxShadow","shadows","maxHeight","fullscreen","closeButton","minWidth","position","top","hvSpacing","right"],"sources":["../../src/Dialog/styles.js"],"sourcesContent":["import fade from \"../utils/hexToRgbA\";\n\nconst styles = (theme) => ({\n background: {\n background: fade(theme.hv.palette.atmosphere.atmo4, 0.8),\n },\n paper: {\n background: theme.hv.palette.atmosphere.atmo1,\n padding: 0,\n overflow: \"auto\",\n boxShadow: theme.hv.shadows[1],\n maxHeight: \"calc(100% - 200px)\",\n \"@media (max-height:720px)\": {\n maxHeight: \"calc(100% - 40px)\", // \"sm\" margin\n },\n \"&$fullscreen\": {\n maxHeight: \"none\",\n },\n },\n fullscreen: {},\n closeButton: {\n padding: 0,\n minWidth: \"inherit\",\n position: \"absolute\",\n top: theme.hvSpacing(\"sm\"),\n right: theme.hvSpacing(\"sm\"),\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;AAAA;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAK;EAAA,OAAM;IACzBC,UAAU,EAAE;MACVA,UAAU,EAAE,IAAAC,kBAAI,EAACF,KAAK,CAACG,EAAE,CAACC,OAAO,CAACC,UAAU,CAACC,KAAK,EAAE,GAAG;IACzD,CAAC;IACDC,KAAK,EAAE;MACLN,UAAU,EAAED,KAAK,CAACG,EAAE,CAACC,OAAO,CAACC,UAAU,CAACG,KAAK;MAC7CC,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,MAAM;MAChBC,SAAS,EAAEX,KAAK,CAACG,EAAE,CAACS,OAAO,CAAC,CAAC,CAAC;MAC9BC,SAAS,EAAE,oBAAoB;MAC/B,2BAA2B,EAAE;QAC3BA,SAAS,EAAE,mBAAmB,CAAE;MAClC,CAAC;;MACD,cAAc,EAAE;QACdA,SAAS,EAAE;MACb;IACF,CAAC;IACDC,UAAU,EAAE,CAAC,CAAC;IACdC,WAAW,EAAE;MACXN,OAAO,EAAE,CAAC;MACVO,QAAQ,EAAE,SAAS;MACnBC,QAAQ,EAAE,UAAU;MACpBC,GAAG,EAAElB,KAAK,CAACmB,SAAS,CAAC,IAAI,CAAC;MAC1BC,KAAK,EAAEpB,KAAK,CAACmB,SAAS,CAAC,IAAI;IAC7B;EACF,CAAC;AAAA,CAAC;AAAC,eAEYpB,MAAM;AAAA"}
@@ -143,6 +143,10 @@ export interface HvDropdownProps
143
143
  * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used
144
144
  */
145
145
  height?: number;
146
+ /**
147
+ * Experimental. Max height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class.
148
+ */
149
+ maxHeight?: number;
146
150
  /**
147
151
  * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.
148
152
  */
@@ -34,7 +34,7 @@ var _utils2 = require("../utils");
34
34
  var _styles2 = _interopRequireDefault(require("./styles"));
35
35
  var _BaseDropdownContext = _interopRequireDefault(require("../../BaseDropdown/BaseDropdownContext"));
36
36
  var _jsxRuntime = require("react/jsx-runtime");
37
- var _excluded = ["id", "classes", "values", "multiSelect", "showSearch", "onChange", "onCancel", "labels", "notifyChangesOnFirstRender", "hasTooltips", "singleSelectionToggle", "height", "virtualized"];
37
+ var _excluded = ["id", "classes", "values", "multiSelect", "showSearch", "onChange", "onCancel", "labels", "notifyChangesOnFirstRender", "hasTooltips", "singleSelectionToggle", "height", "maxHeight", "virtualized"];
38
38
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
39
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
40
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -84,6 +84,7 @@ var List = function List(_ref) {
84
84
  hasTooltips = _ref$hasTooltips === void 0 ? false : _ref$hasTooltips,
85
85
  singleSelectionToggle = _ref.singleSelectionToggle,
86
86
  dropdownHeight = _ref.height,
87
+ maxHeight = _ref.maxHeight,
87
88
  _ref$virtualized = _ref.virtualized,
88
89
  virtualized = _ref$virtualized === void 0 ? false : _ref$virtualized,
89
90
  others = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -289,7 +290,7 @@ var List = function List(_ref) {
289
290
  height: dropdownHeight
290
291
  }), {}, {
291
292
  maxWidth: width,
292
- maxHeight: "calc(".concat(height, "px - 32px - ").concat(theme.spacing("xs"), " - ").concat(theme.spacing("sm"), ")"),
293
+ maxHeight: maxHeight !== null && maxHeight !== void 0 ? maxHeight : "calc(".concat(height, "px - 32px - ").concat(theme.spacing("xs"), " - ").concat(theme.spacing("sm"), ")"),
293
294
  overflow: "auto",
294
295
  padding: 5
295
296
  }),
@@ -300,7 +301,7 @@ var List = function List(_ref) {
300
301
  padding: 0
301
302
  }
302
303
  });
303
- }, [width, height, dropdownHeight, theme])();
304
+ }, [width, height, maxHeight, dropdownHeight, theme])();
304
305
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
305
306
  className: classes.rootList,
306
307
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -310,7 +311,7 @@ var List = function List(_ref) {
310
311
  children: [showSearch && renderSearch(), showList && multiSelect && renderSelectAll(), showList && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.HvList, _objectSpread({
311
312
  id: (0, _utils.setId)(id, "list"),
312
313
  classes: {
313
- root: (0, _clsx.default)(classes.dropdownListContainer, dropdownHeight && maxSizeClasses.root, virtualized && maxSizeClasses.virtualized)
314
+ root: (0, _clsx.default)(classes.dropdownListContainer, (dropdownHeight || maxHeight) && maxSizeClasses.root, virtualized && maxSizeClasses.virtualized)
314
315
  },
315
316
  values: list,
316
317
  multiSelect: multiSelect,
@@ -378,6 +379,10 @@ process.env.NODE_ENV !== "production" ? List.propTypes = {
378
379
  * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used
379
380
  */
380
381
  height: _propTypes.default.number,
382
+ /**
383
+ * Experimental. Max height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class.
384
+ */
385
+ maxHeight: _propTypes.default.number,
381
386
  /**
382
387
  * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.
383
388
  */
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","names":["clone","values","map","value","cleanHidden","lst","item","isHidden","valuesExist","isNil","length","List","id","classes","multiSelect","showSearch","onChange","onCancel","labels","notifyChangesOnFirstRender","hasTooltips","singleSelectionToggle","dropdownHeight","height","virtualized","others","useState","searchStr","setSearchStr","list","setList","allSelected","setAllSelected","anySelected","setAnySelected","useContext","BaseDropdownContext","width","theme","useTheme","newLabels","selectAll","selectionConjunction","multiSelectionConjunction","updateSelectAll","listValues","nbrSelected","getSelected","hasSelection","allSelect","useEffect","handleSearch","str","results","filter","searchValue","label","stringValue","String","toLowerCase","indexOf","newList","elem","isResult","find","result","renderSearch","searchContainer","setId","searchPlaceholder","event","handleSelectAll","selected","renderSelectAll","defaultLabel","selectAllContainer","container","selection","onSelection","renderActions","applyLabel","cancelLabel","showList","maxSizeClasses","useMemo","makeStyles","root","maxWidth","maxHeight","spacing","overflow","padding","rootList","listBorderDown","listContainer","clsx","dropdownListContainer","propTypes","PropTypes","string","isRequired","instanceOf","Object","Array","bool","func","number","withStyles","styles","name"],"sources":["../../../src/Dropdown/List/List.js"],"sourcesContent":["import React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport isNil from \"lodash/isNil\";\nimport { makeStyles, withStyles, useTheme } from \"@mui/styles\";\n\nimport { setId } from \"../../utils\";\nimport { HvActionBar, HvButton, HvCheckBox, HvList, HvInput, HvTypography } from \"../..\";\nimport { getSelected } from \"../utils\";\nimport styles from \"./styles\";\nimport BaseDropdownContext from \"../../BaseDropdown/BaseDropdownContext\";\n\n/**\n * The values property was being deeply cloned. That created a significant performance\n * hit when the values contained complex properties' values, like React Nodes.\n *\n * For minimizing the impact of removing the clone, a shallow clone of the array and its\n * objects is performed instead. That should have the same effect in the majority of the\n * cases, where the properties' values are primitive.\n */\nconst clone = (values) => values.map((value) => ({ ...value }));\n\n/**\n * Set all hidden's to false.\n */\nconst cleanHidden = (lst) => lst.map((item) => ({ ...item, isHidden: false }));\n\nconst valuesExist = (values) => !isNil(values) && values?.length > 0;\n\nconst List = ({\n id,\n classes,\n values = [],\n multiSelect = false,\n showSearch = false,\n onChange,\n onCancel,\n labels,\n notifyChangesOnFirstRender = false,\n hasTooltips = false,\n singleSelectionToggle,\n height: dropdownHeight,\n virtualized = false,\n ...others\n}) => {\n const [searchStr, setSearchStr] = useState(\"\");\n const [list, setList] = useState(clone(values));\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n const { width, height } = useContext(BaseDropdownContext);\n const theme = useTheme();\n\n const newLabels = {\n selectAll: labels.selectAll,\n selectionConjunction: labels.multiSelectionConjunction,\n };\n\n /**\n * Update states associated with select all.\n */\n const updateSelectAll = (listValues) => {\n if (!listValues) return;\n const nbrSelected = getSelected(listValues).length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === listValues.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n };\n\n /**\n * After the first render, call onChange if notifyChangesOnFirstRender.\n */\n useEffect(() => {\n if (!valuesExist(values)) return;\n setList(clone(values));\n updateSelectAll(values);\n if (notifyChangesOnFirstRender) {\n onChange?.(values, false, false, true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values]);\n\n /**\n * Sets the filtered values to the state.\n *\n * @param {String} str - The value that is being looked.\n */\n const handleSearch = (str) => {\n const results = list\n ? list.filter(({ searchValue, label, value }) => {\n let stringValue = \"\";\n if (typeof searchValue === \"string\" || searchValue instanceof String) {\n stringValue = searchValue.toLowerCase();\n } else if (typeof label === \"string\" || label instanceof String) {\n stringValue = label.toLowerCase();\n } else if (typeof value === \"string\" || value instanceof String) {\n stringValue = value.toLowerCase();\n }\n\n return stringValue.indexOf(str.toLowerCase()) >= 0;\n })\n : null;\n\n if (!isNil(results)) {\n const newList = list.map((elem) => {\n const isResult = results.find((result) => result.label === elem.label);\n return { ...elem, isHidden: !isResult };\n });\n\n setList(newList);\n setSearchStr(str);\n }\n return str;\n };\n\n /**\n * Create search element.\n *\n * @returns {*}\n */\n const renderSearch = () => (\n <div className={classes.searchContainer}>\n <HvInput\n id={setId(id, \"search\")}\n type=\"search\"\n value={searchStr}\n placeholder={labels.searchPlaceholder}\n onChange={(event, str) => handleSearch(str)}\n />\n </div>\n );\n\n /**\n * Select all the values inside the dropdown.\n *\n */\n const handleSelectAll = () => {\n const newList = list.map((elem) => ({ ...elem, selected: !anySelected }));\n setList(newList);\n updateSelectAll(newList);\n };\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const renderSelectAll = () => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = getSelected(list).length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${list.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n };\n\n /**\n * When selecting the state list is updated with the corresponding selection.\n *\n * @param listValues - elements selected.\n */\n const onSelection = (listValues) => {\n if (!multiSelect) {\n onChange(cleanHidden(listValues), true, true, true);\n } else {\n updateSelectAll(listValues);\n setList(clone(listValues));\n }\n };\n\n /**\n * Render action buttons.\n */\n const renderActions = () => {\n const { applyLabel, cancelLabel } = labels;\n return (\n <HvActionBar id={setId(id, \"actions\")}>\n <HvButton\n id={setId(id, \"actions-apply\")}\n onClick={() => onChange(cleanHidden(list), true, true, true)}\n category=\"ghost\"\n >\n {applyLabel}\n </HvButton>\n <HvButton id={setId(id, \"actions-cancel\")} onClick={onCancel} category=\"ghost\">\n {cancelLabel}\n </HvButton>\n </HvActionBar>\n );\n };\n\n const showList = valuesExist(values);\n\n const maxSizeClasses = useMemo(\n () =>\n makeStyles({\n root: {\n ...(dropdownHeight && { height: dropdownHeight }),\n maxWidth: width,\n maxHeight: `calc(${height}px - 32px - ${theme.spacing(\"xs\")} - ${theme.spacing(\"sm\")})`,\n overflow: \"auto\",\n padding: 5,\n },\n virtualized: {\n maxWidth: \"inherit\",\n maxHeight: \"inherit\",\n overflow: \"inherit\",\n padding: 0,\n },\n }),\n [width, height, dropdownHeight, theme]\n )();\n\n return (\n <div className={classes.rootList}>\n <div className={classes.listBorderDown} />\n <div className={classes.listContainer}>\n {showSearch && renderSearch()}\n {showList && multiSelect && renderSelectAll()}\n {showList && (\n <HvList\n id={setId(id, \"list\")}\n classes={{\n root: clsx(\n classes.dropdownListContainer,\n dropdownHeight && maxSizeClasses.root,\n virtualized && maxSizeClasses.virtualized\n ),\n }}\n values={list}\n multiSelect={multiSelect}\n useSelector={multiSelect}\n showSelectAll={false}\n onChange={onSelection}\n labels={newLabels}\n hasTooltips={hasTooltips}\n selectable\n condensed\n singleSelectionToggle={singleSelectionToggle}\n height={dropdownHeight}\n virtualized={virtualized}\n {...others}\n />\n )}\n </div>\n {showList && multiSelect ? renderActions() : null}\n </div>\n );\n};\n\nList.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string.isRequired,\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes: PropTypes.instanceOf(Object).isRequired,\n /**\n * The list to be rendered.\n */\n values: PropTypes.instanceOf(Array),\n /**\n * If true renders a multi select list.\n */\n multiSelect: PropTypes.bool,\n /**\n * If true renders the search component.\n */\n showSearch: PropTypes.bool,\n /**\n * A function to be executed whenever a item is selected in the list\n * or the Apply button is activated (when `multiSelect` is `true`).\n */\n onChange: PropTypes.func,\n /**\n * A function to be executed whenever the Cancel button is activated.\n */\n onCancel: PropTypes.func,\n /**\n * An object containing all the labels for the dropdown.\n */\n labels: PropTypes.instanceOf(Object).isRequired,\n /**\n * If 'true' the dropdown will notify on the first render.\n */\n notifyChangesOnFirstRender: PropTypes.bool,\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips: PropTypes.bool,\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle: PropTypes.bool.isRequired,\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height: PropTypes.number,\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvDropdownList\" })(List);\n"],"mappings":"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"}
1
+ {"version":3,"file":"List.js","names":["clone","values","map","value","cleanHidden","lst","item","isHidden","valuesExist","isNil","length","List","id","classes","multiSelect","showSearch","onChange","onCancel","labels","notifyChangesOnFirstRender","hasTooltips","singleSelectionToggle","dropdownHeight","height","maxHeight","virtualized","others","useState","searchStr","setSearchStr","list","setList","allSelected","setAllSelected","anySelected","setAnySelected","useContext","BaseDropdownContext","width","theme","useTheme","newLabels","selectAll","selectionConjunction","multiSelectionConjunction","updateSelectAll","listValues","nbrSelected","getSelected","hasSelection","allSelect","useEffect","handleSearch","str","results","filter","searchValue","label","stringValue","String","toLowerCase","indexOf","newList","elem","isResult","find","result","renderSearch","searchContainer","setId","searchPlaceholder","event","handleSelectAll","selected","renderSelectAll","defaultLabel","selectAllContainer","container","selection","onSelection","renderActions","applyLabel","cancelLabel","showList","maxSizeClasses","useMemo","makeStyles","root","maxWidth","spacing","overflow","padding","rootList","listBorderDown","listContainer","clsx","dropdownListContainer","propTypes","PropTypes","string","isRequired","instanceOf","Object","Array","bool","func","number","withStyles","styles","name"],"sources":["../../../src/Dropdown/List/List.js"],"sourcesContent":["import React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport isNil from \"lodash/isNil\";\nimport { makeStyles, withStyles, useTheme } from \"@mui/styles\";\n\nimport { setId } from \"../../utils\";\nimport { HvActionBar, HvButton, HvCheckBox, HvList, HvInput, HvTypography } from \"../..\";\nimport { getSelected } from \"../utils\";\nimport styles from \"./styles\";\nimport BaseDropdownContext from \"../../BaseDropdown/BaseDropdownContext\";\n\n/**\n * The values property was being deeply cloned. That created a significant performance\n * hit when the values contained complex properties' values, like React Nodes.\n *\n * For minimizing the impact of removing the clone, a shallow clone of the array and its\n * objects is performed instead. That should have the same effect in the majority of the\n * cases, where the properties' values are primitive.\n */\nconst clone = (values) => values.map((value) => ({ ...value }));\n\n/**\n * Set all hidden's to false.\n */\nconst cleanHidden = (lst) => lst.map((item) => ({ ...item, isHidden: false }));\n\nconst valuesExist = (values) => !isNil(values) && values?.length > 0;\n\nconst List = ({\n id,\n classes,\n values = [],\n multiSelect = false,\n showSearch = false,\n onChange,\n onCancel,\n labels,\n notifyChangesOnFirstRender = false,\n hasTooltips = false,\n singleSelectionToggle,\n height: dropdownHeight,\n maxHeight,\n virtualized = false,\n ...others\n}) => {\n const [searchStr, setSearchStr] = useState(\"\");\n const [list, setList] = useState(clone(values));\n const [allSelected, setAllSelected] = useState(false);\n const [anySelected, setAnySelected] = useState(false);\n const { width, height } = useContext(BaseDropdownContext);\n const theme = useTheme();\n\n const newLabels = {\n selectAll: labels.selectAll,\n selectionConjunction: labels.multiSelectionConjunction,\n };\n\n /**\n * Update states associated with select all.\n */\n const updateSelectAll = (listValues) => {\n if (!listValues) return;\n const nbrSelected = getSelected(listValues).length;\n const hasSelection = nbrSelected > 0;\n const allSelect = nbrSelected === listValues.length;\n\n setAnySelected(hasSelection);\n setAllSelected(hasSelection && allSelect);\n };\n\n /**\n * After the first render, call onChange if notifyChangesOnFirstRender.\n */\n useEffect(() => {\n if (!valuesExist(values)) return;\n setList(clone(values));\n updateSelectAll(values);\n if (notifyChangesOnFirstRender) {\n onChange?.(values, false, false, true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values]);\n\n /**\n * Sets the filtered values to the state.\n *\n * @param {String} str - The value that is being looked.\n */\n const handleSearch = (str) => {\n const results = list\n ? list.filter(({ searchValue, label, value }) => {\n let stringValue = \"\";\n if (typeof searchValue === \"string\" || searchValue instanceof String) {\n stringValue = searchValue.toLowerCase();\n } else if (typeof label === \"string\" || label instanceof String) {\n stringValue = label.toLowerCase();\n } else if (typeof value === \"string\" || value instanceof String) {\n stringValue = value.toLowerCase();\n }\n\n return stringValue.indexOf(str.toLowerCase()) >= 0;\n })\n : null;\n\n if (!isNil(results)) {\n const newList = list.map((elem) => {\n const isResult = results.find((result) => result.label === elem.label);\n return { ...elem, isHidden: !isResult };\n });\n\n setList(newList);\n setSearchStr(str);\n }\n return str;\n };\n\n /**\n * Create search element.\n *\n * @returns {*}\n */\n const renderSearch = () => (\n <div className={classes.searchContainer}>\n <HvInput\n id={setId(id, \"search\")}\n type=\"search\"\n value={searchStr}\n placeholder={labels.searchPlaceholder}\n onChange={(event, str) => handleSearch(str)}\n />\n </div>\n );\n\n /**\n * Select all the values inside the dropdown.\n *\n */\n const handleSelectAll = () => {\n const newList = list.map((elem) => ({ ...elem, selected: !anySelected }));\n setList(newList);\n updateSelectAll(newList);\n };\n\n /**\n * Create selecteAll component.\n *\n * @returns {*}\n */\n const renderSelectAll = () => {\n const { selectAll, multiSelectionConjunction } = labels;\n const nbrSelected = getSelected(list).length;\n\n const defaultLabel = (\n <HvTypography component=\"span\">\n {nbrSelected > 0 ? (\n <>\n <b>{nbrSelected}</b>\n {` ${multiSelectionConjunction} ${list.length}`}\n </>\n ) : (\n <>\n <b>{selectAll}</b>\n {` (${list.length})`}\n </>\n )}\n </HvTypography>\n );\n\n return (\n <div className={classes.selectAllContainer}>\n <HvCheckBox\n id={setId(id, \"select-all\")}\n label={defaultLabel}\n onChange={() => handleSelectAll()}\n classes={{ container: classes.selection }}\n className={classes.selectAll}\n indeterminate={anySelected && !allSelected}\n checked={allSelected}\n />\n </div>\n );\n };\n\n /**\n * When selecting the state list is updated with the corresponding selection.\n *\n * @param listValues - elements selected.\n */\n const onSelection = (listValues) => {\n if (!multiSelect) {\n onChange(cleanHidden(listValues), true, true, true);\n } else {\n updateSelectAll(listValues);\n setList(clone(listValues));\n }\n };\n\n /**\n * Render action buttons.\n */\n const renderActions = () => {\n const { applyLabel, cancelLabel } = labels;\n return (\n <HvActionBar id={setId(id, \"actions\")}>\n <HvButton\n id={setId(id, \"actions-apply\")}\n onClick={() => onChange(cleanHidden(list), true, true, true)}\n category=\"ghost\"\n >\n {applyLabel}\n </HvButton>\n <HvButton id={setId(id, \"actions-cancel\")} onClick={onCancel} category=\"ghost\">\n {cancelLabel}\n </HvButton>\n </HvActionBar>\n );\n };\n\n const showList = valuesExist(values);\n\n const maxSizeClasses = useMemo(\n () =>\n makeStyles({\n root: {\n ...(dropdownHeight && { height: dropdownHeight }),\n maxWidth: width,\n maxHeight:\n maxHeight ??\n `calc(${height}px - 32px - ${theme.spacing(\"xs\")} - ${theme.spacing(\"sm\")})`,\n overflow: \"auto\",\n padding: 5,\n },\n virtualized: {\n maxWidth: \"inherit\",\n maxHeight: \"inherit\",\n overflow: \"inherit\",\n padding: 0,\n },\n }),\n [width, height, maxHeight, dropdownHeight, theme]\n )();\n\n return (\n <div className={classes.rootList}>\n <div className={classes.listBorderDown} />\n <div className={classes.listContainer}>\n {showSearch && renderSearch()}\n {showList && multiSelect && renderSelectAll()}\n {showList && (\n <HvList\n id={setId(id, \"list\")}\n classes={{\n root: clsx(\n classes.dropdownListContainer,\n (dropdownHeight || maxHeight) && maxSizeClasses.root,\n virtualized && maxSizeClasses.virtualized\n ),\n }}\n values={list}\n multiSelect={multiSelect}\n useSelector={multiSelect}\n showSelectAll={false}\n onChange={onSelection}\n labels={newLabels}\n hasTooltips={hasTooltips}\n selectable\n condensed\n singleSelectionToggle={singleSelectionToggle}\n height={dropdownHeight}\n virtualized={virtualized}\n {...others}\n />\n )}\n </div>\n {showList && multiSelect ? renderActions() : null}\n </div>\n );\n};\n\nList.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string.isRequired,\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes: PropTypes.instanceOf(Object).isRequired,\n /**\n * The list to be rendered.\n */\n values: PropTypes.instanceOf(Array),\n /**\n * If true renders a multi select list.\n */\n multiSelect: PropTypes.bool,\n /**\n * If true renders the search component.\n */\n showSearch: PropTypes.bool,\n /**\n * A function to be executed whenever a item is selected in the list\n * or the Apply button is activated (when `multiSelect` is `true`).\n */\n onChange: PropTypes.func,\n /**\n * A function to be executed whenever the Cancel button is activated.\n */\n onCancel: PropTypes.func,\n /**\n * An object containing all the labels for the dropdown.\n */\n labels: PropTypes.instanceOf(Object).isRequired,\n /**\n * If 'true' the dropdown will notify on the first render.\n */\n notifyChangesOnFirstRender: PropTypes.bool,\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips: PropTypes.bool,\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle: PropTypes.bool.isRequired,\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height: PropTypes.number,\n /**\n * Experimental. Max height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class.\n */\n maxHeight: PropTypes.number,\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvDropdownList\" })(List);\n"],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _toArray from "@babel/runtime/helpers/esm/toArray";
3
4
  var _excluded = ["classes", "className", "id", "listRoute", "maxVisible", "url", "onClick", "component", "dropDownMenuProps"];
4
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
- import "core-js/modules/es.string.link.js";
7
7
  import "core-js/modules/es.array.slice.js";
8
+ import "core-js/modules/es.array.join.js";
9
+ import "core-js/modules/es.string.link.js";
8
10
  import "core-js/modules/es.regexp.exec.js";
9
11
  import "core-js/modules/es.string.match.js";
10
12
  import "core-js/modules/es.string.replace.js";
@@ -12,7 +14,6 @@ import "core-js/modules/es.array.filter.js";
12
14
  import "core-js/modules/es.object.to-string.js";
13
15
  import "core-js/modules/es.array.map.js";
14
16
  import "core-js/modules/es.array.concat.js";
15
- import "core-js/modules/es.array.join.js";
16
17
  import "core-js/modules/es.object.keys.js";
17
18
  import "core-js/modules/es.symbol.js";
18
19
  import "core-js/modules/es.object.get-own-property-descriptor.js";
@@ -23,18 +24,24 @@ import PropTypes from "prop-types";
23
24
  import clsx from "clsx";
24
25
  import { withStyles } from "@mui/styles";
25
26
  import { DropRightXS } from "@hitachivantara/uikit-react-icons";
26
- import startCase from "lodash/startCase";
27
27
  import isNil from "lodash/isNil";
28
28
  import { HvLink, HvTypography, HvOverflowTooltip } from "..";
29
- import { pathWithSubMenu, removeExtension } from "./utils";
29
+ import pathWithSubMenu from "./utils";
30
30
  import styles from "./styles";
31
31
  import { jsx as _jsx } from "react/jsx-runtime";
32
32
  import { jsxs as _jsxs } from "react/jsx-runtime";
33
- var Page = function Page(_ref) {
34
- var Component = _ref.Component,
35
- onClick = _ref.onClick,
36
- elem = _ref.elem,
37
- classes = _ref.classes;
33
+ var capitalize = function capitalize(_ref) {
34
+ var _ref2 = _toArray(_ref),
35
+ first = _ref2[0],
36
+ rest = _ref2.slice(1);
37
+ var lowerRest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
38
+ return first.toUpperCase() + (lowerRest ? rest.join("").toLowerCase() : rest.join(""));
39
+ };
40
+ var Page = function Page(_ref3) {
41
+ var Component = _ref3.Component,
42
+ onClick = _ref3.onClick,
43
+ elem = _ref3.elem,
44
+ classes = _ref3.classes;
38
45
  return /*#__PURE__*/_jsx(HvLink, {
39
46
  route: elem.path,
40
47
  Component: Component,
@@ -47,9 +54,9 @@ var Page = function Page(_ref) {
47
54
  noWrap: true,
48
55
  component: "div",
49
56
  variant: "highlightText",
50
- className: classes.link,
57
+ className: clsx(classes.link, classes.label),
51
58
  children: /*#__PURE__*/_jsx(HvOverflowTooltip, {
52
- data: startCase(elem.label)
59
+ data: elem.label
53
60
  })
54
61
  })
55
62
  });
@@ -63,11 +70,11 @@ process.env.NODE_ENV !== "production" ? Page.propTypes = {
63
70
  }).isRequired,
64
71
  classes: PropTypes.instanceOf(Object).isRequired
65
72
  } : void 0;
66
- var PathElement = function PathElement(_ref2) {
67
- var classes = _ref2.classes,
68
- _ref2$last = _ref2.last,
69
- last = _ref2$last === void 0 ? false : _ref2$last,
70
- children = _ref2.children;
73
+ var PathElement = function PathElement(_ref4) {
74
+ var classes = _ref4.classes,
75
+ _ref4$last = _ref4.last,
76
+ last = _ref4$last === void 0 ? false : _ref4$last,
77
+ children = _ref4.children;
71
78
  return /*#__PURE__*/_jsxs("li", {
72
79
  className: classes.centerContainer,
73
80
  children: [children, !last && /*#__PURE__*/_jsx(DropRightXS, {
@@ -134,9 +141,10 @@ var BreadCrumb = function BreadCrumb(props) {
134
141
  classes: classes,
135
142
  last: isLast,
136
143
  children: /*#__PURE__*/React.isValidElement(elem) && elem || isLast && /*#__PURE__*/_jsx(HvTypography, {
137
- className: classes.currentPage,
144
+ noWrap: true,
145
+ className: clsx(classes.currentPage),
138
146
  variant: "normalText",
139
- children: startCase(removeExtension(elem.label))
147
+ children: capitalize(elem.label)
140
148
  }) || /*#__PURE__*/_jsx(Page, {
141
149
  elem: elem,
142
150
  classes: classes,
@@ -176,7 +184,11 @@ process.env.NODE_ENV !== "production" ? BreadCrumb.propTypes = {
176
184
  /**
177
185
  * Styles applied to the last element.
178
186
  */
179
- currentPage: PropTypes.string
187
+ currentPage: PropTypes.string,
188
+ /**
189
+ * Styles applied to the list elements.
190
+ */
191
+ label: PropTypes.string
180
192
  }).isRequired,
181
193
  /**
182
194
  * List of breadcrumb.
@@ -1 +1 @@
1
- {"version":3,"file":"BreadCrumb.js","names":["React","PropTypes","clsx","withStyles","DropRightXS","startCase","isNil","HvLink","HvTypography","HvOverflowTooltip","pathWithSubMenu","removeExtension","styles","Page","Component","onClick","elem","classes","path","a","link","label","propTypes","elementType","func","shape","string","isRequired","instanceOf","Object","PathElement","last","children","centerContainer","separatorContainer","bool","element","BreadCrumb","props","className","id","listRoute","maxVisible","url","component","dropDownMenuProps","others","maxVisibleElem","listPath","slice","baseUrl","match","urlWithoutDomain","replace","pathNames","split","filter","x","map","index","push","decodeURI","join","breadcrumbPath","length","root","orderedList","key","isLast","isValidElement","currentPage","undefined","arrayOf","number","name"],"sources":["../../../src/BreadCrumb/BreadCrumb.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { withStyles } from \"@mui/styles\";\nimport { DropRightXS } from \"@hitachivantara/uikit-react-icons\";\nimport startCase from \"lodash/startCase\";\nimport isNil from \"lodash/isNil\";\nimport { HvLink, HvTypography, HvOverflowTooltip } from \"..\";\nimport { pathWithSubMenu, removeExtension } from \"./utils\";\nimport styles from \"./styles\";\n\nconst Page = ({ Component, onClick, elem, classes }) => (\n <HvLink\n route={elem.path}\n Component={Component}\n onClick={onClick}\n data={elem}\n classes={{ a: classes.a }}\n >\n <HvTypography noWrap component=\"div\" variant=\"highlightText\" className={classes.link}>\n <HvOverflowTooltip data={startCase(elem.label)} />\n </HvTypography>\n </HvLink>\n);\n\nPage.propTypes = {\n Component: PropTypes.elementType,\n onClick: PropTypes.func,\n elem: PropTypes.shape({\n path: PropTypes.string,\n label: PropTypes.string,\n }).isRequired,\n classes: PropTypes.instanceOf(Object).isRequired,\n};\n\nconst PathElement = ({ classes, last = false, children }) => (\n <li className={classes.centerContainer}>\n {children}\n {!last && <DropRightXS className={classes.separatorContainer} color=\"atmo5\" />}\n </li>\n);\n\nPathElement.propTypes = {\n last: PropTypes.bool,\n classes: PropTypes.instanceOf(Object).isRequired,\n children: PropTypes.element.isRequired,\n};\n\n/**\n * A breadcrumb is a graphical control element frequently used as a navigational aid.\n */\nconst BreadCrumb = (props) => {\n const {\n classes,\n className,\n id,\n listRoute = [],\n maxVisible,\n url,\n onClick,\n component = \"div\",\n dropDownMenuProps,\n ...others\n } = props;\n const maxVisibleElem = maxVisible < 2 ? 2 : maxVisible;\n let listPath = listRoute.slice();\n\n // build the listPath object list\n if (!isNil(url)) {\n listPath = [];\n\n // get the domain\n const baseUrl = url.match(/^.*\\/\\/[^/]+/, \"\");\n\n // get url without domain\n const urlWithoutDomain = url.replace(/^.*\\/\\/[^/]+/, \"\");\n\n const pathNames = urlWithoutDomain.split(\"/\").filter((x) => x);\n\n pathNames.map((elem, index) =>\n listPath.push({\n label: decodeURI(elem),\n path: `${baseUrl}/${pathNames.slice(0, index + 1).join(\"/\")}`,\n })\n );\n }\n\n const breadcrumbPath =\n listPath.length > maxVisibleElem\n ? pathWithSubMenu(id, classes, listPath, maxVisibleElem, dropDownMenuProps)\n : listPath;\n\n return (\n <nav id={id} className={clsx(classes.root, className)} {...others}>\n <ol className={classes.orderedList}>\n {listPath.map((elem, index) => {\n const key = `key_${index}`;\n const isLast = index === breadcrumbPath.length - 1;\n\n return (\n <PathElement classes={classes} key={key} last={isLast}>\n {(React.isValidElement(elem) && elem) ||\n (isLast && (\n <HvTypography className={classes.currentPage} variant=\"normalText\">\n {startCase(removeExtension(elem.label))}\n </HvTypography>\n )) || (\n <Page\n key={key}\n elem={elem}\n classes={classes}\n Component={onClick ? component : undefined}\n onClick={onClick}\n />\n )}\n </PathElement>\n );\n })}\n </ol>\n </nav>\n );\n};\n\nBreadCrumb.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the links.\n */\n link: PropTypes.string,\n /**\n * Styles applied to the list.\n */\n orderedList: PropTypes.string,\n /**\n * Styles applied to the last element.\n */\n currentPage: PropTypes.string,\n }).isRequired,\n /**\n * List of breadcrumb.\n */\n listRoute: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n path: PropTypes.string,\n })\n ),\n /**\n * URL to build the breadcrumb.\n */\n url: PropTypes.string,\n /**\n * Number of pages visible.\n */\n maxVisible: PropTypes.number,\n /**\n * The component used for the link node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Function passed to the component. If defined the component prop is used as the link node.\n */\n onClick: PropTypes.func,\n /**\n * Props passed down to the DropDownMenu sub-menu component.\n */\n dropDownMenuProps: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, { name: \"HvBreadCrumb\", index: 1 })(BreadCrumb);\n"],"mappings":"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"}
1
+ {"version":3,"file":"BreadCrumb.js","names":["React","PropTypes","clsx","withStyles","DropRightXS","isNil","HvLink","HvTypography","HvOverflowTooltip","pathWithSubMenu","styles","capitalize","first","rest","lowerRest","toUpperCase","join","toLowerCase","Page","Component","onClick","elem","classes","path","a","link","label","propTypes","elementType","func","shape","string","isRequired","instanceOf","Object","PathElement","last","children","centerContainer","separatorContainer","bool","element","BreadCrumb","props","className","id","listRoute","maxVisible","url","component","dropDownMenuProps","others","maxVisibleElem","listPath","slice","baseUrl","match","urlWithoutDomain","replace","pathNames","split","filter","x","map","index","push","decodeURI","breadcrumbPath","length","root","orderedList","key","isLast","isValidElement","currentPage","undefined","arrayOf","number","name"],"sources":["../../../src/BreadCrumb/BreadCrumb.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { withStyles } from \"@mui/styles\";\nimport { DropRightXS } from \"@hitachivantara/uikit-react-icons\";\nimport isNil from \"lodash/isNil\";\nimport { HvLink, HvTypography, HvOverflowTooltip } from \"..\";\nimport pathWithSubMenu from \"./utils\";\nimport styles from \"./styles\";\n\nconst capitalize = ([first, ...rest], lowerRest = false) =>\n first.toUpperCase() + (lowerRest ? rest.join(\"\").toLowerCase() : rest.join(\"\"));\n\nconst Page = ({ Component, onClick, elem, classes }) => (\n <HvLink\n route={elem.path}\n Component={Component}\n onClick={onClick}\n data={elem}\n classes={{ a: classes.a }}\n >\n <HvTypography\n noWrap\n component=\"div\"\n variant=\"highlightText\"\n className={clsx(classes.link, classes.label)}\n >\n <HvOverflowTooltip data={elem.label} />\n </HvTypography>\n </HvLink>\n);\n\nPage.propTypes = {\n Component: PropTypes.elementType,\n onClick: PropTypes.func,\n elem: PropTypes.shape({\n path: PropTypes.string,\n label: PropTypes.string,\n }).isRequired,\n classes: PropTypes.instanceOf(Object).isRequired,\n};\n\nconst PathElement = ({ classes, last = false, children }) => (\n <li className={classes.centerContainer}>\n {children}\n {!last && <DropRightXS className={classes.separatorContainer} color=\"atmo5\" />}\n </li>\n);\n\nPathElement.propTypes = {\n last: PropTypes.bool,\n classes: PropTypes.instanceOf(Object).isRequired,\n children: PropTypes.element.isRequired,\n};\n\n/**\n * A breadcrumb is a graphical control element frequently used as a navigational aid.\n */\nconst BreadCrumb = (props) => {\n const {\n classes,\n className,\n id,\n listRoute = [],\n maxVisible,\n url,\n onClick,\n component = \"div\",\n dropDownMenuProps,\n ...others\n } = props;\n const maxVisibleElem = maxVisible < 2 ? 2 : maxVisible;\n let listPath = listRoute.slice();\n\n // build the listPath object list\n if (!isNil(url)) {\n listPath = [];\n\n // get the domain\n const baseUrl = url.match(/^.*\\/\\/[^/]+/, \"\");\n\n // get url without domain\n const urlWithoutDomain = url.replace(/^.*\\/\\/[^/]+/, \"\");\n\n const pathNames = urlWithoutDomain.split(\"/\").filter((x) => x);\n\n pathNames.map((elem, index) =>\n listPath.push({\n label: decodeURI(elem),\n path: `${baseUrl}/${pathNames.slice(0, index + 1).join(\"/\")}`,\n })\n );\n }\n\n const breadcrumbPath =\n listPath.length > maxVisibleElem\n ? pathWithSubMenu(id, classes, listPath, maxVisibleElem, dropDownMenuProps)\n : listPath;\n\n return (\n <nav id={id} className={clsx(classes.root, className)} {...others}>\n <ol className={classes.orderedList}>\n {listPath.map((elem, index) => {\n const key = `key_${index}`;\n const isLast = index === breadcrumbPath.length - 1;\n\n return (\n <PathElement classes={classes} key={key} last={isLast}>\n {(React.isValidElement(elem) && elem) ||\n (isLast && (\n <HvTypography noWrap className={clsx(classes.currentPage)} variant=\"normalText\">\n {capitalize(elem.label)}\n </HvTypography>\n )) || (\n <Page\n key={key}\n elem={elem}\n classes={classes}\n Component={onClick ? component : undefined}\n onClick={onClick}\n />\n )}\n </PathElement>\n );\n })}\n </ol>\n </nav>\n );\n};\n\nBreadCrumb.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the links.\n */\n link: PropTypes.string,\n /**\n * Styles applied to the list.\n */\n orderedList: PropTypes.string,\n /**\n * Styles applied to the last element.\n */\n currentPage: PropTypes.string,\n /**\n * Styles applied to the list elements.\n */\n label: PropTypes.string,\n }).isRequired,\n /**\n * List of breadcrumb.\n */\n listRoute: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n path: PropTypes.string,\n })\n ),\n /**\n * URL to build the breadcrumb.\n */\n url: PropTypes.string,\n /**\n * Number of pages visible.\n */\n maxVisible: PropTypes.number,\n /**\n * The component used for the link node.\n * Either a string to use a DOM element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Function passed to the component. If defined the component prop is used as the link node.\n */\n onClick: PropTypes.func,\n /**\n * Props passed down to the DropDownMenu sub-menu component.\n */\n dropDownMenuProps: PropTypes.instanceOf(Object),\n};\n\nexport default withStyles(styles, { name: \"HvBreadCrumb\", index: 1 })(BreadCrumb);\n"],"mappings":"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"}
@@ -36,6 +36,9 @@ var styles = function styles(theme) {
36
36
  "&:focus": {
37
37
  backgroundColor: theme.hv.palette.atmosphere.atmo3
38
38
  }
39
+ },
40
+ label: {
41
+ textTransform: "capitalize"
39
42
  }
40
43
  };
41
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["styles","theme","root","display","alignItems","zIndex","centerContainer","link","maxWidth","color","hv","palette","accent","acce1","cursor","backgroundColor","atmosphere","atmo3","separatorContainer","orderedList","paddingLeft","marginLeft","spacing","currentPage","padding","a","textDecoration","borderRadius"],"sources":["../../../src/BreadCrumb/styles.js"],"sourcesContent":["const styles = (theme) => ({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 0,\n },\n centerContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n link: {\n maxWidth: \"170px\",\n color: theme.hv.palette.accent.acce1,\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: theme.hv.palette.atmosphere.atmo3,\n },\n },\n separatorContainer: {},\n orderedList: {\n display: \"flex\",\n paddingLeft: 0,\n marginLeft: `-${theme.spacing(\"xs\")}`,\n },\n currentPage: {\n padding: `8px ${theme.spacing(\"xs\")}`,\n },\n a: {\n padding: `8px ${theme.spacing(\"xs\")}`,\n textDecoration: \"none\",\n borderRadius: \"2px\",\n \"&:hover\": {\n backgroundColor: theme.hv.palette.atmosphere.atmo3,\n },\n \"&:focus\": {\n backgroundColor: theme.hv.palette.atmosphere.atmo3,\n },\n },\n});\n\nexport default styles;\n"],"mappings":"AAAA,IAAMA,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAK;EAAA,OAAM;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE,QAAQ;MACpBC,MAAM,EAAE;IACV,CAAC;IACDC,eAAe,EAAE;MACfH,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE;IACd,CAAC;IACDG,IAAI,EAAE;MACJC,QAAQ,EAAE,OAAO;MACjBC,KAAK,EAAER,KAAK,CAACS,EAAE,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK;MACpC,SAAS,EAAE;QACTC,MAAM,EAAE,SAAS;QACjBC,eAAe,EAAEd,KAAK,CAACS,EAAE,CAACC,OAAO,CAACK,UAAU,CAACC;MAC/C;IACF,CAAC;IACDC,kBAAkB,EAAE,CAAC,CAAC;IACtBC,WAAW,EAAE;MACXhB,OAAO,EAAE,MAAM;MACfiB,WAAW,EAAE,CAAC;MACdC,UAAU,aAAMpB,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IACDC,WAAW,EAAE;MACXC,OAAO,gBAASvB,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IACDG,CAAC,EAAE;MACDD,OAAO,gBAASvB,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC,CAAE;MACrCI,cAAc,EAAE,MAAM;MACtBC,YAAY,EAAE,KAAK;MACnB,SAAS,EAAE;QACTZ,eAAe,EAAEd,KAAK,CAACS,EAAE,CAACC,OAAO,CAACK,UAAU,CAACC;MAC/C,CAAC;MACD,SAAS,EAAE;QACTF,eAAe,EAAEd,KAAK,CAACS,EAAE,CAACC,OAAO,CAACK,UAAU,CAACC;MAC/C;IACF;EACF,CAAC;AAAA,CAAC;AAEF,eAAejB,MAAM"}
1
+ {"version":3,"file":"styles.js","names":["styles","theme","root","display","alignItems","zIndex","centerContainer","link","maxWidth","color","hv","palette","accent","acce1","cursor","backgroundColor","atmosphere","atmo3","separatorContainer","orderedList","paddingLeft","marginLeft","spacing","currentPage","padding","a","textDecoration","borderRadius","label","textTransform"],"sources":["../../../src/BreadCrumb/styles.js"],"sourcesContent":["const styles = (theme) => ({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 0,\n },\n centerContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n link: {\n maxWidth: \"170px\",\n color: theme.hv.palette.accent.acce1,\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: theme.hv.palette.atmosphere.atmo3,\n },\n },\n separatorContainer: {},\n orderedList: {\n display: \"flex\",\n paddingLeft: 0,\n marginLeft: `-${theme.spacing(\"xs\")}`,\n },\n currentPage: {\n padding: `8px ${theme.spacing(\"xs\")}`,\n },\n a: {\n padding: `8px ${theme.spacing(\"xs\")}`,\n textDecoration: \"none\",\n borderRadius: \"2px\",\n \"&:hover\": {\n backgroundColor: theme.hv.palette.atmosphere.atmo3,\n },\n \"&:focus\": {\n backgroundColor: theme.hv.palette.atmosphere.atmo3,\n },\n },\n label: {\n textTransform: \"capitalize\",\n },\n});\n\nexport default styles;\n"],"mappings":"AAAA,IAAMA,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAK;EAAA,OAAM;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE,QAAQ;MACpBC,MAAM,EAAE;IACV,CAAC;IACDC,eAAe,EAAE;MACfH,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE;IACd,CAAC;IACDG,IAAI,EAAE;MACJC,QAAQ,EAAE,OAAO;MACjBC,KAAK,EAAER,KAAK,CAACS,EAAE,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK;MACpC,SAAS,EAAE;QACTC,MAAM,EAAE,SAAS;QACjBC,eAAe,EAAEd,KAAK,CAACS,EAAE,CAACC,OAAO,CAACK,UAAU,CAACC;MAC/C;IACF,CAAC;IACDC,kBAAkB,EAAE,CAAC,CAAC;IACtBC,WAAW,EAAE;MACXhB,OAAO,EAAE,MAAM;MACfiB,WAAW,EAAE,CAAC;MACdC,UAAU,aAAMpB,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IACDC,WAAW,EAAE;MACXC,OAAO,gBAASvB,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IACDG,CAAC,EAAE;MACDD,OAAO,gBAASvB,KAAK,CAACqB,OAAO,CAAC,IAAI,CAAC,CAAE;MACrCI,cAAc,EAAE,MAAM;MACtBC,YAAY,EAAE,KAAK;MACnB,SAAS,EAAE;QACTZ,eAAe,EAAEd,KAAK,CAACS,EAAE,CAACC,OAAO,CAACK,UAAU,CAACC;MAC/C,CAAC;MACD,SAAS,EAAE;QACTF,eAAe,EAAEd,KAAK,CAACS,EAAE,CAACC,OAAO,CAACK,UAAU,CAACC;MAC/C;IACF,CAAC;IACDW,KAAK,EAAE;MACLC,aAAa,EAAE;IACjB;EACF,CAAC;AAAA,CAAC;AAEF,eAAe7B,MAAM"}
@@ -2,8 +2,6 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  var _MoreOptionsHorizonta;
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- import "core-js/modules/es.array.includes.js";
6
- import "core-js/modules/es.string.includes.js";
7
5
  import "core-js/modules/es.array.slice.js";
8
6
  import "core-js/modules/es.array.splice.js";
9
7
  import "core-js/modules/es.object.keys.js";
@@ -18,10 +16,7 @@ import { MoreOptionsHorizontal } from "@hitachivantara/uikit-react-icons";
18
16
  import { HvDropDownMenu } from "..";
19
17
  import { setId } from "../utils";
20
18
  import { jsx as _jsx } from "react/jsx-runtime";
21
- export var removeExtension = function removeExtension(label) {
22
- return label.includes(".") ? label.substring(0, label.lastIndexOf(".")) : label;
23
- };
24
- export var pathWithSubMenu = function pathWithSubMenu(id, classes, listRoute, maxVisible, dropDownMenuProps) {
19
+ var pathWithSubMenu = function pathWithSubMenu(id, classes, listRoute, maxVisible, dropDownMenuProps) {
25
20
  var nbrElemToSubMenu = listRoute.length - maxVisible;
26
21
  var subMenuList = listRoute.slice(1, nbrElemToSubMenu + 1);
27
22
  listRoute.splice(1, nbrElemToSubMenu, /*#__PURE__*/_jsx(HvDropDownMenu, _objectSpread({
@@ -34,4 +29,5 @@ export var pathWithSubMenu = function pathWithSubMenu(id, classes, listRoute, ma
34
29
  }, dropDownMenuProps)));
35
30
  return listRoute;
36
31
  };
32
+ export default pathWithSubMenu;
37
33
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["React","MoreOptionsHorizontal","HvDropDownMenu","setId","removeExtension","label","includes","substring","lastIndexOf","pathWithSubMenu","id","classes","listRoute","maxVisible","dropDownMenuProps","nbrElemToSubMenu","length","subMenuList","slice","splice"],"sources":["../../../src/BreadCrumb/utils.js"],"sourcesContent":["import React from \"react\";\nimport { MoreOptionsHorizontal } from \"@hitachivantara/uikit-react-icons\";\nimport { HvDropDownMenu } from \"..\";\nimport { setId } from \"../utils\";\n\nexport const removeExtension = (label) =>\n label.includes(\".\") ? label.substring(0, label.lastIndexOf(\".\")) : label;\n\nexport const pathWithSubMenu = (id, classes, listRoute, maxVisible, dropDownMenuProps) => {\n const nbrElemToSubMenu = listRoute.length - maxVisible;\n const subMenuList = listRoute.slice(1, nbrElemToSubMenu + 1);\n\n listRoute.splice(\n 1,\n nbrElemToSubMenu,\n <HvDropDownMenu\n id={setId(id, \"submenu\")}\n icon={<MoreOptionsHorizontal iconSize=\"S\" color=\"acce1\" />}\n dataList={subMenuList}\n {...dropDownMenuProps}\n />\n );\n\n return listRoute;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,cAAc,QAAQ,IAAI;AACnC,SAASC,KAAK,QAAQ,UAAU;AAAC;AAEjC,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAe,CAAIC,KAAK;EAAA,OACnCA,KAAK,CAACC,QAAQ,CAAC,GAAG,CAAC,GAAGD,KAAK,CAACE,SAAS,CAAC,CAAC,EAAEF,KAAK,CAACG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAGH,KAAK;AAAA;AAE1E,OAAO,IAAMI,eAAe,GAAG,SAAlBA,eAAe,CAAIC,EAAE,EAAEC,OAAO,EAAEC,SAAS,EAAEC,UAAU,EAAEC,iBAAiB,EAAK;EACxF,IAAMC,gBAAgB,GAAGH,SAAS,CAACI,MAAM,GAAGH,UAAU;EACtD,IAAMI,WAAW,GAAGL,SAAS,CAACM,KAAK,CAAC,CAAC,EAAEH,gBAAgB,GAAG,CAAC,CAAC;EAE5DH,SAAS,CAACO,MAAM,CACd,CAAC,EACDJ,gBAAgB,eAChB,KAAC,cAAc;IACb,EAAE,EAAEZ,KAAK,CAACO,EAAE,EAAE,SAAS,CAAE;IACzB,IAAI,iEAAE,KAAC,qBAAqB;MAAC,QAAQ,EAAC,GAAG;MAAC,KAAK,EAAC;IAAO,EAAG,CAAC;IAC3D,QAAQ,EAAEO;EAAY,GAClBH,iBAAiB,EACrB,CACH;EAED,OAAOF,SAAS;AAClB,CAAC"}
1
+ {"version":3,"file":"utils.js","names":["React","MoreOptionsHorizontal","HvDropDownMenu","setId","pathWithSubMenu","id","classes","listRoute","maxVisible","dropDownMenuProps","nbrElemToSubMenu","length","subMenuList","slice","splice"],"sources":["../../../src/BreadCrumb/utils.js"],"sourcesContent":["import React from \"react\";\nimport { MoreOptionsHorizontal } from \"@hitachivantara/uikit-react-icons\";\nimport { HvDropDownMenu } from \"..\";\nimport { setId } from \"../utils\";\n\nconst pathWithSubMenu = (id, classes, listRoute, maxVisible, dropDownMenuProps) => {\n const nbrElemToSubMenu = listRoute.length - maxVisible;\n const subMenuList = listRoute.slice(1, nbrElemToSubMenu + 1);\n\n listRoute.splice(\n 1,\n nbrElemToSubMenu,\n <HvDropDownMenu\n id={setId(id, \"submenu\")}\n icon={<MoreOptionsHorizontal iconSize=\"S\" color=\"acce1\" />}\n dataList={subMenuList}\n {...dropDownMenuProps}\n />\n );\n\n return listRoute;\n};\n\nexport default pathWithSubMenu;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,qBAAqB,QAAQ,mCAAmC;AACzE,SAASC,cAAc,QAAQ,IAAI;AACnC,SAASC,KAAK,QAAQ,UAAU;AAAC;AAEjC,IAAMC,eAAe,GAAG,SAAlBA,eAAe,CAAIC,EAAE,EAAEC,OAAO,EAAEC,SAAS,EAAEC,UAAU,EAAEC,iBAAiB,EAAK;EACjF,IAAMC,gBAAgB,GAAGH,SAAS,CAACI,MAAM,GAAGH,UAAU;EACtD,IAAMI,WAAW,GAAGL,SAAS,CAACM,KAAK,CAAC,CAAC,EAAEH,gBAAgB,GAAG,CAAC,CAAC;EAE5DH,SAAS,CAACO,MAAM,CACd,CAAC,EACDJ,gBAAgB,eAChB,KAAC,cAAc;IACb,EAAE,EAAEP,KAAK,CAACE,EAAE,EAAE,SAAS,CAAE;IACzB,IAAI,iEAAE,KAAC,qBAAqB;MAAC,QAAQ,EAAC,GAAG;MAAC,KAAK,EAAC;IAAO,EAAG,CAAC;IAC3D,QAAQ,EAAEO;EAAY,GAClBH,iBAAiB,EACrB,CACH;EAED,OAAOF,SAAS;AAClB,CAAC;AAED,eAAeH,eAAe"}
@@ -1,6 +1,6 @@
1
1
  import { DialogProps, StandardProps } from "@mui/material";
2
2
 
3
- export type HvDialogClassKey = "root" | "background" | "paper" | "closeButton";
3
+ export type HvDialogClassKey = "root" | "background" | "paper" | "fullscreen" | "closeButton";
4
4
 
5
5
  export interface HvDialogProps extends StandardProps<DialogProps, HvDialogClassKey> {
6
6
  /**
@@ -1,12 +1,3 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import _typeof from "@babel/runtime/helpers/esm/typeof";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- var _Close;
6
- var _excluded = ["classes", "className", "id", "children", "open", "onClose", "firstFocusable", "buttonTitle", "fullscreen", "disableBackdropClick"];
7
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
- import "core-js/modules/es.array.map.js";
10
1
  import "core-js/modules/es.object.keys.js";
11
2
  import "core-js/modules/es.symbol.js";
12
3
  import "core-js/modules/es.array.filter.js";
@@ -14,6 +5,13 @@ import "core-js/modules/es.object.to-string.js";
14
5
  import "core-js/modules/es.object.get-own-property-descriptor.js";
15
6
  import "core-js/modules/web.dom-collections.for-each.js";
16
7
  import "core-js/modules/es.object.get-own-property-descriptors.js";
8
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
9
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
10
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
+ var _Close;
12
+ var _excluded = ["classes", "className", "id", "children", "open", "onClose", "firstFocusable", "buttonTitle", "fullscreen", "disableBackdropClick"];
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
15
  import React, { useCallback, useState } from "react";
18
16
  import clsx from "clsx";
19
17
  import PropTypes from "prop-types";
@@ -117,7 +115,7 @@ var HvDialog = function HvDialog(_ref) {
117
115
  open: open,
118
116
  PaperProps: {
119
117
  classes: {
120
- root: clsx(classes.paper, fullscreen && "fullscreen")
118
+ root: clsx(classes.paper, fullscreen && classes.fullscreen)
121
119
  }
122
120
  },
123
121
  fullScreen: fullscreen,
@@ -129,9 +127,9 @@ var HvDialog = function HvDialog(_ref) {
129
127
  onClose: function onClose(event, reason) {
130
128
  return wrappedClose(event, reason);
131
129
  },
132
- onKeyDown: keyDownHandler
130
+ onKeyDown: keyDownHandler,
131
+ "aria-modal": true
133
132
  }, others), {}, {
134
- "aria-modal": true,
135
133
  children: [/*#__PURE__*/_jsx(Button, {
136
134
  id: setId(id, "close"),
137
135
  className: classes.closeButton,
@@ -141,11 +139,7 @@ var HvDialog = function HvDialog(_ref) {
141
139
  },
142
140
  "aria-label": buttonTitle,
143
141
  children: /*#__PURE__*/_jsx(CloseButtonTooltipWrapper, {})
144
- }), children && _typeof(children) === "object" ? React.Children.map(children, function (c) {
145
- return /*#__PURE__*/React.cloneElement(c, {
146
- fullscreen: fullscreen
147
- });
148
- }) : children]
142
+ }), children]
149
143
  }));
150
144
  };
151
145
  process.env.NODE_ENV !== "production" ? HvDialog.propTypes = {
@@ -170,9 +164,13 @@ process.env.NODE_ENV !== "production" ? HvDialog.propTypes = {
170
164
  */
171
165
  background: PropTypes.string,
172
166
  /**
173
- * Style applied to the component (root).
167
+ * Style applied to the paper component.
174
168
  */
175
169
  paper: PropTypes.string,
170
+ /**
171
+ * Style applied to the paper component when it's fullscreen.
172
+ */
173
+ fullscreen: PropTypes.string,
176
174
  /**
177
175
  * Style applied to the close button.
178
176
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","names":["React","useCallback","useState","clsx","PropTypes","Dialog","withStyles","Close","isNil","Button","isKeypress","KeyboardCodes","setId","styles","withTooltip","getFocusableList","HvDialog","classes","className","id","children","open","onClose","firstFocusable","buttonTitle","fullscreen","disableBackdropClick","others","focusableQueue","setFocusableQueue","wrappedClose","event","reason","bypassValidation","measuredRef","node","focusableList","first","last","length","focus","element","document","getElementById","console","warn","keyDownHandler","Tab","target","shiftKey","preventDefault","Esc","onEscapeKeyDown","disableEscapeKeyDown","stopPropagation","closeButtonDisplay","CloseButtonTooltipWrapper","root","paper","background","closeButton","undefined","Children","map","c","cloneElement","propTypes","string","shape","isRequired","bool","func","name"],"sources":["../../../src/Dialog/Dialog.js"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { Dialog } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\nimport isNil from \"lodash/isNil\";\nimport Button from \"../Button\";\nimport { isKeypress, KeyboardCodes, setId } from \"../utils\";\nimport styles from \"./styles\";\nimport withTooltip from \"../withTooltip\";\nimport { getFocusableList } from \"../utils/focusableElementFinder\";\n\n/**\n * The Dialog component provides a solid foundation for creating dialogs, popovers, lightboxes, etc.\n * It is created by the composition of DialogTitle, DialogContent and DialogActions components, passed as child elements.\n */\nconst HvDialog = ({\n classes,\n className,\n id,\n children,\n open,\n onClose,\n firstFocusable,\n buttonTitle = \"Close\",\n fullscreen = false,\n disableBackdropClick = false,\n ...others\n}) => {\n const [focusableQueue, setFocusableQueue] = useState(null);\n\n // Because the `disableBackdropClick` property was deprecated in MUI5\n // and we want to maintain that funcionality to the user we're wrapping\n // the onClose call here to make that check.\n const wrappedClose = (event, reason, bypassValidation = false) => {\n if (bypassValidation) {\n onClose?.(event, reason);\n } else if (!disableBackdropClick) {\n onClose?.(event, reason);\n }\n };\n\n const measuredRef = useCallback(\n (node) => {\n if (node) {\n const focusableList = getFocusableList(node);\n setFocusableQueue({\n first: focusableList[1],\n last: focusableList[focusableList.length - 2],\n });\n if (isNil(firstFocusable)) focusableList[1].focus();\n else {\n const element = document.getElementById(firstFocusable);\n if (element) element.focus();\n else {\n // eslint-disable-next-line no-console\n console.warn(`firstFocusable element ${firstFocusable} not found.`);\n focusableList[1].focus();\n }\n }\n }\n },\n [firstFocusable]\n );\n\n const keyDownHandler = (event) => {\n if (isKeypress(event, KeyboardCodes.Tab) && !isNil(event.target) && !isNil(focusableQueue)) {\n if (event.shiftKey && event.target === focusableQueue.first) {\n focusableQueue.last.focus();\n event.preventDefault();\n }\n if (!event.shiftKey && event.target === focusableQueue.last) {\n focusableQueue.first.focus();\n event.preventDefault();\n }\n }\n // Needed as this handler overrides the one in the material ui Modal.\n else if (isKeypress(event, KeyboardCodes.Esc)) {\n if (others.onEscapeKeyDown) {\n others.onEscapeKeyDown(event);\n }\n\n if (!others.disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n\n wrappedClose(event, \"escapeKeyDown\", true);\n }\n }\n };\n\n const closeButtonDisplay = () => <Close role=\"presentation\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n return (\n <Dialog\n className={clsx(classes.root, className)}\n id={id}\n ref={measuredRef}\n open={open}\n PaperProps={{\n classes: {\n root: clsx(classes.paper, fullscreen ? \"fullscreen\" : \"\"),\n },\n }}\n fullScreen={fullscreen}\n BackdropProps={{\n classes: {\n root: classes.background,\n },\n }}\n onClose={(event, reason) => wrappedClose(event, reason)}\n onKeyDown={keyDownHandler}\n {...others}\n aria-modal\n >\n <Button\n id={setId(id, \"close\")}\n className={classes.closeButton}\n category=\"ghost\"\n onClick={(event) => wrappedClose(event, undefined, true)}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </Button>\n {children && typeof children === \"object\"\n ? React.Children.map(children, (c) => React.cloneElement(c, { fullscreen }))\n : children}\n </Dialog>\n );\n};\n\nHvDialog.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Style applied to the background (outside) of the component.\n */\n background: PropTypes.string,\n /**\n * Style applied to the component (root).\n */\n paper: PropTypes.string,\n /**\n * Style applied to the close button.\n */\n closeButton: PropTypes.string,\n }).isRequired,\n /**\n * Components of the Dialog.\n */\n children: PropTypes.node.isRequired,\n /**\n * Current state of the Dialog.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Function executed on close.\n */\n onClose: PropTypes.func,\n /**\n * Element id that should be focus when the Dialog opens.\n */\n firstFocusable: PropTypes.string,\n /**\n * Title for the button close.\n */\n buttonTitle: PropTypes.string,\n /**\n * Set the dialog to fullscreen mode.\n */\n fullscreen: PropTypes.bool,\n /**\n * Prevent closing the dialog when clicking on the backdrop.\n */\n disableBackdropClick: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvDialog\" })(HvDialog);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","names":["React","useCallback","useState","clsx","PropTypes","Dialog","withStyles","Close","isNil","Button","isKeypress","KeyboardCodes","setId","styles","withTooltip","getFocusableList","HvDialog","classes","className","id","children","open","onClose","firstFocusable","buttonTitle","fullscreen","disableBackdropClick","others","focusableQueue","setFocusableQueue","wrappedClose","event","reason","bypassValidation","measuredRef","node","focusableList","first","last","length","focus","element","document","getElementById","console","warn","keyDownHandler","Tab","target","shiftKey","preventDefault","Esc","onEscapeKeyDown","disableEscapeKeyDown","stopPropagation","closeButtonDisplay","CloseButtonTooltipWrapper","root","paper","background","closeButton","undefined","propTypes","string","shape","isRequired","bool","func","name"],"sources":["../../../src/Dialog/Dialog.js"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { Dialog } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport { Close } from \"@hitachivantara/uikit-react-icons\";\nimport isNil from \"lodash/isNil\";\nimport Button from \"../Button\";\nimport { isKeypress, KeyboardCodes, setId } from \"../utils\";\nimport styles from \"./styles\";\nimport withTooltip from \"../withTooltip\";\nimport { getFocusableList } from \"../utils/focusableElementFinder\";\n\n/**\n * The Dialog component provides a solid foundation for creating dialogs, popovers, lightboxes, etc.\n * It is created by the composition of DialogTitle, DialogContent and DialogActions components, passed as child elements.\n */\nconst HvDialog = ({\n classes,\n className,\n id,\n children,\n open,\n onClose,\n firstFocusable,\n buttonTitle = \"Close\",\n fullscreen = false,\n disableBackdropClick = false,\n ...others\n}) => {\n const [focusableQueue, setFocusableQueue] = useState(null);\n\n // Because the `disableBackdropClick` property was deprecated in MUI5\n // and we want to maintain that funcionality to the user we're wrapping\n // the onClose call here to make that check.\n const wrappedClose = (event, reason, bypassValidation = false) => {\n if (bypassValidation) {\n onClose?.(event, reason);\n } else if (!disableBackdropClick) {\n onClose?.(event, reason);\n }\n };\n\n const measuredRef = useCallback(\n (node) => {\n if (node) {\n const focusableList = getFocusableList(node);\n setFocusableQueue({\n first: focusableList[1],\n last: focusableList[focusableList.length - 2],\n });\n if (isNil(firstFocusable)) focusableList[1].focus();\n else {\n const element = document.getElementById(firstFocusable);\n if (element) element.focus();\n else {\n // eslint-disable-next-line no-console\n console.warn(`firstFocusable element ${firstFocusable} not found.`);\n focusableList[1].focus();\n }\n }\n }\n },\n [firstFocusable]\n );\n\n const keyDownHandler = (event) => {\n if (isKeypress(event, KeyboardCodes.Tab) && !isNil(event.target) && !isNil(focusableQueue)) {\n if (event.shiftKey && event.target === focusableQueue.first) {\n focusableQueue.last.focus();\n event.preventDefault();\n }\n if (!event.shiftKey && event.target === focusableQueue.last) {\n focusableQueue.first.focus();\n event.preventDefault();\n }\n }\n // Needed as this handler overrides the one in the material ui Modal.\n else if (isKeypress(event, KeyboardCodes.Esc)) {\n if (others.onEscapeKeyDown) {\n others.onEscapeKeyDown(event);\n }\n\n if (!others.disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n\n wrappedClose(event, \"escapeKeyDown\", true);\n }\n }\n };\n\n const closeButtonDisplay = () => <Close role=\"presentation\" />;\n\n const CloseButtonTooltipWrapper = buttonTitle\n ? withTooltip(closeButtonDisplay, buttonTitle, \"top\")\n : closeButtonDisplay;\n\n return (\n <Dialog\n className={clsx(classes.root, className)}\n id={id}\n ref={measuredRef}\n open={open}\n PaperProps={{\n classes: {\n root: clsx(classes.paper, { [classes.fullscreen]: fullscreen }),\n },\n }}\n fullScreen={fullscreen}\n BackdropProps={{\n classes: {\n root: classes.background,\n },\n }}\n onClose={(event, reason) => wrappedClose(event, reason)}\n onKeyDown={keyDownHandler}\n aria-modal\n {...others}\n >\n <Button\n id={setId(id, \"close\")}\n className={classes.closeButton}\n category=\"ghost\"\n onClick={(event) => wrappedClose(event, undefined, true)}\n aria-label={buttonTitle}\n >\n <CloseButtonTooltipWrapper />\n </Button>\n {children}\n </Dialog>\n );\n};\n\nHvDialog.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Style applied to the background (outside) of the component.\n */\n background: PropTypes.string,\n /**\n * Style applied to the paper component.\n */\n paper: PropTypes.string,\n /**\n * Style applied to the paper component when it's fullscreen.\n */\n fullscreen: PropTypes.string,\n /**\n * Style applied to the close button.\n */\n closeButton: PropTypes.string,\n }).isRequired,\n /**\n * Components of the Dialog.\n */\n children: PropTypes.node.isRequired,\n /**\n * Current state of the Dialog.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Function executed on close.\n */\n onClose: PropTypes.func,\n /**\n * Element id that should be focus when the Dialog opens.\n */\n firstFocusable: PropTypes.string,\n /**\n * Title for the button close.\n */\n buttonTitle: PropTypes.string,\n /**\n * Set the dialog to fullscreen mode.\n */\n fullscreen: PropTypes.bool,\n /**\n * Prevent closing the dialog when clicking on the backdrop.\n */\n disableBackdropClick: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvDialog\" })(HvDialog);\n"],"mappings":"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"}