funda-ui 4.3.355 → 4.3.721

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.
Files changed (49) hide show
  1. package/DynamicFields/index.d.ts +1 -0
  2. package/DynamicFields/index.js +23 -3
  3. package/EventCalendar/index.css +150 -106
  4. package/EventCalendar/index.d.ts +11 -2
  5. package/EventCalendar/index.js +835 -151
  6. package/EventCalendarTimeline/index.css +293 -251
  7. package/EventCalendarTimeline/index.d.ts +18 -9
  8. package/EventCalendarTimeline/index.js +1077 -505
  9. package/MultipleCheckboxes/index.d.ts +1 -0
  10. package/MultipleCheckboxes/index.js +17 -7
  11. package/MultipleSelect/index.d.ts +4 -0
  12. package/MultipleSelect/index.js +54 -8
  13. package/NativeSelect/index.js +1 -0
  14. package/Radio/index.d.ts +2 -1
  15. package/Radio/index.js +54 -24
  16. package/Select/index.js +115 -42
  17. package/Table/index.js +27 -3
  18. package/lib/cjs/DynamicFields/index.d.ts +1 -0
  19. package/lib/cjs/DynamicFields/index.js +23 -3
  20. package/lib/cjs/EventCalendar/index.d.ts +11 -2
  21. package/lib/cjs/EventCalendar/index.js +835 -151
  22. package/lib/cjs/EventCalendarTimeline/index.d.ts +18 -9
  23. package/lib/cjs/EventCalendarTimeline/index.js +1077 -505
  24. package/lib/cjs/MultipleCheckboxes/index.d.ts +1 -0
  25. package/lib/cjs/MultipleCheckboxes/index.js +17 -7
  26. package/lib/cjs/MultipleSelect/index.d.ts +4 -0
  27. package/lib/cjs/MultipleSelect/index.js +54 -8
  28. package/lib/cjs/NativeSelect/index.js +1 -0
  29. package/lib/cjs/Radio/index.d.ts +2 -1
  30. package/lib/cjs/Radio/index.js +54 -24
  31. package/lib/cjs/Select/index.js +115 -42
  32. package/lib/cjs/Table/index.js +27 -3
  33. package/lib/css/EventCalendar/index.css +150 -106
  34. package/lib/css/EventCalendarTimeline/index.css +293 -251
  35. package/lib/esm/DynamicFields/index.tsx +28 -3
  36. package/lib/esm/EventCalendar/index.scss +172 -104
  37. package/lib/esm/EventCalendar/index.tsx +272 -139
  38. package/lib/esm/EventCalendarTimeline/index.scss +275 -213
  39. package/lib/esm/EventCalendarTimeline/index.tsx +706 -708
  40. package/lib/esm/MultipleCheckboxes/index.tsx +18 -5
  41. package/lib/esm/MultipleSelect/ItemList.tsx +1 -0
  42. package/lib/esm/MultipleSelect/index.tsx +103 -52
  43. package/lib/esm/NativeSelect/index.tsx +2 -0
  44. package/lib/esm/Radio/index.tsx +68 -27
  45. package/lib/esm/Select/index.tsx +236 -65
  46. package/lib/esm/Table/Table.tsx +1 -0
  47. package/lib/esm/Table/TableCell.tsx +6 -0
  48. package/lib/esm/Table/table-utils/ToggleSelection.tsx +17 -2
  49. package/package.json +1 -1
@@ -1,11 +1,10 @@
1
- import React, { useState, useEffect, useRef } from 'react';
1
+ import React, { useState, useEffect, useRef, useImperativeHandle } from 'react';
2
2
 
3
3
 
4
4
  import useComId from 'funda-utils/dist/cjs/useComId';
5
5
  import { clsWrite, combinedCls } from 'funda-utils/dist/cjs/cls';
6
6
 
7
7
 
8
-
9
8
  export type DynamicFieldsValueProps = {
10
9
  init: React.ReactNode[];
11
10
  tmpl: React.ReactNode;
@@ -13,6 +12,7 @@ export type DynamicFieldsValueProps = {
13
12
 
14
13
 
15
14
  export type DynamicFieldsProps = {
15
+ contentRef?: React.ForwardedRef<any>;
16
16
  wrapperClassName?: string;
17
17
  btnAddWrapperClassName?: string;
18
18
  btnRemoveWrapperClassName?: string;
@@ -48,6 +48,7 @@ export type DynamicFieldsProps = {
48
48
 
49
49
  const DynamicFields = (props: DynamicFieldsProps) => {
50
50
  const {
51
+ contentRef,
51
52
  wrapperClassName,
52
53
  btnAddWrapperClassName,
53
54
  btnRemoveWrapperClassName,
@@ -96,6 +97,23 @@ const DynamicFields = (props: DynamicFieldsProps) => {
96
97
  const addBtnIdRef = useRef<string>('');
97
98
  addBtnIdRef.current = `dynamic-fields-add-${idRes}`;
98
99
 
100
+ // exposes the following methods
101
+ useImperativeHandle(
102
+ contentRef,
103
+ () => ({
104
+ showAddBtn: () => {
105
+ addBtnRef.current.style.setProperty('display', 'inline', 'important');
106
+ },
107
+ hideAddBtn: () => {
108
+ addBtnRef.current.style.setProperty('display', 'none', 'important');
109
+ },
110
+ appendedItemsCounter: () => {
111
+ return rootRef.current.querySelectorAll(PER_ROW_DOM_STRING).length;
112
+ }
113
+ }),
114
+ [contentRef],
115
+ );
116
+
99
117
  function updateLastItemCls(el: HTMLDivElement, type: string) {
100
118
  if (typeof el === 'undefined') return;
101
119
 
@@ -142,7 +160,8 @@ const DynamicFields = (props: DynamicFieldsProps) => {
142
160
 
143
161
  function checkMaxStatus() {
144
162
  //button status
145
- if (rootRef.current.querySelectorAll(PER_ROW_DOM_STRING).length + 1 >= parseFloat(maxFields)) {
163
+ const _appendedItems = rootRef.current.querySelectorAll(PER_ROW_DOM_STRING).length;
164
+ if (_appendedItems + 1 >= parseFloat(maxFields)) {
146
165
  addBtnRef.current.style.setProperty('display', 'none', 'important');
147
166
  }
148
167
  }
@@ -302,11 +321,17 @@ const DynamicFields = (props: DynamicFieldsProps) => {
302
321
  setVal(data ? data.init : []);
303
322
  setTmpl(data ? data.tmpl : null);
304
323
 
324
+ //
325
+ checkMaxStatus();
326
+
305
327
  //
306
328
  onLoad?.(addBtnIdRef.current, rootRef.current, PER_ROW_DOM_STRING);
307
329
  }, [data]);
308
330
 
309
331
 
332
+
333
+
334
+
310
335
  return (
311
336
  <>
312
337
 
@@ -6,71 +6,73 @@
6
6
  // ---------------------------
7
7
  //
8
8
  @mixin disabled-item() {
9
- // @include disabled-item();
9
+ // @include disabled-item();
10
10
  opacity: .4;
11
11
  pointer-events: none;
12
12
  }
13
13
 
14
- .e-cal__wrapper {
15
- --e-cal-wrapper-min-width: 400px;
16
- --e-cal-body-bg: #fff;
17
- --e-cal-border-color: #ddd;
18
- --e-cal-border-color-hover: #333;
19
- --e-cal-header-fs: 1.125rem;
20
- --e-cal-default-border-color: #eee;
21
- --e-cal-day-border-color: #ddd;
22
- --e-cal-day-hover-bg: #f6f6f6;
23
- --e-cal-dayselected-bg: #0b5ed7;
24
- --e-cal-dayselected-text-color: #fff;
25
- --e-cal-year-month-btn-border-color: #ddd;
26
- --e-cal-year-month-btn-hover-bg: rgba(0, 58, 166, .1);
27
- --e-cal-year-month-btn-selected-bg: rgba(0, 58, 166, 1);
28
- --e-cal-year-month-btn-selected-color: #fff;
29
- --e-cal-month-wrapper-w: 18.75rem;
30
- --e-cal-year-wrapper-w: 18.75rem;
31
- --e-cal-header-arrow-bg: #000;
32
- --e-cal-header-text-color: #000;
33
- --e-cal-header-prevnext-btn-bg: transparent;
34
- --e-cal-header-prevnext-btn-color: #000;
35
- --e-cal-header-prevnext-btn-radius: 0.25rem;
36
- --e-cal-delete-btn-color: #ee4949;
37
- --e-cal-footer-today-btn-bg: rgba(0, 58, 166, 1);
38
- --e-cal-footer-today-btn-color: #fff;
39
- --e-cal-event-bg: rgb(255, 240, 227);
14
+ .e-cal-normal__wrapper {
15
+ --e-cal-normal-wrapper-min-width: 400px;
16
+ --e-cal-normal-body-bg: #fff;
17
+ --e-cal-normal-border-color: #ddd;
18
+ --e-cal-normal-border-color-hover: #333;
19
+ --e-cal-normal-header-fs: 1.125rem;
20
+ --e-cal-normal-default-border-color: #eee;
21
+ --e-cal-normal-day-border-color: #ddd;
22
+ --e-cal-normal-day-hover-bg: #f6f6f6;
23
+ --e-cal-normal-dayselected-bg: #0b5ed7;
24
+ --e-cal-normal-dayselected-text-color: #fff;
25
+ --e-cal-normal-year-month-btn-border-color: #ddd;
26
+ --e-cal-normal-year-month-btn-hover-bg: rgba(0, 58, 166, .1);
27
+ --e-cal-normal-year-month-btn-selected-bg: rgba(0, 58, 166, 1);
28
+ --e-cal-normal-year-month-btn-selected-color: #fff;
29
+ --e-cal-normal-month-wrapper-w: 18.75rem;
30
+ --e-cal-normal-year-wrapper-w: 18.75rem;
31
+ --e-cal-normal-header-arrow-bg: #000;
32
+ --e-cal-normal-header-text-color: #000;
33
+ --e-cal-normal-header-prevnext-btn-bg: transparent;
34
+ --e-cal-normal-header-prevnext-btn-color: #000;
35
+ --e-cal-normal-header-prevnext-btn-radius: 0.25rem;
36
+ --e-cal-normal-table-add-btn-color: #0b5ed7;
37
+ --e-cal-normal-delete-btn-color: #ee4949;
38
+ --e-cal-normal-footer-today-btn-bg: rgba(0, 58, 166, 1);
39
+ --e-cal-normal-footer-today-btn-color: #fff;
40
+ --e-cal-normal-event-default-bg: rgb(255, 240, 227);
41
+ --e-cal-normal-table-event-font-size: 0.75rem;
40
42
 
41
43
 
42
44
  position: relative;
43
- min-width: var(--e-cal-wrapper-min-width);
44
- border: 1px solid var(--e-cal-border-color);
45
+ min-width: var(--e-cal-normal-wrapper-min-width);
46
+ border: 1px solid var(--e-cal-normal-border-color);
45
47
 
46
48
 
47
49
  /* --HEADER --*/
48
- .e-cal__header {
49
- font-size: var(--e-cal-header-fs);
50
+ .e-cal-normal__header {
51
+ font-size: var(--e-cal-normal-header-fs);
50
52
  font-weight: bold;
51
53
  padding: 10px 10px 5px 10px;
52
54
  display: flex;
53
55
  justify-content: space-between;
54
56
 
55
- .e-cal__header__btns {
56
- .e-cal__btn {
57
+ .e-cal-normal__header__btns {
58
+ .e-cal-normal__btn {
57
59
  margin-right: 1rem;
58
- color: var(--e-cal-header-text-color);
59
-
60
+ color: var(--e-cal-normal-header-text-color);
61
+
60
62
  svg {
61
63
  margin-left: .3rem;
62
-
64
+
63
65
  path {
64
- fill: var(--e-cal-header-arrow-bg);
65
- }
66
+ fill: var(--e-cal-normal-header-arrow-bg);
67
+ }
66
68
  }
67
-
69
+
68
70
  &.active {
69
71
  svg {
70
72
  transform: rotate(180deg);
71
73
  }
72
74
  }
73
-
75
+
74
76
  }
75
77
  }
76
78
 
@@ -78,20 +80,20 @@
78
80
 
79
81
 
80
82
  /*-- BODY --*/
81
- .e-cal__body {
82
- background: var(--e-cal-body-bg);
83
+ .e-cal-normal__body {
84
+ background: var(--e-cal-normal-body-bg);
83
85
  width: 100%;
84
86
  display: flex;
85
87
  flex-wrap: wrap;
86
88
  }
87
89
 
88
90
  /*-- CELL --*/
89
- .e-cal__row {
91
+ .e-cal-normal__row {
90
92
  display: flex;
91
93
  width: 100%;
92
94
 
93
- .e-cal__cell {
94
- flex: 1;
95
+ .e-cal-normal__cell {
96
+ flex: 1;
95
97
  position: relative;
96
98
  height: auto;
97
99
  min-height: 4.75em;
@@ -101,7 +103,7 @@
101
103
  flex-direction: column;
102
104
  text-align: center;
103
105
  border-width: 0;
104
- border-color: var(--e-cal-default-border-color);
106
+ border-color: var(--e-cal-normal-default-border-color);
105
107
  border-style: solid;
106
108
  border-top-width: 1px;
107
109
  border-right-width: 1px;
@@ -117,41 +119,110 @@
117
119
  &.last-row {
118
120
  border-bottom-width: 1px;
119
121
  }
120
-
121
- &.e-cal__day--week {
122
+
123
+ &.e-cal-normal__day--week {
122
124
  min-height: 2.75em;
123
125
  align-items: end;
124
126
  padding-inline-end: .75rem;
125
127
  }
126
128
 
127
- .e-cal__day__event {
128
- background-color: var(--e-cal-event-bg);
129
- width: 100%;
130
- padding: .1rem .5rem;
131
- margin: 0.5rem;
132
- border-radius: 0;
133
- margin-top: 2.5rem;
129
+ &:not(.empty):hover {
130
+ background-color: var(--e-cal-normal-day-hover-bg);
131
+ }
132
+
133
+ .e-cal-normal__day__event {
134
+ margin-bottom: 1px;
135
+ font-size: var(--e-cal-normal-table-event-font-size);
136
+ background-color: var(--e-cal-normal-event-default-bg);
134
137
  text-align: left;
135
- font-size: 0.75rem;
138
+
139
+ &:hover {
140
+ cursor: pointer;
141
+ opacity: .8;
142
+ }
136
143
  }
137
-
138
- .e-cal__day__eventdel {
144
+
145
+ .e-cal-normal__cell-item.first {
146
+ margin-top: 2.5rem;
147
+ }
148
+
149
+
150
+ /* Delete button */
151
+ .e-cal-normal__day__eventdel {
139
152
  position: absolute;
140
153
  z-index: 1;
141
- left: 0;
154
+ right: -5px;
142
155
  top: 0;
143
156
  display: none;
144
- color: var(--e-cal-delete-btn-color);
145
-
157
+ color: var(--e-cal-normal-delete-btn-color);
158
+
146
159
  svg {
147
- fill: var(--e-cal-delete-btn-color);
148
-
160
+ width: 10px;
161
+ fill: var(--e-cal-normal-delete-btn-color);
162
+
149
163
  path {
150
- fill: var(--e-cal-delete-btn-color);
164
+ fill: var(--e-cal-normal-delete-btn-color);
165
+ }
166
+ }
167
+
168
+ &:hover {
169
+ svg {
170
+ transform: scale(1.2);
151
171
  }
152
172
  }
153
173
  }
154
-
174
+
175
+ &:not(.empty) .e-cal-normal__cell-item:hover {
176
+ .e-cal-normal__day__eventdel {
177
+ display: block;
178
+ }
179
+
180
+ }
181
+
182
+
183
+ /* Add button */
184
+ .e-cal-normal__day__eventadd {
185
+ position: absolute;
186
+ z-index: 1;
187
+ left: 0;
188
+ bottom: -8.5px;
189
+ display: none;
190
+ width: 20px;
191
+ color: var(--e-cal-normal-table-add-btn-color);
192
+ text-align: left;
193
+ pointer-events: none;
194
+
195
+ > a {
196
+ pointer-events: auto;
197
+ }
198
+
199
+ svg {
200
+ width: 15px;
201
+ fill: var(--e-cal-normal-table-add-btn-color);
202
+
203
+ path {
204
+ fill: var(--e-cal-normal-table-add-btn-color);
205
+ }
206
+ }
207
+
208
+ &:hover {
209
+ svg {
210
+ transform: scale(1.2);
211
+ }
212
+ }
213
+ }
214
+
215
+ &:hover {
216
+ .e-cal-normal__day__eventadd {
217
+ display: block;
218
+ }
219
+
220
+ }
221
+
222
+
223
+
224
+
225
+ /* DAY NUMBER */
155
226
  > span {
156
227
  position: absolute;
157
228
  right: .25rem;
@@ -169,30 +240,27 @@
169
240
  }
170
241
  }
171
242
 
243
+
244
+ /* ITEMS */
245
+ > div {
246
+ position: relative;
247
+ width: 100%;
248
+ }
249
+
172
250
 
173
251
  &:not(.empty) {
174
252
  cursor: pointer;
175
253
  }
176
254
 
177
- &.today {
178
-
179
- }
255
+ &.today {}
180
256
 
181
257
  &.selected {
182
- > span {
183
- color: var(--e-cal-dayselected-text-color);
184
- background-color: var(--e-cal-dayselected-bg);
258
+ >span {
259
+ color: var(--e-cal-normal-dayselected-text-color);
260
+ background-color: var(--e-cal-normal-dayselected-bg);
185
261
  }
186
262
  }
187
263
 
188
- &:not(.empty):hover {
189
- background-color: var(--e-cal-day-hover-bg);
190
-
191
- .e-cal__day__eventdel {
192
- display: block;
193
- }
194
- }
195
-
196
264
  }
197
265
 
198
266
 
@@ -200,9 +268,9 @@
200
268
 
201
269
 
202
270
  /*-- SELECTION --*/
203
- .e-cal__month-wrapper {
271
+ .e-cal-normal__month-wrapper {
204
272
  position: absolute;
205
- width: var(--e-cal-month-wrapper-w);
273
+ width: var(--e-cal-normal-month-wrapper-w);
206
274
  height: auto;
207
275
  z-index: 1;
208
276
  top: calc(1rem + 22px);
@@ -215,7 +283,7 @@
215
283
  }
216
284
 
217
285
 
218
- .e-cal__month-container {
286
+ .e-cal-normal__month-container {
219
287
  display: grid;
220
288
  grid-template-columns: repeat(3, 1fr);
221
289
  grid-template-rows: repeat(4, 2.5em);
@@ -226,9 +294,9 @@
226
294
  }
227
295
 
228
296
 
229
- .e-cal__year-wrapper {
297
+ .e-cal-normal__year-wrapper {
230
298
  position: absolute;
231
- width: var(--e-cal-year-wrapper-w);
299
+ width: var(--e-cal-normal-year-wrapper-w);
232
300
  height: auto;
233
301
  z-index: 1;
234
302
  top: calc(1rem + 22px);
@@ -238,35 +306,35 @@
238
306
 
239
307
  &.active {
240
308
  display: block;
241
- }
242
-
243
- .e-cal__year-container {
309
+ }
310
+
311
+ .e-cal-normal__year-container {
244
312
  display: grid;
245
313
  grid-template-columns: repeat(4, 1fr);
246
314
  grid-template-rows: repeat(5, 2.5em);
247
315
  grid-gap: 5px;
248
- }
316
+ }
249
317
  }
250
318
 
251
319
 
252
- .e-cal__year,
253
- .e-cal__month {
320
+ .e-cal-normal__year,
321
+ .e-cal-normal__month {
254
322
  display: flex;
255
323
  align-items: center;
256
324
  justify-content: center;
257
325
  padding: 5px;
258
326
  font-size: 0.875em;
259
- border: 1px solid var(--e-cal-year-month-btn-border-color);
327
+ border: 1px solid var(--e-cal-normal-year-month-btn-border-color);
260
328
  border-radius: 0.25rem;
261
329
  cursor: pointer;
262
330
 
263
331
  &:hover {
264
- background-color: var(--e-cal-year-month-btn-hover-bg);
332
+ background-color: var(--e-cal-normal-year-month-btn-hover-bg);
265
333
  }
266
334
 
267
335
  &.selected {
268
- background-color: var(--e-cal-year-month-btn-selected-bg);
269
- color: var(--e-cal-year-month-btn-selected-color);
336
+ background-color: var(--e-cal-normal-year-month-btn-selected-bg);
337
+ color: var(--e-cal-normal-year-month-btn-selected-color);
270
338
  }
271
339
 
272
340
  &.disabled {
@@ -279,7 +347,7 @@
279
347
 
280
348
 
281
349
  /* --BUTTON --*/
282
- .e-cal__btn {
350
+ .e-cal-normal__btn {
283
351
  border: none;
284
352
  outline: none;
285
353
  background: none;
@@ -294,7 +362,7 @@
294
362
 
295
363
  svg {
296
364
  path {
297
- fill: var(--e-cal-header-arrow-bg);
365
+ fill: var(--e-cal-normal-header-arrow-bg);
298
366
  }
299
367
  }
300
368
 
@@ -304,27 +372,27 @@
304
372
 
305
373
  &--prev,
306
374
  &--next {
307
- border-radius: var(--e-cal-header-prevnext-btn-radius);
308
- color: var(--e-cal-header-prevnext-btn-color);
309
- background-color: var(--e-cal-header-prevnext-btn-bg);
375
+ border-radius: var(--e-cal-normal-header-prevnext-btn-radius);
376
+ color: var(--e-cal-normal-header-prevnext-btn-color);
377
+ background-color: var(--e-cal-normal-header-prevnext-btn-bg);
310
378
 
311
379
  svg {
312
380
  path {
313
- fill: var(--e-cal-header-prevnext-btn-color);
381
+ fill: var(--e-cal-normal-header-prevnext-btn-color);
314
382
  }
315
383
  }
316
384
 
317
385
  }
318
386
 
319
387
  &--today {
320
- border: 1px solid var(--e-cal-border-color);
388
+ border: 1px solid var(--e-cal-normal-border-color);
321
389
  border-radius: 0.25rem;
322
390
  font-size: 0.875em;
323
391
  padding: .2rem 1rem;
324
- color: var(--e-cal-footer-today-btn-color);
325
- background-color: var(--e-cal-footer-today-btn-bg);
392
+ color: var(--e-cal-normal-footer-today-btn-color);
393
+ background-color: var(--e-cal-normal-footer-today-btn-bg);
326
394
  }
327
395
  }
328
396
 
329
397
 
330
- }
398
+ }