From 7862c43752cdae764d79584c96249df1778f2856 Mon Sep 17 00:00:00 2001 From: David Ralph Date: Mon, 30 Nov 2020 16:47:22 +0000 Subject: [PATCH] unfinished birthday greeting feature --- package.json | 1 + .../settings/sections/GreetingSettings.jsx | 45 +++++++++++++++++++ src/components/modals/tabs/Settings.jsx | 11 +---- src/components/widgets/greeting/Greeting.jsx | 4 ++ 4 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 src/components/modals/settings/sections/GreetingSettings.jsx diff --git a/package.json b/package.json index bbe04067..c75c9060 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "react": "17.0.1", "react-clock": "^2.4.0", "react-color-gradient-picker": "^0.1.2", + "react-date-picker": "^8.0.5", "react-dom": "17.0.1", "react-modal": "3.12.1", "react-toastify": "6.1.0", diff --git a/src/components/modals/settings/sections/GreetingSettings.jsx b/src/components/modals/settings/sections/GreetingSettings.jsx new file mode 100644 index 00000000..eaf6238b --- /dev/null +++ b/src/components/modals/settings/sections/GreetingSettings.jsx @@ -0,0 +1,45 @@ +import React from 'react'; +import Section from '../Section'; +import Checkbox from '../Checkbox'; +import DatePicker from 'react-date-picker'; +import { toast } from 'react-toastify'; + +export default class GreetingSettings extends React.PureComponent { + constructor(...args) { + super(...args); + this.state = { + birthday: new Date(localStorage.getItem('birthday')) || new Date() + }; + } + + resetItem(type) { + switch (type) { + case 'greeting': document.getElementById('greetingName').value = ''; break; + default: break; + } + toast(this.props.toastLanguage.reset); + } + + changeDate(data) { + if (data === 'reset') return; //soon + localStorage.setItem('birthday', data); + this.setState({ birthday: data }); + } + + render() { + return ( +
+ + +
    +

    {this.props.language.greeting.name} this.resetItem('greeting')}>{this.props.language.reset}

    + +
+
    +

    Birthday Date this.changeDate('reset')}>{this.props.language.reset}

    + this.changeDate(data)} value={this.state.birthday}/> +
+
+ ); + } +} \ No newline at end of file diff --git a/src/components/modals/tabs/Settings.jsx b/src/components/modals/tabs/Settings.jsx index ae6e75d2..826ef6b6 100644 --- a/src/components/modals/tabs/Settings.jsx +++ b/src/components/modals/tabs/Settings.jsx @@ -8,11 +8,11 @@ import { toast } from 'react-toastify'; import BackgroundSettings from '../settings/sections/BackgroundSettings'; import SearchSettings from '../settings/sections/SearchSettings'; import LanguageSettings from '../settings/sections/LanguageSettings'; +import GreetingSettings from '../settings/sections/GreetingSettings'; export default class Settings extends React.PureComponent { resetItem(type) { switch (type) { - case 'greeting': document.getElementById('greetingName').value = ''; break; case 'css': document.getElementById('customcss').value = ''; break; default: break; } @@ -54,14 +54,7 @@ export default class Settings extends React.PureComponent { -
- - -
    -

    {this.props.language.greeting.name} this.resetItem('greeting')}>{this.props.language.reset}

    - -
-
+
diff --git a/src/components/widgets/greeting/Greeting.jsx b/src/components/widgets/greeting/Greeting.jsx index 40fb121c..91a461bf 100644 --- a/src/components/widgets/greeting/Greeting.jsx +++ b/src/components/widgets/greeting/Greeting.jsx @@ -47,6 +47,10 @@ export default class Greeting extends React.PureComponent { if (custom === 'false') name = name.replace(',', ''); + // Birthday + const birth = new Date(localStorage.getItem('birthday')); + if (birth.getDate() === now.getDate() && birth.getMonth() === now.getMonth() && birth.getFullYear() !== 1001) message = 'Happy Birthday'; + // Set the state to the greeting string this.setState({ greeting: `${message}${name}`