From efc94169663b49d185ca30130cdcd7a93a39649c Mon Sep 17 00:00:00 2001 From: CD Cabrera Date: Tue, 10 Mar 2020 11:06:43 -0400 Subject: [PATCH] feat(toolbar,toolbarTypes): issues/76 add toolbar with SLA filter * toolbar, apply PF toolbar pattern for single select/dropdown * toolbarTypes, sla select/dropdown options --- public/locales/en-US.json | 8 ++ .../__tests__/__snapshots__/i18n.test.js.snap | 25 +++++ .../__snapshots__/toolbar.test.js.snap | 75 ++++++++++++++ .../__snapshots__/toolbarTypes.test.js.snap | 61 ++++++++++++ .../toolbar/__tests__/toolbar.test.js | 30 ++++++ .../toolbar/__tests__/toolbarTypes.test.js | 13 +++ src/components/toolbar/toolbar.js | 97 +++++++++++++++++++ src/components/toolbar/toolbarTypes.js | 36 +++++++ 8 files changed, 345 insertions(+) create mode 100644 src/components/toolbar/__tests__/__snapshots__/toolbar.test.js.snap create mode 100644 src/components/toolbar/__tests__/__snapshots__/toolbarTypes.test.js.snap create mode 100644 src/components/toolbar/__tests__/toolbar.test.js create mode 100644 src/components/toolbar/__tests__/toolbarTypes.test.js create mode 100644 src/components/toolbar/toolbar.js create mode 100644 src/components/toolbar/toolbarTypes.js diff --git a/public/locales/en-US.json b/public/locales/en-US.json index c5bd7e1a0..265638768 100644 --- a/public/locales/en-US.json +++ b/public/locales/en-US.json @@ -23,6 +23,14 @@ "physicalSocketsLabel": "Physical {{product}}", "thresholdLabel": "Subscription threshold" }, + "curiosity-toolbar": { + "slaCategory": "SLA", + "slaNone": "No SLA", + "slaPlaceholder": "Filter by SLA", + "slaPremium": "Premium", + "slaSelfSupport": "Self-Support", + "slaStandard": "Standard" + }, "curiosity-tour": { "emptyStateIconAlt": "{{appName}} logo", "emptyStateTitle": "{{appName}} is an early access beta", diff --git a/src/components/i18n/__tests__/__snapshots__/i18n.test.js.snap b/src/components/i18n/__tests__/__snapshots__/i18n.test.js.snap index 2c10ace87..b96e26f73 100644 --- a/src/components/i18n/__tests__/__snapshots__/i18n.test.js.snap +++ b/src/components/i18n/__tests__/__snapshots__/i18n.test.js.snap @@ -53,6 +53,31 @@ msgstr \\"\\" msgid \\"curiosity-graph.thresholdLabel\\" msgstr \\"\\" +#: src/components/toolbar/toolbar.js:68 +#: src/components/toolbar/toolbar.js:71 +msgid \\"curiosity-toolbar.slaCategory\\" +msgstr \\"\\" + +#: src/components/toolbar/toolbarTypes.js:22 +msgid \\"curiosity-toolbar.slaNone\\" +msgstr \\"\\" + +#: src/components/toolbar/toolbar.js:74 +msgid \\"curiosity-toolbar.slaPlaceholder\\" +msgstr \\"\\" + +#: src/components/toolbar/toolbarTypes.js:10 +msgid \\"curiosity-toolbar.slaPremium\\" +msgstr \\"\\" + +#: src/components/toolbar/toolbarTypes.js:18 +msgid \\"curiosity-toolbar.slaSelfSupport\\" +msgstr \\"\\" + +#: src/components/toolbar/toolbarTypes.js:14 +msgid \\"curiosity-toolbar.slaStandard\\" +msgstr \\"\\" + #: src/components/tourView/tourView.js:64 msgid \\"curiosity-tour.emptyStateButton\\" msgstr \\"\\" diff --git a/src/components/toolbar/__tests__/__snapshots__/toolbar.test.js.snap b/src/components/toolbar/__tests__/__snapshots__/toolbar.test.js.snap new file mode 100644 index 000000000..0ff678bd8 --- /dev/null +++ b/src/components/toolbar/__tests__/__snapshots__/toolbar.test.js.snap @@ -0,0 +1,75 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Toolbar Component should handle updating state and dispatching an sla filter: clear filters 1`] = ` +Object { + "filterSla": null, +} +`; + +exports[`Toolbar Component should handle updating state and dispatching an sla filter: sla selected 1`] = ` +Object { + "filterSla": Object { + "title": "t(curiosity-toolbar.slaPremium)", + "value": "premium", + }, +} +`; + +exports[`Toolbar Component should render a non-connected component: non-connected 1`] = ` + + + + + + + + + + ); + } +} + +Toolbar.propTypes = { + t: PropTypes.func, + viewId: PropTypes.string +}; + +Toolbar.defaultProps = { + t: helpers.noopTranslate, + viewId: 'toolbar' +}; + +const TranslatedToolbar = withTranslation()(Toolbar); + +export { TranslatedToolbar as default, TranslatedToolbar, Toolbar }; diff --git a/src/components/toolbar/toolbarTypes.js b/src/components/toolbar/toolbarTypes.js new file mode 100644 index 000000000..cf71e6396 --- /dev/null +++ b/src/components/toolbar/toolbarTypes.js @@ -0,0 +1,36 @@ +import { translate } from '../i18n/i18n'; +import { RHSM_API_QUERY_SLA_TYPES as SLA_TYPES } from '../../types/rhsmApiTypes'; + +const getOptionsType = (optionsType = 'sla') => { + if (optionsType === 'sla') { + return { + selected: null, + options: [ + { + title: translate('curiosity-toolbar.slaPremium'), + value: SLA_TYPES.PREMIUM + }, + { + title: translate('curiosity-toolbar.slaStandard'), + value: SLA_TYPES.STANDARD + }, + { + title: translate('curiosity-toolbar.slaSelfSupport'), + value: SLA_TYPES.SELF + }, + { + title: translate('curiosity-toolbar.slaNone'), + value: SLA_TYPES.NONE + } + ] + }; + } + + return { options: [] }; +}; + +const toolbarTypes = { + getOptions: getOptionsType +}; + +export { toolbarTypes as default, toolbarTypes, getOptionsType };