groovinads-ui 1.2.47 → 1.2.48

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.
@@ -0,0 +1,136 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, { useEffect, useState } from 'react'
3
+
4
+ // HOOKS
5
+ import { useTextFormatter } from '../../hooks';
6
+
7
+ // COMPONENTS
8
+ import { Dropdown } from 'react-bootstrap'
9
+ import { Icon } from '../Labels';
10
+ import { Button } from '../Button';
11
+ import DatePicker from 'react-datepicker';
12
+
13
+
14
+ export default function DropdownSimpleDatePicker({
15
+ className = '',
16
+ show,
17
+ setShow,
18
+ onToggle,
19
+ inputLabel = 'period',
20
+ overflow = false,
21
+ date,
22
+ setDate
23
+ }) {
24
+
25
+ const [editingDate, setEditingDate] = useState(date);
26
+
27
+ const [internalShow, setInternalShow] = useState(!!show);
28
+
29
+ const { capitalice } = useTextFormatter();
30
+
31
+ const isMobile = window?.innerWidth < 500;
32
+
33
+
34
+ const internalToggle = () => {
35
+ setInternalShow((prevShow) => !prevShow);
36
+ try {
37
+ onToggle();
38
+ } catch (error) { }
39
+ };
40
+
41
+ const closeDropdown = () => {
42
+ setInternalShow(false);
43
+ try {
44
+ setShow(false);
45
+ } catch (error) { }
46
+ };
47
+
48
+ const updateDateFilters = (date) => {
49
+ setEditingDate(date);
50
+ setTimeout(() => {
51
+ setDate(editingDate?.toString());
52
+ closeDropdown();
53
+ }, 100);
54
+ };
55
+
56
+ const clearDate = () => {
57
+ setEditingDate(null);
58
+ setDate(null);
59
+ closeDropdown();
60
+
61
+ }
62
+
63
+ useEffect(() => {
64
+ setInternalShow(!!show);
65
+ }, [show]);
66
+
67
+ return (
68
+ <Dropdown
69
+ show={internalShow}
70
+ className={className}
71
+ >
72
+ <Dropdown.Toggle
73
+ variant='toggle-filter'
74
+ onClick={internalToggle}
75
+ className={`btn-input w-100`}
76
+ >
77
+ <span className='dropdown-label'>{capitalice(inputLabel)}</span>
78
+ {editingDate ?
79
+ <span>
80
+ {editingDate.toString().split('00')[0]}
81
+ </span> :
82
+ <span></span>
83
+ }
84
+ <Icon iconName='angle-down' />
85
+
86
+ </Dropdown.Toggle>
87
+
88
+ <Dropdown.Menu
89
+ popperConfig={
90
+ overflow
91
+ ? {
92
+ strategy: 'fixed',
93
+ onFirstUpdate: () =>
94
+ window.dispatchEvent(new CustomEvent('scroll')),
95
+ }
96
+ : undefined
97
+ }
98
+ >
99
+ <Dropdown.Item as={'div'}>
100
+
101
+ <DatePicker
102
+ className='form-control form-search'
103
+ selected={editingDate}
104
+ onChange={updateDateFilters}
105
+ startDate={editingDate}
106
+ monthsShown={1}
107
+ inline
108
+ />
109
+
110
+ <div className='px-2 w-100'>
111
+ <Button
112
+ onClick={clearDate}
113
+ icon='calendar-circle-minus'
114
+ size='xs'
115
+ variant='terciary'
116
+ className='w-100'
117
+ >
118
+ Clear
119
+ </Button>
120
+ </div>
121
+ </Dropdown.Item>
122
+ </Dropdown.Menu>
123
+ </Dropdown>
124
+ )
125
+ }
126
+
127
+ DropdownSimpleDatePicker.propTypes = {
128
+ className: PropTypes.string,
129
+ show: PropTypes.bool,
130
+ setShow: PropTypes.func,
131
+ onToggle: PropTypes.func,
132
+ inputLabel: PropTypes.string,
133
+ overflow: PropTypes.bool,
134
+ date: PropTypes.string,
135
+ setDate: PropTypes.func,
136
+ };
@@ -1,6 +1,7 @@
1
1
  import DropdownComponent from './DropdownComponent';
2
2
  import DropdownFilter from './DropdownFilter';
3
3
  import DropdownMultiSelect from './DropdownMultiSelect';
4
+ import DropdownSimpleDatePicker from './DropdownSimpleDatePicker';
4
5
  import { DropdownDatePicker } from './DropdownsDatePicker/index';
5
6
 
6
- export { DropdownComponent, DropdownFilter, DropdownMultiSelect, DropdownDatePicker }
7
+ export { DropdownComponent, DropdownFilter, DropdownMultiSelect, DropdownDatePicker, DropdownSimpleDatePicker }
@@ -9,9 +9,10 @@ const Radio = ({
9
9
  children,
10
10
  className = '',
11
11
  id,
12
+ fullWidth = false,
12
13
  name,
13
14
  setStatus,
14
- status = false
15
+ status = false,
15
16
  }) => {
16
17
  const { toCamelCase } = useTextFormatter();
17
18
 
@@ -26,7 +27,7 @@ const Radio = ({
26
27
 
27
28
  return (
28
29
  <div className={`form-group form-check ${className}`}>
29
- <label className='radio'>
30
+ <label className={`radio ${fullWidth ? 'w-100' : ''}`}>
30
31
  <input
31
32
  type='radio'
32
33
  checked={status}
@@ -47,6 +48,7 @@ const Radio = ({
47
48
  Radio.propTypes = {
48
49
  className: PropTypes.string,
49
50
  id: PropTypes.string,
51
+ fullWidth: PropTypes.bool,
50
52
  name: PropTypes.string,
51
53
  setStatus: PropTypes.func,
52
54
  status: PropTypes.bool,
@@ -20,7 +20,7 @@ const Template = (args) => {
20
20
  useEffect(() => {
21
21
  console.log('dates From:', dateFrom);
22
22
  }, [dateFrom]);
23
-
23
+
24
24
  useEffect(() => {
25
25
  console.log('dates To:', dateTo);
26
26
  }, [ dateTo ]);
@@ -34,7 +34,7 @@ const Template = (args) => {
34
34
  // show={show}
35
35
  // setShow={setShow}
36
36
  // onToggle={handleToggle}
37
- variant='filter'
37
+ //variant='filter'
38
38
  dateFrom={dateFrom}
39
39
  setDateFrom={setDateFrom}
40
40
  dateTo={dateTo}
@@ -0,0 +1,32 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import DropdownSimpleDatePicker from '../components/Dropdowns/DropdownSimpleDatePicker';
3
+
4
+ export default {
5
+ title: 'Dropdown/DropdownSimpleDatePicker',
6
+ component: DropdownSimpleDatePicker,
7
+ };
8
+
9
+ const Template = (args) => {
10
+ const [show, setShow] = useState(false);
11
+
12
+ const [dateFrom, setDateFrom] = useState('');
13
+ const [dateTo, setDateTo] = useState('');
14
+
15
+
16
+ return (
17
+ <>
18
+ <button onClick={() => setShow(!show)}>Toggle</button>
19
+ <div className='col-2'>
20
+ <DropdownSimpleDatePicker
21
+ {...args}
22
+ dateFrom={dateFrom}
23
+ setDateFrom={setDateFrom}
24
+ date={dateTo}
25
+ setDate={setDateTo}
26
+ />
27
+ </div>
28
+ </>
29
+ );
30
+ };
31
+
32
+ export const Default = Template.bind({});