@hitachivantara/uikit-react-lab 3.41.1 → 3.41.4

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.41.4](https://github.com/lumada-design/hv-uikit-react/compare/@hitachivantara/uikit-react-lab@3.41.3...@hitachivantara/uikit-react-lab@3.41.4) (2022-04-12)
7
+
8
+ **Note:** Version bump only for package @hitachivantara/uikit-react-lab
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.41.3](https://github.com/lumada-design/hv-uikit-react/compare/@hitachivantara/uikit-react-lab@3.41.2...@hitachivantara/uikit-react-lab@3.41.3) (2022-04-08)
15
+
16
+ **Note:** Version bump only for package @hitachivantara/uikit-react-lab
17
+
18
+
19
+
20
+
21
+
22
+ ## [3.41.2](https://github.com/lumada-design/hv-uikit-react/compare/@hitachivantara/uikit-react-lab@3.41.1...@hitachivantara/uikit-react-lab@3.41.2) (2022-04-07)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **NavigationComponent:** send event object to menu item click callback ([#2727](https://github.com/lumada-design/hv-uikit-react/issues/2727)) ([#2728](https://github.com/lumada-design/hv-uikit-react/issues/2728)) ([ba0ae57](https://github.com/lumada-design/hv-uikit-react/commit/ba0ae5755a82e57914898b1d921b2f59225c10c3))
28
+
29
+
30
+
31
+
32
+
6
33
  ## [3.41.1](https://github.com/lumada-design/hv-uikit-react/compare/@hitachivantara/uikit-react-lab@3.41.0...@hitachivantara/uikit-react-lab@3.41.1) (2022-04-05)
7
34
 
8
35
  **Note:** Version bump only for package @hitachivantara/uikit-react-lab
@@ -32,7 +32,7 @@ interface Header {
32
32
  interface Value {
33
33
  label: string;
34
34
  action: string;
35
- callback?: (notificationId: string) => void;
35
+ callback?: (event: Event, notificationId: string) => void;
36
36
  }
37
37
 
38
38
  interface actions {
@@ -209,11 +209,11 @@ var HvNotificationPanel = function HvNotificationPanel(_ref3) {
209
209
  var dList = (0, _toConsumableArray2.default)(actions.values);
210
210
  return /*#__PURE__*/_react.default.createElement(_uikitReactCore.HvDropDownMenu, (0, _extends2.default)({
211
211
  expanded: expand,
212
- onClick: function onClick(e, item) {
212
+ onClick: function onClick(event, item) {
213
213
  var _item$callback;
214
214
 
215
215
  setHighlighted(undefined);
216
- item === null || item === void 0 ? void 0 : (_item$callback = item.callback) === null || _item$callback === void 0 ? void 0 : _item$callback.call(item, notificationId);
216
+ item === null || item === void 0 ? void 0 : (_item$callback = item.callback) === null || _item$callback === void 0 ? void 0 : _item$callback.call(item, event, notificationId);
217
217
  },
218
218
  dataList: dList,
219
219
  onToggle: function onToggle(event, s) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/NotificationPanel/NotificationPanel.js"],"names":["DEFAULT_LABELS","notificationGroupHeader","newNotifications","olderNotifications","notificationIndicator","label","buttonLabel","getGenericLocale","locale","includes","substr","indexOf","importAndLoadLocale","then","dayjs","catch","genericLocale","console","warn","HvNotificationPanel","id","className","classes","open","footer","notifications","hasNewNotifications","emptyStatePanelTitle","emptyStatePanelMessage","emptyStatePanelIcon","labelsProp","labels","newNotificationsButtonAction","localeProp","others","localeFromProvider","undefined","highlighted","setHighlighted","isExpanded","setIsExpanded","isLocaleLoaded","setIsLocaleLoaded","isMounted","generateNotificationsActions","notificationId","onToggle","actions","expand","dList","values","e","item","callback","event","s","dropDownMenuProps","notificationElementGenerator","notificationsToRender","map","notification","notificationIsHighlighted","title","isRead","icon","date","onClick","onKeyPress","hasNotifications","length","renderNotifications","root","closed","panel","emptyState","actionBarRoot","actionBar","propTypes","PropTypes","string","bool","shape","notificationsIndicator","isRequired","arrayOf","oneOfType","number","object","element","func","action","instanceOf","Object","node","styles","name"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport dayjs from \"dayjs\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport {\n HvPanel,\n HvActionBar,\n HvDropDownMenu,\n setId,\n useLabels,\n useLocale,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport styles from \"./styles\";\n\nimport Notification from \"./Notification\";\nimport EmptyStatePanel from \"./EmptyStatePanel\";\nimport NotificationsIndicator from \"./NotificationsIndicator\";\n\nconst DEFAULT_LABELS = {\n notificationGroupHeader: {\n newNotifications: \"New\",\n olderNotifications: \"Earlier\",\n },\n notificationIndicator: {\n label: \"You have new notifications\",\n buttonLabel: \"Update\",\n },\n};\n\n/**\n * Obtains a simplified locale, if possible, e.g: \"en-US\" returns \"en\".\n *\n * @param {string} locale - The locale to be used\n * @returns The more generic locale if found\n */\nexport const getGenericLocale = (locale) =>\n locale.includes(\"-\") && locale.substr(0, locale.indexOf(\"-\"));\n\n/**\n * Imports and load the received locale in order to be used by dayjs. If the provided locale or a generic one\n * obtained is not possible to load, then dayjs will fallback to its default.\n *\n * @param {string} locale - The locale to be used\n */\nconst importAndLoadLocale = async (locale) => {\n await import(`dayjs/locale/${locale}.js`)\n .then(() => {\n dayjs.locale(locale);\n })\n .catch(async () => {\n const genericLocale = getGenericLocale(locale);\n await import(`dayjs/locale/${genericLocale}.js`)\n .then(() => dayjs.locale(genericLocale))\n // eslint-disable-next-line no-console\n .catch(() => console.warn(`Unable to load locale: ${locale}. Falling back to the default`));\n });\n};\n\n/**\n * Notification Panel displays all of read and unread notifications. Still in development\n */\nconst HvNotificationPanel = ({\n id,\n className,\n classes,\n open,\n footer,\n notifications,\n hasNewNotifications = false,\n emptyStatePanelTitle = \"No notifications\",\n emptyStatePanelMessage = \"You currently have no notifications.\",\n emptyStatePanelIcon,\n labels: labelsProp,\n newNotificationsButtonAction,\n locale: localeProp,\n ...others\n}) => {\n const localeFromProvider = useLocale();\n\n const locale = localeProp || localeFromProvider;\n\n const [highlighted, setHighlighted] = useState(undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLocaleLoaded, setIsLocaleLoaded] = useState(false);\n\n useEffect(() => {\n // We're using this mount logic to avoid potential memory leak problems.\n let isMounted = true;\n\n if (!isLocaleLoaded) {\n importAndLoadLocale(locale).then(() => {\n if (isMounted) {\n setIsLocaleLoaded(true);\n }\n });\n }\n return () => {\n isMounted = false;\n };\n });\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const generateNotificationsActions = (notificationId, onToggle, actions) => {\n const expand = notificationId === highlighted;\n const dList = [...actions.values];\n return (\n <HvDropDownMenu\n expanded={expand}\n onClick={(e, item) => {\n setHighlighted(undefined);\n item?.callback?.(notificationId);\n }}\n dataList={dList}\n onToggle={(event, s) => {\n onToggle?.(event, s);\n if (s) {\n setHighlighted(notificationId);\n } else {\n setHighlighted(undefined);\n }\n setIsExpanded(!isExpanded);\n }}\n {...actions.dropDownMenuProps}\n />\n );\n };\n\n const notificationElementGenerator = (notificationsToRender) => {\n return notificationsToRender.map((notification) => {\n const notificationIsHighlighted = highlighted === notification.id;\n return (\n <Notification\n key={notification.id}\n notificationId={notification.id}\n title={notification.title}\n isRead={notification.isRead}\n icon={notification.icon}\n date={notification.date}\n onClick={notification.onClick}\n onKeyPress={notification.onKeyPress}\n rightContainer={generateNotificationsActions(\n notification.id,\n notification.onToggle,\n notification.actions\n )}\n isHighlighted={notificationIsHighlighted}\n locale={locale}\n />\n );\n });\n };\n\n const hasNotifications = notifications.length > 0;\n\n const renderNotifications = (notificationsToRender) =>\n notificationElementGenerator(notificationsToRender);\n\n return (\n <HvPanel\n id={id}\n className={clsx(className, classes.root, {\n [classes.closed]: open === false,\n [classes.open]: open,\n })}\n {...others}\n >\n {hasNewNotifications && (\n <NotificationsIndicator\n labels={labels.notificationIndicator}\n onClick={newNotificationsButtonAction}\n />\n )}\n {hasNotifications ? (\n <div className={classes.panel}>\n {notifications.length > 0 && renderNotifications(notifications)}\n </div>\n ) : (\n <EmptyStatePanel\n id={setId(id, \"empty-state\")}\n title={emptyStatePanelTitle}\n message={emptyStatePanelMessage}\n icon={emptyStatePanelIcon}\n className={classes.emptyState}\n />\n )}\n {footer && (\n <HvActionBar\n id={setId(id, \"action-bar\")}\n classes={{\n root: classes.actionBarRoot,\n }}\n className={classes.actionBar}\n >\n {footer}\n </HvActionBar>\n )}\n </HvPanel>\n );\n};\n\nHvNotificationPanel.propTypes = {\n /**\n * Id to be applied to the root node of the panel.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied to the root element.\n */\n className: PropTypes.string,\n /**\n * 'true' if panel is open or 'false' if the panel is not open\n *\n * @deprecated This logic should be external, i.e. using the HvAppSwitcherPanel inside a Drawer component.\n */\n open: deprecatedPropType(PropTypes.bool),\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * styles object applied to the root\n */\n root: PropTypes.string,\n /**\n * styles object applied to the root when closed\n */\n closed: PropTypes.string,\n /**\n * styles object applied to the root when open\n */\n open: PropTypes.string,\n /**\n * styles object applied to the panel\n */\n panel: PropTypes.string,\n /**\n * styles object applied to the action bar\n */\n actionBar: PropTypes.string,\n /**\n * styles object applied to the root of the action bar\n */\n actionBarRoot: PropTypes.string,\n /**\n * styles object applied to the new notification indicator\n */\n notificationsIndicator: PropTypes.string,\n /**\n * styles object applied to the empty state panel\n */\n emptyState: PropTypes.string,\n }).isRequired,\n /**\n * The properties of the notifications to be rendered in the Panel.\n */\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n date: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n icon: PropTypes.element,\n onClick: PropTypes.func,\n onKeyPress: PropTypes.func,\n onToggle: PropTypes.func,\n actions: PropTypes.shape({\n label: PropTypes.bool,\n action: PropTypes.string,\n callback: PropTypes.func,\n dropDownMenuProps: PropTypes.instanceOf(Object),\n }),\n })\n ),\n /**\n * Whether to render the new notifications indicator\n */\n hasNewNotifications: PropTypes.bool,\n /**\n * Action buttons to render in footer\n */\n footer: PropTypes.node,\n /**\n * Title of the EmptyStatePanel\n */\n emptyStatePanelTitle: PropTypes.string,\n /**\n * Message of the EmptyStatePanel\n */\n emptyStatePanelMessage: PropTypes.string,\n /**\n * Empty Panel custom Icon\n */\n emptyStatePanelIcon: PropTypes.node,\n /**\n * Labels to apply to the Panel\n */\n labels: PropTypes.shape({\n /**\n * Labels to apply to the groups separating newer and older notifications\n */\n notificationGroupHeader: {\n olderNotifications: PropTypes.string,\n newNotifications: PropTypes.string,\n },\n /**\n * Labels to apply to the element of the New Notifications Indicator\n */\n notificationIndicator: {\n label: PropTypes.string,\n buttonLabel: PropTypes.string,\n },\n }),\n /**\n * Function to be supplied to the notification update button\n */\n newNotificationsButtonAction: PropTypes.func,\n /**\n * The locale to be used on the notification date, if undefined it will use the one from the HvProvider\n */\n locale: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: \"HvNotificationPanel\" })(HvNotificationPanel);\n"],"file":"NotificationPanel.js"}
1
+ {"version":3,"sources":["../../src/NotificationPanel/NotificationPanel.js"],"names":["DEFAULT_LABELS","notificationGroupHeader","newNotifications","olderNotifications","notificationIndicator","label","buttonLabel","getGenericLocale","locale","includes","substr","indexOf","importAndLoadLocale","then","dayjs","catch","genericLocale","console","warn","HvNotificationPanel","id","className","classes","open","footer","notifications","hasNewNotifications","emptyStatePanelTitle","emptyStatePanelMessage","emptyStatePanelIcon","labelsProp","labels","newNotificationsButtonAction","localeProp","others","localeFromProvider","undefined","highlighted","setHighlighted","isExpanded","setIsExpanded","isLocaleLoaded","setIsLocaleLoaded","isMounted","generateNotificationsActions","notificationId","onToggle","actions","expand","dList","values","event","item","callback","s","dropDownMenuProps","notificationElementGenerator","notificationsToRender","map","notification","notificationIsHighlighted","title","isRead","icon","date","onClick","onKeyPress","hasNotifications","length","renderNotifications","root","closed","panel","emptyState","actionBarRoot","actionBar","propTypes","PropTypes","string","bool","shape","notificationsIndicator","isRequired","arrayOf","oneOfType","number","object","element","func","action","instanceOf","Object","node","styles","name"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport dayjs from \"dayjs\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport {\n HvPanel,\n HvActionBar,\n HvDropDownMenu,\n setId,\n useLabels,\n useLocale,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport styles from \"./styles\";\n\nimport Notification from \"./Notification\";\nimport EmptyStatePanel from \"./EmptyStatePanel\";\nimport NotificationsIndicator from \"./NotificationsIndicator\";\n\nconst DEFAULT_LABELS = {\n notificationGroupHeader: {\n newNotifications: \"New\",\n olderNotifications: \"Earlier\",\n },\n notificationIndicator: {\n label: \"You have new notifications\",\n buttonLabel: \"Update\",\n },\n};\n\n/**\n * Obtains a simplified locale, if possible, e.g: \"en-US\" returns \"en\".\n *\n * @param {string} locale - The locale to be used\n * @returns The more generic locale if found\n */\nexport const getGenericLocale = (locale) =>\n locale.includes(\"-\") && locale.substr(0, locale.indexOf(\"-\"));\n\n/**\n * Imports and load the received locale in order to be used by dayjs. If the provided locale or a generic one\n * obtained is not possible to load, then dayjs will fallback to its default.\n *\n * @param {string} locale - The locale to be used\n */\nconst importAndLoadLocale = async (locale) => {\n await import(`dayjs/locale/${locale}.js`)\n .then(() => {\n dayjs.locale(locale);\n })\n .catch(async () => {\n const genericLocale = getGenericLocale(locale);\n await import(`dayjs/locale/${genericLocale}.js`)\n .then(() => dayjs.locale(genericLocale))\n // eslint-disable-next-line no-console\n .catch(() => console.warn(`Unable to load locale: ${locale}. Falling back to the default`));\n });\n};\n\n/**\n * Notification Panel displays all of read and unread notifications. Still in development\n */\nconst HvNotificationPanel = ({\n id,\n className,\n classes,\n open,\n footer,\n notifications,\n hasNewNotifications = false,\n emptyStatePanelTitle = \"No notifications\",\n emptyStatePanelMessage = \"You currently have no notifications.\",\n emptyStatePanelIcon,\n labels: labelsProp,\n newNotificationsButtonAction,\n locale: localeProp,\n ...others\n}) => {\n const localeFromProvider = useLocale();\n\n const locale = localeProp || localeFromProvider;\n\n const [highlighted, setHighlighted] = useState(undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLocaleLoaded, setIsLocaleLoaded] = useState(false);\n\n useEffect(() => {\n // We're using this mount logic to avoid potential memory leak problems.\n let isMounted = true;\n\n if (!isLocaleLoaded) {\n importAndLoadLocale(locale).then(() => {\n if (isMounted) {\n setIsLocaleLoaded(true);\n }\n });\n }\n return () => {\n isMounted = false;\n };\n });\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const generateNotificationsActions = (notificationId, onToggle, actions) => {\n const expand = notificationId === highlighted;\n const dList = [...actions.values];\n return (\n <HvDropDownMenu\n expanded={expand}\n onClick={(event, item) => {\n setHighlighted(undefined);\n item?.callback?.(event, notificationId);\n }}\n dataList={dList}\n onToggle={(event, s) => {\n onToggle?.(event, s);\n if (s) {\n setHighlighted(notificationId);\n } else {\n setHighlighted(undefined);\n }\n setIsExpanded(!isExpanded);\n }}\n {...actions.dropDownMenuProps}\n />\n );\n };\n\n const notificationElementGenerator = (notificationsToRender) => {\n return notificationsToRender.map((notification) => {\n const notificationIsHighlighted = highlighted === notification.id;\n return (\n <Notification\n key={notification.id}\n notificationId={notification.id}\n title={notification.title}\n isRead={notification.isRead}\n icon={notification.icon}\n date={notification.date}\n onClick={notification.onClick}\n onKeyPress={notification.onKeyPress}\n rightContainer={generateNotificationsActions(\n notification.id,\n notification.onToggle,\n notification.actions\n )}\n isHighlighted={notificationIsHighlighted}\n locale={locale}\n />\n );\n });\n };\n\n const hasNotifications = notifications.length > 0;\n\n const renderNotifications = (notificationsToRender) =>\n notificationElementGenerator(notificationsToRender);\n\n return (\n <HvPanel\n id={id}\n className={clsx(className, classes.root, {\n [classes.closed]: open === false,\n [classes.open]: open,\n })}\n {...others}\n >\n {hasNewNotifications && (\n <NotificationsIndicator\n labels={labels.notificationIndicator}\n onClick={newNotificationsButtonAction}\n />\n )}\n {hasNotifications ? (\n <div className={classes.panel}>\n {notifications.length > 0 && renderNotifications(notifications)}\n </div>\n ) : (\n <EmptyStatePanel\n id={setId(id, \"empty-state\")}\n title={emptyStatePanelTitle}\n message={emptyStatePanelMessage}\n icon={emptyStatePanelIcon}\n className={classes.emptyState}\n />\n )}\n {footer && (\n <HvActionBar\n id={setId(id, \"action-bar\")}\n classes={{\n root: classes.actionBarRoot,\n }}\n className={classes.actionBar}\n >\n {footer}\n </HvActionBar>\n )}\n </HvPanel>\n );\n};\n\nHvNotificationPanel.propTypes = {\n /**\n * Id to be applied to the root node of the panel.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied to the root element.\n */\n className: PropTypes.string,\n /**\n * 'true' if panel is open or 'false' if the panel is not open\n *\n * @deprecated This logic should be external, i.e. using the HvAppSwitcherPanel inside a Drawer component.\n */\n open: deprecatedPropType(PropTypes.bool),\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * styles object applied to the root\n */\n root: PropTypes.string,\n /**\n * styles object applied to the root when closed\n */\n closed: PropTypes.string,\n /**\n * styles object applied to the root when open\n */\n open: PropTypes.string,\n /**\n * styles object applied to the panel\n */\n panel: PropTypes.string,\n /**\n * styles object applied to the action bar\n */\n actionBar: PropTypes.string,\n /**\n * styles object applied to the root of the action bar\n */\n actionBarRoot: PropTypes.string,\n /**\n * styles object applied to the new notification indicator\n */\n notificationsIndicator: PropTypes.string,\n /**\n * styles object applied to the empty state panel\n */\n emptyState: PropTypes.string,\n }).isRequired,\n /**\n * The properties of the notifications to be rendered in the Panel.\n */\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n date: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n icon: PropTypes.element,\n onClick: PropTypes.func,\n onKeyPress: PropTypes.func,\n onToggle: PropTypes.func,\n actions: PropTypes.shape({\n label: PropTypes.bool,\n action: PropTypes.string,\n callback: PropTypes.func,\n dropDownMenuProps: PropTypes.instanceOf(Object),\n }),\n })\n ),\n /**\n * Whether to render the new notifications indicator\n */\n hasNewNotifications: PropTypes.bool,\n /**\n * Action buttons to render in footer\n */\n footer: PropTypes.node,\n /**\n * Title of the EmptyStatePanel\n */\n emptyStatePanelTitle: PropTypes.string,\n /**\n * Message of the EmptyStatePanel\n */\n emptyStatePanelMessage: PropTypes.string,\n /**\n * Empty Panel custom Icon\n */\n emptyStatePanelIcon: PropTypes.node,\n /**\n * Labels to apply to the Panel\n */\n labels: PropTypes.shape({\n /**\n * Labels to apply to the groups separating newer and older notifications\n */\n notificationGroupHeader: {\n olderNotifications: PropTypes.string,\n newNotifications: PropTypes.string,\n },\n /**\n * Labels to apply to the element of the New Notifications Indicator\n */\n notificationIndicator: {\n label: PropTypes.string,\n buttonLabel: PropTypes.string,\n },\n }),\n /**\n * Function to be supplied to the notification update button\n */\n newNotificationsButtonAction: PropTypes.func,\n /**\n * The locale to be used on the notification date, if undefined it will use the one from the HvProvider\n */\n locale: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: \"HvNotificationPanel\" })(HvNotificationPanel);\n"],"file":"NotificationPanel.js"}
@@ -32,7 +32,7 @@ interface Header {
32
32
  interface Value {
33
33
  label: string;
34
34
  action: string;
35
- callback?: (notificationId: string) => void;
35
+ callback?: (event: Event, notificationId: string) => void;
36
36
  }
37
37
 
38
38
  interface actions {
@@ -160,11 +160,11 @@ var HvNotificationPanel = function HvNotificationPanel(_ref3) {
160
160
 
161
161
  return /*#__PURE__*/React.createElement(HvDropDownMenu, _extends({
162
162
  expanded: expand,
163
- onClick: function onClick(e, item) {
163
+ onClick: function onClick(event, item) {
164
164
  var _item$callback;
165
165
 
166
166
  setHighlighted(undefined);
167
- item === null || item === void 0 ? void 0 : (_item$callback = item.callback) === null || _item$callback === void 0 ? void 0 : _item$callback.call(item, notificationId);
167
+ item === null || item === void 0 ? void 0 : (_item$callback = item.callback) === null || _item$callback === void 0 ? void 0 : _item$callback.call(item, event, notificationId);
168
168
  },
169
169
  dataList: dList,
170
170
  onToggle: function onToggle(event, s) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/NotificationPanel/NotificationPanel.js"],"names":["React","useState","useEffect","PropTypes","clsx","dayjs","deprecatedPropType","withStyles","HvPanel","HvActionBar","HvDropDownMenu","setId","useLabels","useLocale","styles","Notification","EmptyStatePanel","NotificationsIndicator","DEFAULT_LABELS","notificationGroupHeader","newNotifications","olderNotifications","notificationIndicator","label","buttonLabel","getGenericLocale","locale","includes","substr","indexOf","importAndLoadLocale","then","catch","genericLocale","console","warn","HvNotificationPanel","id","className","classes","open","footer","notifications","hasNewNotifications","emptyStatePanelTitle","emptyStatePanelMessage","emptyStatePanelIcon","labelsProp","labels","newNotificationsButtonAction","localeProp","others","localeFromProvider","undefined","highlighted","setHighlighted","isExpanded","setIsExpanded","isLocaleLoaded","setIsLocaleLoaded","isMounted","generateNotificationsActions","notificationId","onToggle","actions","expand","dList","values","e","item","callback","event","s","dropDownMenuProps","notificationElementGenerator","notificationsToRender","map","notification","notificationIsHighlighted","title","isRead","icon","date","onClick","onKeyPress","hasNotifications","length","renderNotifications","root","closed","panel","emptyState","actionBarRoot","actionBar","propTypes","string","bool","shape","notificationsIndicator","isRequired","arrayOf","oneOfType","number","object","element","func","action","instanceOf","Object","node","name"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport dayjs from \"dayjs\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport {\n HvPanel,\n HvActionBar,\n HvDropDownMenu,\n setId,\n useLabels,\n useLocale,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport styles from \"./styles\";\n\nimport Notification from \"./Notification\";\nimport EmptyStatePanel from \"./EmptyStatePanel\";\nimport NotificationsIndicator from \"./NotificationsIndicator\";\n\nconst DEFAULT_LABELS = {\n notificationGroupHeader: {\n newNotifications: \"New\",\n olderNotifications: \"Earlier\",\n },\n notificationIndicator: {\n label: \"You have new notifications\",\n buttonLabel: \"Update\",\n },\n};\n\n/**\n * Obtains a simplified locale, if possible, e.g: \"en-US\" returns \"en\".\n *\n * @param {string} locale - The locale to be used\n * @returns The more generic locale if found\n */\nexport const getGenericLocale = (locale) =>\n locale.includes(\"-\") && locale.substr(0, locale.indexOf(\"-\"));\n\n/**\n * Imports and load the received locale in order to be used by dayjs. If the provided locale or a generic one\n * obtained is not possible to load, then dayjs will fallback to its default.\n *\n * @param {string} locale - The locale to be used\n */\nconst importAndLoadLocale = async (locale) => {\n await import(`dayjs/locale/${locale}.js`)\n .then(() => {\n dayjs.locale(locale);\n })\n .catch(async () => {\n const genericLocale = getGenericLocale(locale);\n await import(`dayjs/locale/${genericLocale}.js`)\n .then(() => dayjs.locale(genericLocale))\n // eslint-disable-next-line no-console\n .catch(() => console.warn(`Unable to load locale: ${locale}. Falling back to the default`));\n });\n};\n\n/**\n * Notification Panel displays all of read and unread notifications. Still in development\n */\nconst HvNotificationPanel = ({\n id,\n className,\n classes,\n open,\n footer,\n notifications,\n hasNewNotifications = false,\n emptyStatePanelTitle = \"No notifications\",\n emptyStatePanelMessage = \"You currently have no notifications.\",\n emptyStatePanelIcon,\n labels: labelsProp,\n newNotificationsButtonAction,\n locale: localeProp,\n ...others\n}) => {\n const localeFromProvider = useLocale();\n\n const locale = localeProp || localeFromProvider;\n\n const [highlighted, setHighlighted] = useState(undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLocaleLoaded, setIsLocaleLoaded] = useState(false);\n\n useEffect(() => {\n // We're using this mount logic to avoid potential memory leak problems.\n let isMounted = true;\n\n if (!isLocaleLoaded) {\n importAndLoadLocale(locale).then(() => {\n if (isMounted) {\n setIsLocaleLoaded(true);\n }\n });\n }\n return () => {\n isMounted = false;\n };\n });\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const generateNotificationsActions = (notificationId, onToggle, actions) => {\n const expand = notificationId === highlighted;\n const dList = [...actions.values];\n return (\n <HvDropDownMenu\n expanded={expand}\n onClick={(e, item) => {\n setHighlighted(undefined);\n item?.callback?.(notificationId);\n }}\n dataList={dList}\n onToggle={(event, s) => {\n onToggle?.(event, s);\n if (s) {\n setHighlighted(notificationId);\n } else {\n setHighlighted(undefined);\n }\n setIsExpanded(!isExpanded);\n }}\n {...actions.dropDownMenuProps}\n />\n );\n };\n\n const notificationElementGenerator = (notificationsToRender) => {\n return notificationsToRender.map((notification) => {\n const notificationIsHighlighted = highlighted === notification.id;\n return (\n <Notification\n key={notification.id}\n notificationId={notification.id}\n title={notification.title}\n isRead={notification.isRead}\n icon={notification.icon}\n date={notification.date}\n onClick={notification.onClick}\n onKeyPress={notification.onKeyPress}\n rightContainer={generateNotificationsActions(\n notification.id,\n notification.onToggle,\n notification.actions\n )}\n isHighlighted={notificationIsHighlighted}\n locale={locale}\n />\n );\n });\n };\n\n const hasNotifications = notifications.length > 0;\n\n const renderNotifications = (notificationsToRender) =>\n notificationElementGenerator(notificationsToRender);\n\n return (\n <HvPanel\n id={id}\n className={clsx(className, classes.root, {\n [classes.closed]: open === false,\n [classes.open]: open,\n })}\n {...others}\n >\n {hasNewNotifications && (\n <NotificationsIndicator\n labels={labels.notificationIndicator}\n onClick={newNotificationsButtonAction}\n />\n )}\n {hasNotifications ? (\n <div className={classes.panel}>\n {notifications.length > 0 && renderNotifications(notifications)}\n </div>\n ) : (\n <EmptyStatePanel\n id={setId(id, \"empty-state\")}\n title={emptyStatePanelTitle}\n message={emptyStatePanelMessage}\n icon={emptyStatePanelIcon}\n className={classes.emptyState}\n />\n )}\n {footer && (\n <HvActionBar\n id={setId(id, \"action-bar\")}\n classes={{\n root: classes.actionBarRoot,\n }}\n className={classes.actionBar}\n >\n {footer}\n </HvActionBar>\n )}\n </HvPanel>\n );\n};\n\nHvNotificationPanel.propTypes = {\n /**\n * Id to be applied to the root node of the panel.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied to the root element.\n */\n className: PropTypes.string,\n /**\n * 'true' if panel is open or 'false' if the panel is not open\n *\n * @deprecated This logic should be external, i.e. using the HvAppSwitcherPanel inside a Drawer component.\n */\n open: deprecatedPropType(PropTypes.bool),\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * styles object applied to the root\n */\n root: PropTypes.string,\n /**\n * styles object applied to the root when closed\n */\n closed: PropTypes.string,\n /**\n * styles object applied to the root when open\n */\n open: PropTypes.string,\n /**\n * styles object applied to the panel\n */\n panel: PropTypes.string,\n /**\n * styles object applied to the action bar\n */\n actionBar: PropTypes.string,\n /**\n * styles object applied to the root of the action bar\n */\n actionBarRoot: PropTypes.string,\n /**\n * styles object applied to the new notification indicator\n */\n notificationsIndicator: PropTypes.string,\n /**\n * styles object applied to the empty state panel\n */\n emptyState: PropTypes.string,\n }).isRequired,\n /**\n * The properties of the notifications to be rendered in the Panel.\n */\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n date: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n icon: PropTypes.element,\n onClick: PropTypes.func,\n onKeyPress: PropTypes.func,\n onToggle: PropTypes.func,\n actions: PropTypes.shape({\n label: PropTypes.bool,\n action: PropTypes.string,\n callback: PropTypes.func,\n dropDownMenuProps: PropTypes.instanceOf(Object),\n }),\n })\n ),\n /**\n * Whether to render the new notifications indicator\n */\n hasNewNotifications: PropTypes.bool,\n /**\n * Action buttons to render in footer\n */\n footer: PropTypes.node,\n /**\n * Title of the EmptyStatePanel\n */\n emptyStatePanelTitle: PropTypes.string,\n /**\n * Message of the EmptyStatePanel\n */\n emptyStatePanelMessage: PropTypes.string,\n /**\n * Empty Panel custom Icon\n */\n emptyStatePanelIcon: PropTypes.node,\n /**\n * Labels to apply to the Panel\n */\n labels: PropTypes.shape({\n /**\n * Labels to apply to the groups separating newer and older notifications\n */\n notificationGroupHeader: {\n olderNotifications: PropTypes.string,\n newNotifications: PropTypes.string,\n },\n /**\n * Labels to apply to the element of the New Notifications Indicator\n */\n notificationIndicator: {\n label: PropTypes.string,\n buttonLabel: PropTypes.string,\n },\n }),\n /**\n * Function to be supplied to the notification update button\n */\n newNotificationsButtonAction: PropTypes.func,\n /**\n * The locale to be used on the notification date, if undefined it will use the one from the HvProvider\n */\n locale: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: \"HvNotificationPanel\" })(HvNotificationPanel);\n"],"file":"NotificationPanel.js"}
1
+ {"version":3,"sources":["../../../src/NotificationPanel/NotificationPanel.js"],"names":["React","useState","useEffect","PropTypes","clsx","dayjs","deprecatedPropType","withStyles","HvPanel","HvActionBar","HvDropDownMenu","setId","useLabels","useLocale","styles","Notification","EmptyStatePanel","NotificationsIndicator","DEFAULT_LABELS","notificationGroupHeader","newNotifications","olderNotifications","notificationIndicator","label","buttonLabel","getGenericLocale","locale","includes","substr","indexOf","importAndLoadLocale","then","catch","genericLocale","console","warn","HvNotificationPanel","id","className","classes","open","footer","notifications","hasNewNotifications","emptyStatePanelTitle","emptyStatePanelMessage","emptyStatePanelIcon","labelsProp","labels","newNotificationsButtonAction","localeProp","others","localeFromProvider","undefined","highlighted","setHighlighted","isExpanded","setIsExpanded","isLocaleLoaded","setIsLocaleLoaded","isMounted","generateNotificationsActions","notificationId","onToggle","actions","expand","dList","values","event","item","callback","s","dropDownMenuProps","notificationElementGenerator","notificationsToRender","map","notification","notificationIsHighlighted","title","isRead","icon","date","onClick","onKeyPress","hasNotifications","length","renderNotifications","root","closed","panel","emptyState","actionBarRoot","actionBar","propTypes","string","bool","shape","notificationsIndicator","isRequired","arrayOf","oneOfType","number","object","element","func","action","instanceOf","Object","node","name"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport dayjs from \"dayjs\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport {\n HvPanel,\n HvActionBar,\n HvDropDownMenu,\n setId,\n useLabels,\n useLocale,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport styles from \"./styles\";\n\nimport Notification from \"./Notification\";\nimport EmptyStatePanel from \"./EmptyStatePanel\";\nimport NotificationsIndicator from \"./NotificationsIndicator\";\n\nconst DEFAULT_LABELS = {\n notificationGroupHeader: {\n newNotifications: \"New\",\n olderNotifications: \"Earlier\",\n },\n notificationIndicator: {\n label: \"You have new notifications\",\n buttonLabel: \"Update\",\n },\n};\n\n/**\n * Obtains a simplified locale, if possible, e.g: \"en-US\" returns \"en\".\n *\n * @param {string} locale - The locale to be used\n * @returns The more generic locale if found\n */\nexport const getGenericLocale = (locale) =>\n locale.includes(\"-\") && locale.substr(0, locale.indexOf(\"-\"));\n\n/**\n * Imports and load the received locale in order to be used by dayjs. If the provided locale or a generic one\n * obtained is not possible to load, then dayjs will fallback to its default.\n *\n * @param {string} locale - The locale to be used\n */\nconst importAndLoadLocale = async (locale) => {\n await import(`dayjs/locale/${locale}.js`)\n .then(() => {\n dayjs.locale(locale);\n })\n .catch(async () => {\n const genericLocale = getGenericLocale(locale);\n await import(`dayjs/locale/${genericLocale}.js`)\n .then(() => dayjs.locale(genericLocale))\n // eslint-disable-next-line no-console\n .catch(() => console.warn(`Unable to load locale: ${locale}. Falling back to the default`));\n });\n};\n\n/**\n * Notification Panel displays all of read and unread notifications. Still in development\n */\nconst HvNotificationPanel = ({\n id,\n className,\n classes,\n open,\n footer,\n notifications,\n hasNewNotifications = false,\n emptyStatePanelTitle = \"No notifications\",\n emptyStatePanelMessage = \"You currently have no notifications.\",\n emptyStatePanelIcon,\n labels: labelsProp,\n newNotificationsButtonAction,\n locale: localeProp,\n ...others\n}) => {\n const localeFromProvider = useLocale();\n\n const locale = localeProp || localeFromProvider;\n\n const [highlighted, setHighlighted] = useState(undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLocaleLoaded, setIsLocaleLoaded] = useState(false);\n\n useEffect(() => {\n // We're using this mount logic to avoid potential memory leak problems.\n let isMounted = true;\n\n if (!isLocaleLoaded) {\n importAndLoadLocale(locale).then(() => {\n if (isMounted) {\n setIsLocaleLoaded(true);\n }\n });\n }\n return () => {\n isMounted = false;\n };\n });\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const generateNotificationsActions = (notificationId, onToggle, actions) => {\n const expand = notificationId === highlighted;\n const dList = [...actions.values];\n return (\n <HvDropDownMenu\n expanded={expand}\n onClick={(event, item) => {\n setHighlighted(undefined);\n item?.callback?.(event, notificationId);\n }}\n dataList={dList}\n onToggle={(event, s) => {\n onToggle?.(event, s);\n if (s) {\n setHighlighted(notificationId);\n } else {\n setHighlighted(undefined);\n }\n setIsExpanded(!isExpanded);\n }}\n {...actions.dropDownMenuProps}\n />\n );\n };\n\n const notificationElementGenerator = (notificationsToRender) => {\n return notificationsToRender.map((notification) => {\n const notificationIsHighlighted = highlighted === notification.id;\n return (\n <Notification\n key={notification.id}\n notificationId={notification.id}\n title={notification.title}\n isRead={notification.isRead}\n icon={notification.icon}\n date={notification.date}\n onClick={notification.onClick}\n onKeyPress={notification.onKeyPress}\n rightContainer={generateNotificationsActions(\n notification.id,\n notification.onToggle,\n notification.actions\n )}\n isHighlighted={notificationIsHighlighted}\n locale={locale}\n />\n );\n });\n };\n\n const hasNotifications = notifications.length > 0;\n\n const renderNotifications = (notificationsToRender) =>\n notificationElementGenerator(notificationsToRender);\n\n return (\n <HvPanel\n id={id}\n className={clsx(className, classes.root, {\n [classes.closed]: open === false,\n [classes.open]: open,\n })}\n {...others}\n >\n {hasNewNotifications && (\n <NotificationsIndicator\n labels={labels.notificationIndicator}\n onClick={newNotificationsButtonAction}\n />\n )}\n {hasNotifications ? (\n <div className={classes.panel}>\n {notifications.length > 0 && renderNotifications(notifications)}\n </div>\n ) : (\n <EmptyStatePanel\n id={setId(id, \"empty-state\")}\n title={emptyStatePanelTitle}\n message={emptyStatePanelMessage}\n icon={emptyStatePanelIcon}\n className={classes.emptyState}\n />\n )}\n {footer && (\n <HvActionBar\n id={setId(id, \"action-bar\")}\n classes={{\n root: classes.actionBarRoot,\n }}\n className={classes.actionBar}\n >\n {footer}\n </HvActionBar>\n )}\n </HvPanel>\n );\n};\n\nHvNotificationPanel.propTypes = {\n /**\n * Id to be applied to the root node of the panel.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied to the root element.\n */\n className: PropTypes.string,\n /**\n * 'true' if panel is open or 'false' if the panel is not open\n *\n * @deprecated This logic should be external, i.e. using the HvAppSwitcherPanel inside a Drawer component.\n */\n open: deprecatedPropType(PropTypes.bool),\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * styles object applied to the root\n */\n root: PropTypes.string,\n /**\n * styles object applied to the root when closed\n */\n closed: PropTypes.string,\n /**\n * styles object applied to the root when open\n */\n open: PropTypes.string,\n /**\n * styles object applied to the panel\n */\n panel: PropTypes.string,\n /**\n * styles object applied to the action bar\n */\n actionBar: PropTypes.string,\n /**\n * styles object applied to the root of the action bar\n */\n actionBarRoot: PropTypes.string,\n /**\n * styles object applied to the new notification indicator\n */\n notificationsIndicator: PropTypes.string,\n /**\n * styles object applied to the empty state panel\n */\n emptyState: PropTypes.string,\n }).isRequired,\n /**\n * The properties of the notifications to be rendered in the Panel.\n */\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n date: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n icon: PropTypes.element,\n onClick: PropTypes.func,\n onKeyPress: PropTypes.func,\n onToggle: PropTypes.func,\n actions: PropTypes.shape({\n label: PropTypes.bool,\n action: PropTypes.string,\n callback: PropTypes.func,\n dropDownMenuProps: PropTypes.instanceOf(Object),\n }),\n })\n ),\n /**\n * Whether to render the new notifications indicator\n */\n hasNewNotifications: PropTypes.bool,\n /**\n * Action buttons to render in footer\n */\n footer: PropTypes.node,\n /**\n * Title of the EmptyStatePanel\n */\n emptyStatePanelTitle: PropTypes.string,\n /**\n * Message of the EmptyStatePanel\n */\n emptyStatePanelMessage: PropTypes.string,\n /**\n * Empty Panel custom Icon\n */\n emptyStatePanelIcon: PropTypes.node,\n /**\n * Labels to apply to the Panel\n */\n labels: PropTypes.shape({\n /**\n * Labels to apply to the groups separating newer and older notifications\n */\n notificationGroupHeader: {\n olderNotifications: PropTypes.string,\n newNotifications: PropTypes.string,\n },\n /**\n * Labels to apply to the element of the New Notifications Indicator\n */\n notificationIndicator: {\n label: PropTypes.string,\n buttonLabel: PropTypes.string,\n },\n }),\n /**\n * Function to be supplied to the notification update button\n */\n newNotificationsButtonAction: PropTypes.func,\n /**\n * The locale to be used on the notification date, if undefined it will use the one from the HvProvider\n */\n locale: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: \"HvNotificationPanel\" })(HvNotificationPanel);\n"],"file":"NotificationPanel.js"}
@@ -32,7 +32,7 @@ interface Header {
32
32
  interface Value {
33
33
  label: string;
34
34
  action: string;
35
- callback?: (notificationId: string) => void;
35
+ callback?: (event: Event, notificationId: string) => void;
36
36
  }
37
37
 
38
38
  interface actions {
@@ -97,11 +97,11 @@ const HvNotificationPanel = _ref => {
97
97
  const dList = [...actions.values];
98
98
  return /*#__PURE__*/React.createElement(HvDropDownMenu, _extends({
99
99
  expanded: expand,
100
- onClick: (e, item) => {
100
+ onClick: (event, item) => {
101
101
  var _item$callback;
102
102
 
103
103
  setHighlighted(undefined);
104
- item === null || item === void 0 ? void 0 : (_item$callback = item.callback) === null || _item$callback === void 0 ? void 0 : _item$callback.call(item, notificationId);
104
+ item === null || item === void 0 ? void 0 : (_item$callback = item.callback) === null || _item$callback === void 0 ? void 0 : _item$callback.call(item, event, notificationId);
105
105
  },
106
106
  dataList: dList,
107
107
  onToggle: (event, s) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/NotificationPanel/NotificationPanel.js"],"names":["React","useState","useEffect","PropTypes","clsx","dayjs","deprecatedPropType","withStyles","HvPanel","HvActionBar","HvDropDownMenu","setId","useLabels","useLocale","styles","Notification","EmptyStatePanel","NotificationsIndicator","DEFAULT_LABELS","notificationGroupHeader","newNotifications","olderNotifications","notificationIndicator","label","buttonLabel","getGenericLocale","locale","includes","substr","indexOf","importAndLoadLocale","then","catch","genericLocale","console","warn","HvNotificationPanel","id","className","classes","open","footer","notifications","hasNewNotifications","emptyStatePanelTitle","emptyStatePanelMessage","emptyStatePanelIcon","labels","labelsProp","newNotificationsButtonAction","localeProp","others","localeFromProvider","highlighted","setHighlighted","undefined","isExpanded","setIsExpanded","isLocaleLoaded","setIsLocaleLoaded","isMounted","generateNotificationsActions","notificationId","onToggle","actions","expand","dList","values","e","item","callback","event","s","dropDownMenuProps","notificationElementGenerator","notificationsToRender","map","notification","notificationIsHighlighted","title","isRead","icon","date","onClick","onKeyPress","hasNotifications","length","renderNotifications","root","closed","panel","emptyState","actionBarRoot","actionBar","propTypes","string","bool","shape","notificationsIndicator","isRequired","arrayOf","oneOfType","number","object","element","func","action","instanceOf","Object","node","name"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport dayjs from \"dayjs\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport {\n HvPanel,\n HvActionBar,\n HvDropDownMenu,\n setId,\n useLabels,\n useLocale,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport styles from \"./styles\";\n\nimport Notification from \"./Notification\";\nimport EmptyStatePanel from \"./EmptyStatePanel\";\nimport NotificationsIndicator from \"./NotificationsIndicator\";\n\nconst DEFAULT_LABELS = {\n notificationGroupHeader: {\n newNotifications: \"New\",\n olderNotifications: \"Earlier\",\n },\n notificationIndicator: {\n label: \"You have new notifications\",\n buttonLabel: \"Update\",\n },\n};\n\n/**\n * Obtains a simplified locale, if possible, e.g: \"en-US\" returns \"en\".\n *\n * @param {string} locale - The locale to be used\n * @returns The more generic locale if found\n */\nexport const getGenericLocale = (locale) =>\n locale.includes(\"-\") && locale.substr(0, locale.indexOf(\"-\"));\n\n/**\n * Imports and load the received locale in order to be used by dayjs. If the provided locale or a generic one\n * obtained is not possible to load, then dayjs will fallback to its default.\n *\n * @param {string} locale - The locale to be used\n */\nconst importAndLoadLocale = async (locale) => {\n await import(`dayjs/locale/${locale}.js`)\n .then(() => {\n dayjs.locale(locale);\n })\n .catch(async () => {\n const genericLocale = getGenericLocale(locale);\n await import(`dayjs/locale/${genericLocale}.js`)\n .then(() => dayjs.locale(genericLocale))\n // eslint-disable-next-line no-console\n .catch(() => console.warn(`Unable to load locale: ${locale}. Falling back to the default`));\n });\n};\n\n/**\n * Notification Panel displays all of read and unread notifications. Still in development\n */\nconst HvNotificationPanel = ({\n id,\n className,\n classes,\n open,\n footer,\n notifications,\n hasNewNotifications = false,\n emptyStatePanelTitle = \"No notifications\",\n emptyStatePanelMessage = \"You currently have no notifications.\",\n emptyStatePanelIcon,\n labels: labelsProp,\n newNotificationsButtonAction,\n locale: localeProp,\n ...others\n}) => {\n const localeFromProvider = useLocale();\n\n const locale = localeProp || localeFromProvider;\n\n const [highlighted, setHighlighted] = useState(undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLocaleLoaded, setIsLocaleLoaded] = useState(false);\n\n useEffect(() => {\n // We're using this mount logic to avoid potential memory leak problems.\n let isMounted = true;\n\n if (!isLocaleLoaded) {\n importAndLoadLocale(locale).then(() => {\n if (isMounted) {\n setIsLocaleLoaded(true);\n }\n });\n }\n return () => {\n isMounted = false;\n };\n });\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const generateNotificationsActions = (notificationId, onToggle, actions) => {\n const expand = notificationId === highlighted;\n const dList = [...actions.values];\n return (\n <HvDropDownMenu\n expanded={expand}\n onClick={(e, item) => {\n setHighlighted(undefined);\n item?.callback?.(notificationId);\n }}\n dataList={dList}\n onToggle={(event, s) => {\n onToggle?.(event, s);\n if (s) {\n setHighlighted(notificationId);\n } else {\n setHighlighted(undefined);\n }\n setIsExpanded(!isExpanded);\n }}\n {...actions.dropDownMenuProps}\n />\n );\n };\n\n const notificationElementGenerator = (notificationsToRender) => {\n return notificationsToRender.map((notification) => {\n const notificationIsHighlighted = highlighted === notification.id;\n return (\n <Notification\n key={notification.id}\n notificationId={notification.id}\n title={notification.title}\n isRead={notification.isRead}\n icon={notification.icon}\n date={notification.date}\n onClick={notification.onClick}\n onKeyPress={notification.onKeyPress}\n rightContainer={generateNotificationsActions(\n notification.id,\n notification.onToggle,\n notification.actions\n )}\n isHighlighted={notificationIsHighlighted}\n locale={locale}\n />\n );\n });\n };\n\n const hasNotifications = notifications.length > 0;\n\n const renderNotifications = (notificationsToRender) =>\n notificationElementGenerator(notificationsToRender);\n\n return (\n <HvPanel\n id={id}\n className={clsx(className, classes.root, {\n [classes.closed]: open === false,\n [classes.open]: open,\n })}\n {...others}\n >\n {hasNewNotifications && (\n <NotificationsIndicator\n labels={labels.notificationIndicator}\n onClick={newNotificationsButtonAction}\n />\n )}\n {hasNotifications ? (\n <div className={classes.panel}>\n {notifications.length > 0 && renderNotifications(notifications)}\n </div>\n ) : (\n <EmptyStatePanel\n id={setId(id, \"empty-state\")}\n title={emptyStatePanelTitle}\n message={emptyStatePanelMessage}\n icon={emptyStatePanelIcon}\n className={classes.emptyState}\n />\n )}\n {footer && (\n <HvActionBar\n id={setId(id, \"action-bar\")}\n classes={{\n root: classes.actionBarRoot,\n }}\n className={classes.actionBar}\n >\n {footer}\n </HvActionBar>\n )}\n </HvPanel>\n );\n};\n\nHvNotificationPanel.propTypes = {\n /**\n * Id to be applied to the root node of the panel.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied to the root element.\n */\n className: PropTypes.string,\n /**\n * 'true' if panel is open or 'false' if the panel is not open\n *\n * @deprecated This logic should be external, i.e. using the HvAppSwitcherPanel inside a Drawer component.\n */\n open: deprecatedPropType(PropTypes.bool),\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * styles object applied to the root\n */\n root: PropTypes.string,\n /**\n * styles object applied to the root when closed\n */\n closed: PropTypes.string,\n /**\n * styles object applied to the root when open\n */\n open: PropTypes.string,\n /**\n * styles object applied to the panel\n */\n panel: PropTypes.string,\n /**\n * styles object applied to the action bar\n */\n actionBar: PropTypes.string,\n /**\n * styles object applied to the root of the action bar\n */\n actionBarRoot: PropTypes.string,\n /**\n * styles object applied to the new notification indicator\n */\n notificationsIndicator: PropTypes.string,\n /**\n * styles object applied to the empty state panel\n */\n emptyState: PropTypes.string,\n }).isRequired,\n /**\n * The properties of the notifications to be rendered in the Panel.\n */\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n date: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n icon: PropTypes.element,\n onClick: PropTypes.func,\n onKeyPress: PropTypes.func,\n onToggle: PropTypes.func,\n actions: PropTypes.shape({\n label: PropTypes.bool,\n action: PropTypes.string,\n callback: PropTypes.func,\n dropDownMenuProps: PropTypes.instanceOf(Object),\n }),\n })\n ),\n /**\n * Whether to render the new notifications indicator\n */\n hasNewNotifications: PropTypes.bool,\n /**\n * Action buttons to render in footer\n */\n footer: PropTypes.node,\n /**\n * Title of the EmptyStatePanel\n */\n emptyStatePanelTitle: PropTypes.string,\n /**\n * Message of the EmptyStatePanel\n */\n emptyStatePanelMessage: PropTypes.string,\n /**\n * Empty Panel custom Icon\n */\n emptyStatePanelIcon: PropTypes.node,\n /**\n * Labels to apply to the Panel\n */\n labels: PropTypes.shape({\n /**\n * Labels to apply to the groups separating newer and older notifications\n */\n notificationGroupHeader: {\n olderNotifications: PropTypes.string,\n newNotifications: PropTypes.string,\n },\n /**\n * Labels to apply to the element of the New Notifications Indicator\n */\n notificationIndicator: {\n label: PropTypes.string,\n buttonLabel: PropTypes.string,\n },\n }),\n /**\n * Function to be supplied to the notification update button\n */\n newNotificationsButtonAction: PropTypes.func,\n /**\n * The locale to be used on the notification date, if undefined it will use the one from the HvProvider\n */\n locale: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: \"HvNotificationPanel\" })(HvNotificationPanel);\n"],"file":"NotificationPanel.js"}
1
+ {"version":3,"sources":["../../../src/NotificationPanel/NotificationPanel.js"],"names":["React","useState","useEffect","PropTypes","clsx","dayjs","deprecatedPropType","withStyles","HvPanel","HvActionBar","HvDropDownMenu","setId","useLabels","useLocale","styles","Notification","EmptyStatePanel","NotificationsIndicator","DEFAULT_LABELS","notificationGroupHeader","newNotifications","olderNotifications","notificationIndicator","label","buttonLabel","getGenericLocale","locale","includes","substr","indexOf","importAndLoadLocale","then","catch","genericLocale","console","warn","HvNotificationPanel","id","className","classes","open","footer","notifications","hasNewNotifications","emptyStatePanelTitle","emptyStatePanelMessage","emptyStatePanelIcon","labels","labelsProp","newNotificationsButtonAction","localeProp","others","localeFromProvider","highlighted","setHighlighted","undefined","isExpanded","setIsExpanded","isLocaleLoaded","setIsLocaleLoaded","isMounted","generateNotificationsActions","notificationId","onToggle","actions","expand","dList","values","event","item","callback","s","dropDownMenuProps","notificationElementGenerator","notificationsToRender","map","notification","notificationIsHighlighted","title","isRead","icon","date","onClick","onKeyPress","hasNotifications","length","renderNotifications","root","closed","panel","emptyState","actionBarRoot","actionBar","propTypes","string","bool","shape","notificationsIndicator","isRequired","arrayOf","oneOfType","number","object","element","func","action","instanceOf","Object","node","name"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport dayjs from \"dayjs\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport {\n HvPanel,\n HvActionBar,\n HvDropDownMenu,\n setId,\n useLabels,\n useLocale,\n} from \"@hitachivantara/uikit-react-core\";\n\nimport styles from \"./styles\";\n\nimport Notification from \"./Notification\";\nimport EmptyStatePanel from \"./EmptyStatePanel\";\nimport NotificationsIndicator from \"./NotificationsIndicator\";\n\nconst DEFAULT_LABELS = {\n notificationGroupHeader: {\n newNotifications: \"New\",\n olderNotifications: \"Earlier\",\n },\n notificationIndicator: {\n label: \"You have new notifications\",\n buttonLabel: \"Update\",\n },\n};\n\n/**\n * Obtains a simplified locale, if possible, e.g: \"en-US\" returns \"en\".\n *\n * @param {string} locale - The locale to be used\n * @returns The more generic locale if found\n */\nexport const getGenericLocale = (locale) =>\n locale.includes(\"-\") && locale.substr(0, locale.indexOf(\"-\"));\n\n/**\n * Imports and load the received locale in order to be used by dayjs. If the provided locale or a generic one\n * obtained is not possible to load, then dayjs will fallback to its default.\n *\n * @param {string} locale - The locale to be used\n */\nconst importAndLoadLocale = async (locale) => {\n await import(`dayjs/locale/${locale}.js`)\n .then(() => {\n dayjs.locale(locale);\n })\n .catch(async () => {\n const genericLocale = getGenericLocale(locale);\n await import(`dayjs/locale/${genericLocale}.js`)\n .then(() => dayjs.locale(genericLocale))\n // eslint-disable-next-line no-console\n .catch(() => console.warn(`Unable to load locale: ${locale}. Falling back to the default`));\n });\n};\n\n/**\n * Notification Panel displays all of read and unread notifications. Still in development\n */\nconst HvNotificationPanel = ({\n id,\n className,\n classes,\n open,\n footer,\n notifications,\n hasNewNotifications = false,\n emptyStatePanelTitle = \"No notifications\",\n emptyStatePanelMessage = \"You currently have no notifications.\",\n emptyStatePanelIcon,\n labels: labelsProp,\n newNotificationsButtonAction,\n locale: localeProp,\n ...others\n}) => {\n const localeFromProvider = useLocale();\n\n const locale = localeProp || localeFromProvider;\n\n const [highlighted, setHighlighted] = useState(undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLocaleLoaded, setIsLocaleLoaded] = useState(false);\n\n useEffect(() => {\n // We're using this mount logic to avoid potential memory leak problems.\n let isMounted = true;\n\n if (!isLocaleLoaded) {\n importAndLoadLocale(locale).then(() => {\n if (isMounted) {\n setIsLocaleLoaded(true);\n }\n });\n }\n return () => {\n isMounted = false;\n };\n });\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const generateNotificationsActions = (notificationId, onToggle, actions) => {\n const expand = notificationId === highlighted;\n const dList = [...actions.values];\n return (\n <HvDropDownMenu\n expanded={expand}\n onClick={(event, item) => {\n setHighlighted(undefined);\n item?.callback?.(event, notificationId);\n }}\n dataList={dList}\n onToggle={(event, s) => {\n onToggle?.(event, s);\n if (s) {\n setHighlighted(notificationId);\n } else {\n setHighlighted(undefined);\n }\n setIsExpanded(!isExpanded);\n }}\n {...actions.dropDownMenuProps}\n />\n );\n };\n\n const notificationElementGenerator = (notificationsToRender) => {\n return notificationsToRender.map((notification) => {\n const notificationIsHighlighted = highlighted === notification.id;\n return (\n <Notification\n key={notification.id}\n notificationId={notification.id}\n title={notification.title}\n isRead={notification.isRead}\n icon={notification.icon}\n date={notification.date}\n onClick={notification.onClick}\n onKeyPress={notification.onKeyPress}\n rightContainer={generateNotificationsActions(\n notification.id,\n notification.onToggle,\n notification.actions\n )}\n isHighlighted={notificationIsHighlighted}\n locale={locale}\n />\n );\n });\n };\n\n const hasNotifications = notifications.length > 0;\n\n const renderNotifications = (notificationsToRender) =>\n notificationElementGenerator(notificationsToRender);\n\n return (\n <HvPanel\n id={id}\n className={clsx(className, classes.root, {\n [classes.closed]: open === false,\n [classes.open]: open,\n })}\n {...others}\n >\n {hasNewNotifications && (\n <NotificationsIndicator\n labels={labels.notificationIndicator}\n onClick={newNotificationsButtonAction}\n />\n )}\n {hasNotifications ? (\n <div className={classes.panel}>\n {notifications.length > 0 && renderNotifications(notifications)}\n </div>\n ) : (\n <EmptyStatePanel\n id={setId(id, \"empty-state\")}\n title={emptyStatePanelTitle}\n message={emptyStatePanelMessage}\n icon={emptyStatePanelIcon}\n className={classes.emptyState}\n />\n )}\n {footer && (\n <HvActionBar\n id={setId(id, \"action-bar\")}\n classes={{\n root: classes.actionBarRoot,\n }}\n className={classes.actionBar}\n >\n {footer}\n </HvActionBar>\n )}\n </HvPanel>\n );\n};\n\nHvNotificationPanel.propTypes = {\n /**\n * Id to be applied to the root node of the panel.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied to the root element.\n */\n className: PropTypes.string,\n /**\n * 'true' if panel is open or 'false' if the panel is not open\n *\n * @deprecated This logic should be external, i.e. using the HvAppSwitcherPanel inside a Drawer component.\n */\n open: deprecatedPropType(PropTypes.bool),\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * styles object applied to the root\n */\n root: PropTypes.string,\n /**\n * styles object applied to the root when closed\n */\n closed: PropTypes.string,\n /**\n * styles object applied to the root when open\n */\n open: PropTypes.string,\n /**\n * styles object applied to the panel\n */\n panel: PropTypes.string,\n /**\n * styles object applied to the action bar\n */\n actionBar: PropTypes.string,\n /**\n * styles object applied to the root of the action bar\n */\n actionBarRoot: PropTypes.string,\n /**\n * styles object applied to the new notification indicator\n */\n notificationsIndicator: PropTypes.string,\n /**\n * styles object applied to the empty state panel\n */\n emptyState: PropTypes.string,\n }).isRequired,\n /**\n * The properties of the notifications to be rendered in the Panel.\n */\n notifications: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n isRead: PropTypes.bool.isRequired,\n date: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]).isRequired,\n icon: PropTypes.element,\n onClick: PropTypes.func,\n onKeyPress: PropTypes.func,\n onToggle: PropTypes.func,\n actions: PropTypes.shape({\n label: PropTypes.bool,\n action: PropTypes.string,\n callback: PropTypes.func,\n dropDownMenuProps: PropTypes.instanceOf(Object),\n }),\n })\n ),\n /**\n * Whether to render the new notifications indicator\n */\n hasNewNotifications: PropTypes.bool,\n /**\n * Action buttons to render in footer\n */\n footer: PropTypes.node,\n /**\n * Title of the EmptyStatePanel\n */\n emptyStatePanelTitle: PropTypes.string,\n /**\n * Message of the EmptyStatePanel\n */\n emptyStatePanelMessage: PropTypes.string,\n /**\n * Empty Panel custom Icon\n */\n emptyStatePanelIcon: PropTypes.node,\n /**\n * Labels to apply to the Panel\n */\n labels: PropTypes.shape({\n /**\n * Labels to apply to the groups separating newer and older notifications\n */\n notificationGroupHeader: {\n olderNotifications: PropTypes.string,\n newNotifications: PropTypes.string,\n },\n /**\n * Labels to apply to the element of the New Notifications Indicator\n */\n notificationIndicator: {\n label: PropTypes.string,\n buttonLabel: PropTypes.string,\n },\n }),\n /**\n * Function to be supplied to the notification update button\n */\n newNotificationsButtonAction: PropTypes.func,\n /**\n * The locale to be used on the notification date, if undefined it will use the one from the HvProvider\n */\n locale: PropTypes.string,\n};\n\nexport default withStyles(styles, { name: \"HvNotificationPanel\" })(HvNotificationPanel);\n"],"file":"NotificationPanel.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hitachivantara/uikit-react-lab",
3
- "version": "3.41.1",
3
+ "version": "3.41.4",
4
4
  "description": "A collection of contributed React components for the Hitachi Vantara's Design System.",
5
5
  "homepage": "https://github.com/lumada-design/hv-uikit-react",
6
6
  "license": "Apache-2.0",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@babel/runtime": "^7.16.3",
49
- "@hitachivantara/uikit-react-core": "^3.62.1",
49
+ "@hitachivantara/uikit-react-core": "^3.62.3",
50
50
  "@hitachivantara/uikit-react-icons": "^3.8.4",
51
51
  "@types/react-table": "^7.7.8",
52
52
  "clsx": "^1.1.1",
@@ -83,5 +83,5 @@
83
83
  "publishConfig": {
84
84
  "access": "public"
85
85
  },
86
- "gitHead": "96ff6466f799fddf1d9c175dcaf383837ba20ede"
86
+ "gitHead": "3f8d8cb90655098d4cf54eccb127a2c35bb759dd"
87
87
  }