forstok-ui-lib 5.2.31 → 5.2.38
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/dist/index.css +1 -0
- package/dist/index.d.ts +34 -1
- package/dist/index.js +410 -226
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +428 -244
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -1
- package/src/assets/index.ts +2 -1
- package/src/assets/javascripts/helper.ts +11 -0
- package/src/components/date/daterange.tsx +283 -0
- package/src/components/date/styles.css +3 -0
- package/src/components/date/styles.ts +401 -0
- package/src/components/date/typed.ts +1 -0
- package/src/components/datetime/index.tsx +22 -0
- package/src/components/datetime/styles.ts +5 -0
- package/src/components/index.ts +3 -0
- package/src/index.ts +2 -1
- package/src/maps/common.ts +10 -0
- package/src/maps/index.ts +1 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import styled, { css } from 'styled-components';
|
|
2
|
+
import { dropBase } from '../../assets';
|
|
3
|
+
|
|
4
|
+
const DateRangeWrapperStyles = css`
|
|
5
|
+
align-items: center;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex: 1;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
height: 100%;
|
|
10
|
+
`
|
|
11
|
+
const SelectionDateActiveStyles = css`
|
|
12
|
+
background-color: var(--act-clr-bg);
|
|
13
|
+
color: var(--sec-clr);
|
|
14
|
+
`
|
|
15
|
+
const getSelectionDateModifiedStyled = ({ $activated }:{ $activated?: boolean }) => {
|
|
16
|
+
if ($activated) {
|
|
17
|
+
return SelectionDateActiveStyles
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const getDateRangeMenuContainerModifiedStyled = ({ $mode }:{ $mode: string} ) => {
|
|
21
|
+
let style = ``
|
|
22
|
+
if ($mode === 'filterorder') {
|
|
23
|
+
style += `
|
|
24
|
+
width: auto;
|
|
25
|
+
transform: translateX(-50%);
|
|
26
|
+
${DateRangeSelection} {
|
|
27
|
+
text-align: center;
|
|
28
|
+
}
|
|
29
|
+
@media (min-width: 768px) {
|
|
30
|
+
width: auto;
|
|
31
|
+
left: 50% !important;
|
|
32
|
+
transform: translateX(-50%);
|
|
33
|
+
}
|
|
34
|
+
@media (min-width: 1024px) {
|
|
35
|
+
width: auto;
|
|
36
|
+
}
|
|
37
|
+
@media (min-width: 1280px) {
|
|
38
|
+
width: 660px;
|
|
39
|
+
${DateRangeSelection} {
|
|
40
|
+
text-align: left;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
`
|
|
44
|
+
} else if ($mode ==='filterdashboard') {
|
|
45
|
+
style += `
|
|
46
|
+
width: auto;
|
|
47
|
+
left: 50% !important;
|
|
48
|
+
transform: translateX(-50%);
|
|
49
|
+
${DateRangeSelection} {
|
|
50
|
+
text-align: center;
|
|
51
|
+
}
|
|
52
|
+
@media (min-width: 768px) {
|
|
53
|
+
width: auto;
|
|
54
|
+
left: 50% !important;
|
|
55
|
+
transform: translateX(-50%);
|
|
56
|
+
}
|
|
57
|
+
@media (min-width: 1024px) {
|
|
58
|
+
width: auto;
|
|
59
|
+
}
|
|
60
|
+
@media (min-width: 1280px) {
|
|
61
|
+
width: 660px;
|
|
62
|
+
left: 0 !important;
|
|
63
|
+
transform: none;
|
|
64
|
+
${DateRangeSelection} {
|
|
65
|
+
text-align: left;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
`
|
|
69
|
+
} else if ($mode === 'filterordertofulfill') {
|
|
70
|
+
style += `
|
|
71
|
+
width: auto;
|
|
72
|
+
left: 50% !important;
|
|
73
|
+
transform: translateX(-50%);
|
|
74
|
+
${DateRangeSelection} {
|
|
75
|
+
text-align: center;
|
|
76
|
+
}
|
|
77
|
+
@media (min-width: 768px) {
|
|
78
|
+
width: auto;
|
|
79
|
+
left: unset !important;
|
|
80
|
+
right: 0;
|
|
81
|
+
transform: none;
|
|
82
|
+
}
|
|
83
|
+
@media (min-width: 1024px) {
|
|
84
|
+
width: auto;
|
|
85
|
+
}
|
|
86
|
+
@media (min-width: 1280px) {
|
|
87
|
+
width: 660px;
|
|
88
|
+
${DateRangeSelection} {
|
|
89
|
+
text-align: left;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
`
|
|
93
|
+
} else if ($mode === 'popuppayment') {
|
|
94
|
+
style += `
|
|
95
|
+
width: auto;
|
|
96
|
+
border-radius: var(--ter-rd);
|
|
97
|
+
`
|
|
98
|
+
}
|
|
99
|
+
return style
|
|
100
|
+
}
|
|
101
|
+
const getDateRangeControlModifiedStyled = ({ $mode, $size }:{ $mode: string, $size?: string }) => {
|
|
102
|
+
let style = ``
|
|
103
|
+
if ($size === 'small') {
|
|
104
|
+
style += `height: 30px;`
|
|
105
|
+
} else {
|
|
106
|
+
style += `height: 36px;`
|
|
107
|
+
}
|
|
108
|
+
if ($mode === 'filterorder' || $mode === 'filterdashboard' || $mode === 'filterordertofulfill') {
|
|
109
|
+
style += `
|
|
110
|
+
height: auto;
|
|
111
|
+
border: none;
|
|
112
|
+
`
|
|
113
|
+
} else if ($mode === 'popuppayment') {
|
|
114
|
+
style += `
|
|
115
|
+
height: 30px;
|
|
116
|
+
border-radius: var(--ter-rd);
|
|
117
|
+
background-color: hsl(0,0%,100%);
|
|
118
|
+
& ${DateRangeLabel} {
|
|
119
|
+
color: var(--inp-clr);
|
|
120
|
+
padding-bottom: 0;
|
|
121
|
+
}
|
|
122
|
+
& ${DateRangeIndicatorsContainer} {
|
|
123
|
+
padding: 0 4px;
|
|
124
|
+
}
|
|
125
|
+
`
|
|
126
|
+
}
|
|
127
|
+
return style
|
|
128
|
+
}
|
|
129
|
+
const getDateRangeContainerModifiedStyled = ({ $mode }:{ $mode: string }) => {
|
|
130
|
+
let style = `
|
|
131
|
+
&.is-shown {
|
|
132
|
+
& ${DateRangeMenuContainer} {
|
|
133
|
+
display: block;
|
|
134
|
+
}
|
|
135
|
+
> div button { box-shadow: var(--act-shd-bx); }
|
|
136
|
+
}
|
|
137
|
+
`
|
|
138
|
+
if ($mode === 'filter') {
|
|
139
|
+
style += `
|
|
140
|
+
width: 100%;
|
|
141
|
+
& ${DateRangeMenuContainer} {
|
|
142
|
+
width: 100%;
|
|
143
|
+
margin-left: 16px;
|
|
144
|
+
@media (min-width: 768px) {
|
|
145
|
+
width: calc(40vw - 32px);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
& ${DateRangeControl},
|
|
149
|
+
& ${DateRangeLabelContainer},
|
|
150
|
+
& ${DateRangeIndicatorsContainer} {
|
|
151
|
+
height: 14px;
|
|
152
|
+
}
|
|
153
|
+
& ${DateRangeLabelContainer} {
|
|
154
|
+
margin-left: 15px;
|
|
155
|
+
}
|
|
156
|
+
& ${DateRangeControl} {
|
|
157
|
+
border: 0;
|
|
158
|
+
}
|
|
159
|
+
& ${DateRangeLabel} {
|
|
160
|
+
padding-top: 3px;
|
|
161
|
+
}
|
|
162
|
+
& ${DateRangeIndicatorsContainer} {
|
|
163
|
+
margin-top: -5px;
|
|
164
|
+
}
|
|
165
|
+
& ${DateRangeIndicatorsArrowIconSvg} {
|
|
166
|
+
fill: #429ddf;
|
|
167
|
+
}
|
|
168
|
+
& .DateRangePicker__Month {
|
|
169
|
+
@media (min-width: 768px) {
|
|
170
|
+
width: calc((40vw - 182px) / 2);
|
|
171
|
+
margin: 0 10px;
|
|
172
|
+
}
|
|
173
|
+
@media (min-width: 1280px) {
|
|
174
|
+
width: calc((40vw - 234px) / 2);
|
|
175
|
+
margin: 0 20px;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
._refCheckboxContainer {
|
|
179
|
+
position: absolute;
|
|
180
|
+
top: 7px;
|
|
181
|
+
left: 0;
|
|
182
|
+
}
|
|
183
|
+
@media (min-width: 768px) {
|
|
184
|
+
width: 100%;
|
|
185
|
+
}
|
|
186
|
+
`
|
|
187
|
+
} else if ($mode === 'filterorder' || $mode === 'filterdashboard' || $mode === 'filterordertofulfill') {
|
|
188
|
+
style += `
|
|
189
|
+
width: auto !important;
|
|
190
|
+
`
|
|
191
|
+
} else if ($mode === 'popuppayment') {
|
|
192
|
+
style += `
|
|
193
|
+
width: 100% !important;
|
|
194
|
+
&.is-shown {
|
|
195
|
+
> div {
|
|
196
|
+
border: 1px solid var(--pri-clr-ln__fc) !important;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
`
|
|
200
|
+
}
|
|
201
|
+
return style
|
|
202
|
+
}
|
|
203
|
+
const getDateRangeLabelModifiedStyled = ({ $size }: { $size?: string }) => {
|
|
204
|
+
if ($size === 'small') {
|
|
205
|
+
return `
|
|
206
|
+
font-size: 14px;
|
|
207
|
+
`
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const getDatePickerContainerModifiedStyled = ({ $isError }:{ $isError?: boolean }) => {
|
|
211
|
+
if ($isError) {
|
|
212
|
+
return `
|
|
213
|
+
input {
|
|
214
|
+
border:1px solid var(--err-clr-ln) !important;
|
|
215
|
+
}
|
|
216
|
+
`
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export const DateRangeMenuContainer = styled.section<{ $mode: string }>`
|
|
221
|
+
${dropBase}
|
|
222
|
+
top:100%;
|
|
223
|
+
margin: 8px 0;
|
|
224
|
+
position:absolute;
|
|
225
|
+
z-index: 999;
|
|
226
|
+
width: 100%;
|
|
227
|
+
display: none;
|
|
228
|
+
@media (min-width: 768px) {
|
|
229
|
+
width: 45vw;
|
|
230
|
+
}
|
|
231
|
+
@media (min-width: 1024px) {
|
|
232
|
+
width: 39vw;
|
|
233
|
+
}
|
|
234
|
+
@media (min-width: 1280px) {
|
|
235
|
+
width: 660px;
|
|
236
|
+
}
|
|
237
|
+
${getDateRangeMenuContainerModifiedStyled}
|
|
238
|
+
`
|
|
239
|
+
export const DateRangeControl = styled.div<{ $mode: string, $size?: string }>`
|
|
240
|
+
${DateRangeWrapperStyles}
|
|
241
|
+
border: 1px solid var(--ck-clr-ln);
|
|
242
|
+
border-radius: var(--ter-rd);
|
|
243
|
+
cursor: pointer;
|
|
244
|
+
justify-content: space-between;
|
|
245
|
+
${getDateRangeControlModifiedStyled}
|
|
246
|
+
`
|
|
247
|
+
export const DateRangeContainer = styled.section<{ $mode: string }>`
|
|
248
|
+
position: relative;
|
|
249
|
+
display: inline-grid;
|
|
250
|
+
width: 100%;
|
|
251
|
+
@media (min-width: 1024px) {
|
|
252
|
+
width: 220px;
|
|
253
|
+
}
|
|
254
|
+
@media (min-width: 1280px) {
|
|
255
|
+
width: 305px;
|
|
256
|
+
}
|
|
257
|
+
${getDateRangeContainerModifiedStyled}
|
|
258
|
+
`
|
|
259
|
+
export const DateRangeLabelContainer = styled.div`
|
|
260
|
+
${DateRangeWrapperStyles}
|
|
261
|
+
padding: 0 8px;
|
|
262
|
+
position: relative;
|
|
263
|
+
overflow: hidden;
|
|
264
|
+
|
|
265
|
+
`
|
|
266
|
+
export const DateRangeLabel = styled.div<{ $size?: string }>`
|
|
267
|
+
position: absolute;
|
|
268
|
+
top: 50%;
|
|
269
|
+
max-width: calc(100% - 8px);
|
|
270
|
+
color: initial;
|
|
271
|
+
margin: 0 2px;
|
|
272
|
+
overflow: hidden;
|
|
273
|
+
text-overflow: ellipsis;
|
|
274
|
+
white-space: nowrap;
|
|
275
|
+
transform: translateY(-50%);
|
|
276
|
+
padding-bottom: 2px;
|
|
277
|
+
font-weight: 400;
|
|
278
|
+
${getDateRangeLabelModifiedStyled}
|
|
279
|
+
`
|
|
280
|
+
export const DateRangeIndicatorsContainer= styled.div`
|
|
281
|
+
color: #757575;
|
|
282
|
+
display: flex;
|
|
283
|
+
padding: 0 8px;
|
|
284
|
+
transition: color 150ms;
|
|
285
|
+
`
|
|
286
|
+
export const DateRangeIndicatorsArrowIconSvg= styled.svg`
|
|
287
|
+
display: inline-block;
|
|
288
|
+
fill: currentColor;
|
|
289
|
+
stroke: currentColor;
|
|
290
|
+
stroke-width: 0;
|
|
291
|
+
`
|
|
292
|
+
export const DateRangeMenu = styled.div`
|
|
293
|
+
display: grid;
|
|
294
|
+
grid-auto-flow: row;
|
|
295
|
+
justify-content: center;
|
|
296
|
+
@media (min-width: 1280px) {
|
|
297
|
+
grid-template-columns: 112px 1fr;
|
|
298
|
+
}
|
|
299
|
+
`
|
|
300
|
+
export const DateRangeSelection = styled.aside`
|
|
301
|
+
display: inline-grid;
|
|
302
|
+
grid-auto-flow: column;
|
|
303
|
+
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
|
304
|
+
align-items: start;
|
|
305
|
+
font-size: 14px;
|
|
306
|
+
@media (min-width: 1280px) {
|
|
307
|
+
grid-auto-flow: row;
|
|
308
|
+
grid-template-rows: repeat(5, 35px [row-start]);
|
|
309
|
+
grid-row-gap: 1px;
|
|
310
|
+
border-right: 1px solid rgba(0, 0, 0, .1);
|
|
311
|
+
border-bottom: 0;
|
|
312
|
+
align-items: center;
|
|
313
|
+
}
|
|
314
|
+
`
|
|
315
|
+
export const SelectionDate = styled.div<{ $activated?: boolean }>`
|
|
316
|
+
cursor: pointer;
|
|
317
|
+
display: grid;
|
|
318
|
+
justify-self: stretch;
|
|
319
|
+
padding: 10px 8px;
|
|
320
|
+
border-right: 1px solid rgba(0, 0, 0, .1);
|
|
321
|
+
height: 100%;
|
|
322
|
+
align-items: center;
|
|
323
|
+
&:hover {
|
|
324
|
+
background-color: #ec5b62;
|
|
325
|
+
color: #fff;
|
|
326
|
+
}
|
|
327
|
+
@media (min-width: 1280px) {
|
|
328
|
+
height: auto;
|
|
329
|
+
border-right: 0;
|
|
330
|
+
}
|
|
331
|
+
${getSelectionDateModifiedStyled}
|
|
332
|
+
`
|
|
333
|
+
export const DateRangeAside = styled.aside`
|
|
334
|
+
display: grid;
|
|
335
|
+
width: 100%;
|
|
336
|
+
grid-column-gap: 10px;
|
|
337
|
+
grid-row-gap: 0;
|
|
338
|
+
padding: 8px;
|
|
339
|
+
border-top: 1px solid rgba(0, 0, 0, .1);
|
|
340
|
+
justify-items: right;
|
|
341
|
+
grid-auto-flow: column;
|
|
342
|
+
grid-template-columns: 1fr max-content;
|
|
343
|
+
justify-content: right;
|
|
344
|
+
align-items: center;
|
|
345
|
+
> div {
|
|
346
|
+
display: grid;
|
|
347
|
+
grid-auto-flow: column;
|
|
348
|
+
grid-gap: 8px;
|
|
349
|
+
}
|
|
350
|
+
`
|
|
351
|
+
export const DateContainer = styled.div<{ $isError?: boolean }>`
|
|
352
|
+
position: relative;
|
|
353
|
+
.react-datepicker-wrapper {
|
|
354
|
+
width: 100%;
|
|
355
|
+
}
|
|
356
|
+
${getDatePickerContainerModifiedStyled}
|
|
357
|
+
`
|
|
358
|
+
export const DateIndicatorContainer = styled.div`
|
|
359
|
+
position: absolute;
|
|
360
|
+
top: 5px;
|
|
361
|
+
right: 2px;
|
|
362
|
+
display: flex;
|
|
363
|
+
transition: color 150ms;
|
|
364
|
+
color: hsl(0, 0%, 80%);
|
|
365
|
+
padding: 0;
|
|
366
|
+
box-sizing: border-box;
|
|
367
|
+
min-height: 1px;
|
|
368
|
+
cursor: pointer;
|
|
369
|
+
&:hover {
|
|
370
|
+
color: hsl(0, 0%, 60%);
|
|
371
|
+
}
|
|
372
|
+
svg {
|
|
373
|
+
display: inline-block;
|
|
374
|
+
fill: currentColor;
|
|
375
|
+
line-height: 1;
|
|
376
|
+
stroke: currentColor;
|
|
377
|
+
stroke-width: 0;
|
|
378
|
+
}
|
|
379
|
+
`
|
|
380
|
+
export const DatePickerContainer = styled.div<{ $isError?: boolean }>`
|
|
381
|
+
.react-datepicker-wrapper {
|
|
382
|
+
width: 100%;
|
|
383
|
+
}
|
|
384
|
+
${getDatePickerContainerModifiedStyled}
|
|
385
|
+
`
|
|
386
|
+
export const DateRangePortalContainer = styled.div`
|
|
387
|
+
display: inline-block;
|
|
388
|
+
position: fixed;
|
|
389
|
+
top: 0;
|
|
390
|
+
left: 0;
|
|
391
|
+
z-index: 999;
|
|
392
|
+
&.is-shown {
|
|
393
|
+
& ${DateRangeMenuContainer} {
|
|
394
|
+
display: block;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
`
|
|
398
|
+
export const DateRangeIconContainer = styled.div`
|
|
399
|
+
display: flex;
|
|
400
|
+
padding: 0 0 0 12px;
|
|
401
|
+
`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TModerateDateFunction = (startDateObj: string, endDateObj: string, rangeDateObj: string, callback: () => void) => void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import moment from 'moment';
|
|
2
|
+
import { DateTimeContainer } from './styles';
|
|
3
|
+
|
|
4
|
+
const DateTimeComponent = ({ dateTimeData }:{ dateTimeData: string }) => {
|
|
5
|
+
const date = moment(dateTimeData, 'YYYY-MM-DD HH:mm:ss ZZ').format('D MMM YYYY,');
|
|
6
|
+
const time = moment(dateTimeData, 'YYYY-MM-DD HH:mm:ss ZZ').format('hh:mm A');
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<DateTimeContainer>
|
|
10
|
+
{
|
|
11
|
+
dateTimeData ? (
|
|
12
|
+
<>
|
|
13
|
+
<span>{date}</span>
|
|
14
|
+
<span>{time}</span>
|
|
15
|
+
</>
|
|
16
|
+
) : '-'
|
|
17
|
+
}
|
|
18
|
+
</DateTimeContainer>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default DateTimeComponent;
|
package/src/components/index.ts
CHANGED
|
@@ -20,11 +20,14 @@ export { default as UploadComponent } from './upload';
|
|
|
20
20
|
export { default as UploadDragDropComponent } from './upload/drag_drop';
|
|
21
21
|
export { default as TextAreaComponent } from './textarea';
|
|
22
22
|
export { default as TextAreaRefComponent } from './textarea/ref';
|
|
23
|
+
export { default as DateRangeComponent } from './date/daterange';
|
|
24
|
+
export { default as DateTimeComponent } from './datetime';
|
|
23
25
|
|
|
24
26
|
export * from './dropdown/typed';
|
|
25
27
|
export * from './message/typed';
|
|
26
28
|
export * from './popup/typed';
|
|
27
29
|
export * from './select/typed';
|
|
30
|
+
export * from './date/typed';
|
|
28
31
|
|
|
29
32
|
export * from './form/styles';
|
|
30
33
|
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import moment from 'moment';
|
|
2
|
+
import { dateRangeDays } from '../assets/javascripts/helper';
|
|
3
|
+
|
|
4
|
+
export const configDateRange = {
|
|
5
|
+
rangeDate: 'lastsecondweek',
|
|
6
|
+
startDate: moment().clone().subtract(13, 'days').format('YYYY-MM-DD') as string,
|
|
7
|
+
endDate: moment().clone().format('YYYY-MM-DD') as string,
|
|
8
|
+
placeholder: 'Last 14 days',
|
|
9
|
+
minDate: moment().clone().subtract(dateRangeDays('lastquart'), 'days').format('YYYY-MM-DD') as string
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './common';
|