@broxus/react-uikit 0.16.0 → 0.17.0

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 (37) hide show
  1. package/dist/cjs/components/Button/Button.js +4 -4
  2. package/dist/cjs/components/ConfigProvider/index.d.ts +11 -7
  3. package/dist/cjs/components/Control/Input/Password/index.js +2 -2
  4. package/dist/cjs/components/Control/Input/useInput.js +7 -8
  5. package/dist/cjs/components/Control/Select/index.d.ts +3 -2
  6. package/dist/cjs/components/Control/index.scss +1 -1
  7. package/dist/cjs/components/Control/types.d.ts +1 -0
  8. package/dist/cjs/components/DatePicker/generatePurePicker.d.ts +24 -0
  9. package/dist/cjs/components/DatePicker/generatePurePicker.js +78 -0
  10. package/dist/cjs/components/DatePicker/generateSinglePicker.js +3 -3
  11. package/dist/cjs/components/DatePicker/index.d.ts +3 -0
  12. package/dist/cjs/components/DatePicker/index.js +3 -0
  13. package/dist/cjs/components/DatePicker/index.scss +112 -85
  14. package/dist/cjs/components/DatePicker/types.d.ts +14 -3
  15. package/dist/cjs/components/Drop/index.d.ts +2 -1
  16. package/dist/cjs/styles/mixins.scss +23 -0
  17. package/dist/cjs/styles/variables.scss +8 -8
  18. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  19. package/dist/esm/components/Button/Button.js +4 -4
  20. package/dist/esm/components/ConfigProvider/index.d.ts +11 -7
  21. package/dist/esm/components/Control/Input/Password/index.js +2 -2
  22. package/dist/esm/components/Control/Input/useInput.js +7 -8
  23. package/dist/esm/components/Control/Select/index.d.ts +3 -2
  24. package/dist/esm/components/Control/index.scss +1 -1
  25. package/dist/esm/components/Control/types.d.ts +1 -0
  26. package/dist/esm/components/DatePicker/generatePurePicker.d.ts +24 -0
  27. package/dist/esm/components/DatePicker/generatePurePicker.js +38 -0
  28. package/dist/esm/components/DatePicker/generateSinglePicker.js +3 -3
  29. package/dist/esm/components/DatePicker/index.d.ts +3 -0
  30. package/dist/esm/components/DatePicker/index.js +3 -0
  31. package/dist/esm/components/DatePicker/index.scss +112 -85
  32. package/dist/esm/components/DatePicker/types.d.ts +14 -3
  33. package/dist/esm/components/Drop/index.d.ts +2 -1
  34. package/dist/esm/styles/mixins.scss +23 -0
  35. package/dist/esm/styles/variables.scss +8 -8
  36. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  37. package/package.json +2 -2
@@ -16,7 +16,8 @@
16
16
 
17
17
  @import '../../styles/variables.scss';
18
18
 
19
- /* Layout
19
+
20
+ /* Picker
20
21
  ========================================================================== */
21
22
 
22
23
  [class^='uk-datepicker'],
@@ -35,7 +36,7 @@
35
36
  border-radius: var(--control-border-radius);
36
37
  color: var(--control-color);
37
38
  cursor: text;
38
- display: inline-flex;
39
+ display: flex;
39
40
  font-size: inherit;
40
41
  min-height: var(--control-height);
41
42
  padding-left: var(--control-padding-horizontal);
@@ -88,6 +89,9 @@
88
89
  display: inline-flex;
89
90
  position: relative;
90
91
  width: 100%;
92
+ @if mixin-exists(hook-datepicker-input) {
93
+ @include hook-datepicker-input;
94
+ }
91
95
  }
92
96
 
93
97
  .uk-datepicker .uk-datepicker-input .uk-control {
@@ -95,7 +99,9 @@
95
99
  padding: 0;
96
100
  }
97
101
 
98
- /* Panel */
102
+
103
+ /* Panel
104
+ ========================================================================== */
99
105
 
100
106
  .uk-datepicker-panel-layout {
101
107
  align-items: stretch;
@@ -147,6 +153,43 @@
147
153
  }
148
154
  }
149
155
 
156
+ .uk-datepicker-date-panel {
157
+ @if mixin-exists(hook-datepicker-date-panel) {
158
+ @include hook-datepicker-date-panel;
159
+ }
160
+ }
161
+
162
+ .uk-datepicker-month-panel {
163
+ @if mixin-exists(hook-datepicker-month-panel) {
164
+ @include hook-datepicker-month-panel;
165
+ }
166
+ }
167
+
168
+ .uk-datepicker-quarter-panel {
169
+ @if mixin-exists(hook-datepicker-quarter-panel) {
170
+ @include hook-datepicker-quarter-panel;
171
+ }
172
+ }
173
+
174
+ .uk-datepicker-decade-panel {
175
+ @if mixin-exists(hook-datepicker-decade-panel) {
176
+ @include hook-datepicker-decade-panel;
177
+ }
178
+ }
179
+
180
+ .uk-datepicker-week-panel {
181
+ @if mixin-exists(hook-datepicker-week-panel) {
182
+ @include hook-datepicker-week-panel;
183
+ }
184
+ }
185
+
186
+ .uk-datepicker-year-panel {
187
+ @if mixin-exists(hook-datepicker-year-panel) {
188
+ @include hook-datepicker-year-panel;
189
+ }
190
+ }
191
+
192
+ /* Header */
150
193
  .uk-datepicker-header {
151
194
  align-items: center;
152
195
  border-bottom: var(--datepicker-border-width) var(--datepicker-border-style) var(--datepicker-border);
@@ -171,6 +214,7 @@
171
214
  }
172
215
  }
173
216
 
217
+ /* Body and content */
174
218
  .uk-datepicker-body {
175
219
  padding: var(--datepicker-body-padding-vertical) var(--datepicker-body-padding-horizontal);
176
220
  @if mixin-exists(hook-datepicker-body) {
@@ -188,14 +232,7 @@
188
232
  }
189
233
  }
190
234
 
191
- /* Elements */
192
-
193
- .uk-datepicker-content th {
194
- box-sizing: border-box;
195
- height: var(--datepicker-cell-height);
196
- padding: 0;
197
- }
198
-
235
+ // Elements
199
236
  .uk-datepicker-header button {
200
237
  align-items: center;
201
238
  appearance: none;
@@ -215,30 +252,18 @@
215
252
  padding: 0 var(--datepicker-header-button-padding-horizontal);
216
253
  text-align: center;
217
254
  transition: color var(--transition-medium-fast-duration);
218
- @if mixin-exists(hook-datepicker-header-button) {
219
- @include hook-datepicker-header-button;
220
- }
221
255
  }
222
256
 
223
257
  .uk-datepicker-header-view button {
224
258
  color: inherit;
225
- @if mixin-exists(hook-datepicker-header-view-button) {
226
- @include hook-datepicker-header-view-button;
227
- }
228
259
  }
229
260
 
230
261
  .uk-datepicker-header-view button:hover {
231
262
  color: var(--datepicker-header-view-button-hover-color);
232
- @if mixin-exists(hook-datepicker-header-view-button-hover) {
233
- @include hook-datepicker-header-view-button-hover;
234
- }
235
263
  }
236
264
 
237
265
  .uk-datepicker-header > button:hover {
238
266
  color: var(--datepicker-header-button-hover-color);
239
- @if mixin-exists(hook-datepicker-header-button-hover) {
240
- @include hook-datepicker-header-button-hover;
241
- }
242
267
  }
243
268
 
244
269
  .uk-datepicker-prev-icon,
@@ -291,48 +316,13 @@
291
316
  width: 7px;
292
317
  }
293
318
 
294
- /*
295
- * Time panel
296
- */
297
-
298
- .uk-datepicker-time-panel .uk-datepicker-content {
299
- display: flex;
300
- flex: auto;
301
- height: var(--datepicker-time-column-height);
302
- @if mixin-exists(hook-datepicker-time-panel-content) {
303
- @include hook-datepicker-time-panel-content;
304
- }
305
- }
306
-
307
- .uk-datepicker-time-panel-column {
308
- flex: 1 0 auto;
309
- margin: var(--global-xsmall-margin) 0;
310
- overflow: hidden;
311
- padding: 0;
312
- scrollbar-color: var(--global-scroll-background, var(--global-muted-backgrounf, rgba(#000, 0.15))) transparent;
313
- scrollbar-width: thin;
314
- text-align: start;
315
- transition: background var(--transition-medium-fast-duration);
316
- width: var(--datepicker-time-column-width);
317
- @if mixin-exists(hook-datepicker-time-panel-column) {
318
- @include hook-datepicker-time-panel-column;
319
- }
320
- }
321
-
322
- .uk-datepicker-time-panel-column:hover {
323
- overflow-y: auto;
324
- }
325
-
326
- .uk-datepicker-time-panel-column ul {
327
- list-style: none;
328
- margin: 0;
319
+ .uk-datepicker-content th {
320
+ box-sizing: border-box;
321
+ height: var(--datepicker-cell-height);
329
322
  padding: 0;
330
323
  }
331
324
 
332
- /*
333
- * Footer
334
- */
335
-
325
+ /* Footer */
336
326
  .uk-datepicker-footer {
337
327
  border-top: var(--datepicker-border-width) var(--datepicker-border-style) var(--datepicker-border);
338
328
  padding: var(--datepicker-footer-padding-vertical) var(--datepicker-footer-padding-horizontal);
@@ -386,6 +376,10 @@
386
376
  z-index: 1;
387
377
  }
388
378
 
379
+ .uk-datepicker-cell-in-view {
380
+ color: var(--datepicker-cell-color);
381
+ }
382
+
389
383
  .uk-datepicker-cell-inner {
390
384
  border-radius: var(--datepicker-cell-border-radius);
391
385
  display: inline-block;
@@ -394,13 +388,12 @@
394
388
  min-width: var(--datepicker-cell-height);
395
389
  position: relative;
396
390
  z-index: 2;
391
+ @if mixin-exists(hook-datepicker-cell-inner) {
392
+ @include hook-datepicker-cell-inner;
393
+ }
397
394
  }
398
395
 
399
- .uk-datepicker-cell-in-view {
400
- color: var(--datepicker-cell-color);
401
- }
402
-
403
- /* Hover Cell */
396
+ /* Hover cell state */
404
397
  .uk-datepicker-cell:hover:not(.uk-datepicker-cell-in-view, .uk-datepicker-cell-disabled) .uk-datepicker-cell-inner,
405
398
  .uk-datepicker-cell:hover:not(
406
399
  .uk-datepicker-cell-selected,
@@ -418,18 +411,8 @@
418
411
  color: var(--datepicker-cell-active-color);
419
412
  }
420
413
 
421
- .uk-datepicker-cell-in-view.uk-datepicker-cell-today .uk-datepicker-cell-inner::before {
422
- border: var(--datepicker-border-width) var(--datepicker-border-style) var(--datepicker-border);
423
- border-radius: var(--datepicker-cell-border-radius);
424
- bottom: 0;
425
- content: '';
426
- inset-inline: 0;
427
- position: absolute;
428
- top: 0;
429
- z-index: 1;
430
- }
431
-
432
- .uk-datepicker-cell-disabled {
414
+ /* Disabled cell state */
415
+ .uk-datepicker-cell-disabled:not(.uk-datepicker-cell-selected) {
433
416
  color: var(--datepicker-cell-disabled-color);
434
417
  cursor: not-allowed;
435
418
  }
@@ -442,6 +425,18 @@
442
425
  background: none;
443
426
  }
444
427
 
428
+ /* Today */
429
+ .uk-datepicker-cell-in-view.uk-datepicker-cell-today .uk-datepicker-cell-inner::before {
430
+ border: var(--datepicker-border-width) var(--datepicker-border-style) var(--datepicker-border);
431
+ border-radius: var(--datepicker-cell-border-radius);
432
+ bottom: 0;
433
+ content: '';
434
+ inset-inline: 0;
435
+ position: absolute;
436
+ top: 0;
437
+ z-index: 1;
438
+ }
439
+
445
440
  .uk-datepicker-cell-disabled.uk-datepicker-cell-today .uk-datepicker-cell-inner::before {
446
441
  border-color: var(--datepicker-cell-disabled-border);
447
442
  }
@@ -490,6 +485,39 @@
490
485
  }
491
486
 
492
487
 
488
+ /* Time panel */
489
+ .uk-datepicker-time-panel .uk-datepicker-content {
490
+ display: flex;
491
+ flex: auto;
492
+ height: var(--datepicker-time-column-height);
493
+ }
494
+
495
+ .uk-datepicker-time-panel-column {
496
+ flex: 1 0 auto;
497
+ margin: var(--global-xsmall-margin) 0;
498
+ overflow: hidden;
499
+ padding: 0;
500
+ scrollbar-color: var(--global-scroll-background, var(--global-muted-backgrounf, rgba(#000, 0.15))) transparent;
501
+ scrollbar-width: thin;
502
+ text-align: start;
503
+ transition: background var(--transition-medium-fast-duration);
504
+ width: var(--datepicker-time-column-width);
505
+ @if mixin-exists(hook-datepicker-time-panel-column) {
506
+ @include hook-datepicker-time-panel-column;
507
+ }
508
+ }
509
+
510
+ .uk-datepicker-time-panel-column:hover {
511
+ overflow-y: auto;
512
+ }
513
+
514
+ .uk-datepicker-time-panel-column ul {
515
+ list-style: none;
516
+ margin: 0;
517
+ padding: 0;
518
+ }
519
+
520
+
493
521
  /* Time
494
522
  ========================================================================== */
495
523
 
@@ -520,7 +548,7 @@
520
548
  color: var(--datepicker-cell-active-color);
521
549
  }
522
550
 
523
- .uk-datepicker-time-panel-cell-disabled .uk-datepicker-time-panel-cell-inner {
551
+ .uk-datepicker-time-panel-cell-disabled:not(.uk-datepicker-time-panel-cell-selected) .uk-datepicker-time-panel-cell-inner {
524
552
  color: var(--datepicker-cell-disabled-color);
525
553
  cursor: not-allowed;
526
554
  }
@@ -570,8 +598,7 @@
570
598
 
571
599
  .uk-datepicker-dropdown {
572
600
  background-color: var(--datepicker-dropdown-background);
573
- border: var(--datepicker-dropdown-border-width) var(--datepicker-dropdown-border-style)
574
- var(--datepicker-dropdown-border);
601
+ border: var(--datepicker-dropdown-border-width) var(--datepicker-dropdown-border-style) var(--datepicker-dropdown-border);
575
602
  border-radius: var(--datepicker-dropdown-border-radius);
576
603
  font-variant: initial;
577
604
  left: -9999px;
@@ -618,13 +645,13 @@
618
645
  --datepicker-header-padding-horizontal: var(--global-small-gutter);
619
646
  --datepicker-header-font-size: var(--global-font-size);
620
647
  --datepicker-header-font-weight: var(--global-bold-font-weight);
621
- --datepicker-header-height: var(--global-control-height);
648
+ --datepicker-header-height: var(--global-control-large-height);
622
649
  --datepicker-body-padding-horizontal: var(--global-gutter);
623
650
  --datepicker-body-padding-vertical: var(--global-small-gutter);
624
651
  --datepicker-header-button-color: var(--global-muted-color);
625
652
  --datepicker-header-button-font-size: var(--global-font-size);
626
653
  --datepicker-header-button-font-weight: var(--global-bold-font-weight);
627
- --datepicker-header-button-line-height: #{$datepicker-button-line-height};
654
+ --datepicker-header-button-line-height: var(--global-control-large-height);
628
655
  --datepicker-header-button-padding-horizontal: var(--global-small-gutter);
629
656
  --datepicker-header-button-hover-color: var(--global-color);
630
657
  --datepicker-header-view-button-hover-color: var(--global-primary-color);
@@ -633,7 +660,7 @@
633
660
  --datepicker-footer-ranges-padding-horizontal: var(--global-small-gutter);
634
661
  --datepicker-footer-ranges-padding-vertical: var(--global-small-gutter);
635
662
  --datepicker-cell-border-radius: var(--global-small-border-radius);
636
- --datepicker-cell-height: #{$datepicker-cell-height};
663
+ --datepicker-cell-height: var(--global-control-height);
637
664
  --datepicker-cell-width: #{$datepicker-cell-width};
638
665
  --datepicker-cell-padding: var(--global-xsmall-gutter);
639
666
  --datepicker-cell-color: var(--global-color);
@@ -1,7 +1,9 @@
1
- import { type PickerRef, type PickerProps as RcPickerProps, type RangePickerProps as RcRangePickerProps } from 'rc-picker';
1
+ import { type PickerRef, type PickerPanelProps as RcPickerPanelProps, type PickerProps as RcPickerProps, type RangePickerProps as RcRangePickerProps } from 'rc-picker';
2
2
  import { type Locale as RcPickerLocale } from 'rc-picker/lib/interface';
3
3
  import type * as React from 'react';
4
+ import { type TimePickerLocale } from '../../components/TimePicker';
4
5
  import { type AnyObject, type SizeType, type StateType } from '../../types';
6
+ import { PickerPanelRef } from 'rc-picker/lib/PickerPanel';
5
7
  export interface AdditionalPickerLocaleProps {
6
8
  dateFormat?: string;
7
9
  dateTimeFormat?: string;
@@ -22,7 +24,7 @@ export interface AdditionalPickerLocaleLangProps {
22
24
  }
23
25
  export interface PickerLocale extends AdditionalPickerLocaleProps {
24
26
  lang: RcPickerLocale & AdditionalPickerLocaleLangProps;
25
- timePickerLocale: any;
27
+ timePickerLocale: TimePickerLocale;
26
28
  }
27
29
  declare const DatePickerPlacements: readonly ["bottomLeft", "bottomRight", "topLeft", "topRight"];
28
30
  type DatePickerPlacement = (typeof DatePickerPlacements)[number];
@@ -35,7 +37,10 @@ type InjectDefaultProps<Props> = Omit<Props, 'locale' | 'generateConfig' | 'hide
35
37
  size?: SizeType;
36
38
  state?: StateType;
37
39
  };
38
- export interface PickerProps<DateType extends AnyObject = any> extends InjectDefaultProps<RcPickerProps<DateType>> {
40
+ export interface PickerProps<DateType extends AnyObject = AnyObject> extends InjectDefaultProps<RcPickerProps<DateType>> {
41
+ }
42
+ export interface PickerPanelProps<DateType extends AnyObject = AnyObject> extends Omit<RcPickerPanelProps<DateType>, 'locale' | 'generateConfig' | 'hideHeader'> {
43
+ locale?: PickerLocale;
39
44
  }
40
45
  export interface RangePickerProps<DateType extends AnyObject = AnyObject> extends InjectDefaultProps<RcRangePickerProps<DateType>> {
41
46
  }
@@ -47,4 +52,10 @@ export type PickerPropsWithMultiple<DateType extends AnyObject = any, InnerPicke
47
52
  onChange?: (date: ValueType, dateString: string | string[]) => void;
48
53
  onConfirm?: (date: ValueType) => void;
49
54
  };
55
+ export type PickerPanelPropsWithMultiple<DateType extends AnyObject = any, InnerPickerProps extends PickerProps<DateType> = PickerProps<DateType>, ValueType = DateType> = Omit<InnerPickerProps, 'defaultValue' | 'value' | 'onChange' | 'onOk'> & React.RefAttributes<PickerPanelRef> & {
56
+ defaultValue?: ValueType | null;
57
+ value?: ValueType | null;
58
+ onChange?: (date: ValueType, dateString: string | string[]) => void;
59
+ onConfirm?: (date: ValueType) => void;
60
+ };
50
61
  export {};
@@ -3,6 +3,7 @@ import { type BuildInPlacements, type TriggerProps } from 'rc-trigger';
3
3
  import { type AlignType } from 'rc-trigger/lib/interface';
4
4
  import * as React from 'react';
5
5
  import './index.scss';
6
+ export type DropPlacement = 'bottom-center' | 'bottom-left' | 'bottom-right' | 'top-center' | 'top-left' | 'top-right';
6
7
  export interface DropProps extends Pick<TriggerProps, 'alignPoint' | 'action' | 'autoDestroy' | 'blurDelay' | 'children' | 'focusDelay' | 'getPopupContainer' | 'hideAction' | 'mask' | 'maskClosable' | 'maskMotion' | 'mouseEnterDelay' | 'mouseLeaveDelay' | 'prefixCls' | 'showAction' | 'stretch' | 'zIndex'> {
7
8
  align?: AlignType;
8
9
  arrow?: boolean;
@@ -16,7 +17,7 @@ export interface DropProps extends Pick<TriggerProps, 'alignPoint' | 'action' |
16
17
  overlay?: (() => React.ReactElement) | React.ReactElement;
17
18
  overlayClassName?: string;
18
19
  overlayStyle?: React.CSSProperties;
19
- placement?: string;
20
+ placement?: DropPlacement;
20
21
  rootCls?: string;
21
22
  visible?: boolean;
22
23
  onAlign?: (element: HTMLElement, align: AlignType) => void;
@@ -824,6 +824,29 @@
824
824
 
825
825
  @mixin hook-cover-misc() {}
826
826
 
827
+ @mixin hook-datepicker() {}
828
+ @mixin hook-datepicker-hover() {}
829
+ @mixin hook-datepicker-focus() {}
830
+ @mixin hook-datepicker-input() {}
831
+ @mixin hook-datepicker-panel-layout() {}
832
+ @mixin hook-datepicker-panel() {}
833
+ @mixin hook-datepicker-datetime-panel() {}
834
+ @mixin hook-datepicker-time-panel() {}
835
+ @mixin hook-datepicker-date-panel() {}
836
+ @mixin hook-datepicker-month-panel() {}
837
+ @mixin hook-datepicker-quarter-panel() {}
838
+ @mixin hook-datepicker-decade-panel() {}
839
+ @mixin hook-datepicker-week-panel() {}
840
+ @mixin hook-datepicker-year-panel() {}
841
+ @mixin hook-datepicker-header() {}
842
+ @mixin hook-datepicker-header-view() {}
843
+ @mixin hook-datepicker-body() {}
844
+ @mixin hook-datepicker-content() {}
845
+ @mixin hook-datepicker-footer() {}
846
+ @mixin hook-datepicker-ranges() {}
847
+ @mixin hook-datepicker-cell() {}
848
+ @mixin hook-datepicker-cell-inner() {}
849
+ @mixin hook-datepicker-time-panel-column() {}
827
850
  @mixin hook-datepicker-dropdown() {}
828
851
 
829
852
  @mixin hook-description-list-term() {}
@@ -623,19 +623,14 @@ $countdown-separator-font-size-m: 3rem !default; /
623
623
  // DatePicker
624
624
  // ========================================================================
625
625
 
626
- $datepicker-dropdown-background: $global-muted-background !default;
627
- $datepicker-dropdown-border: $global-border !default;
628
- $datepicker-dropdown-border-style: $global-border-style !default;
629
- $datepicker-dropdown-border-width: $global-border-width !default;
630
- $datepicker-dropdown-border-radius: $global-border-radius !default;
631
626
  $datepicker-button-font-size: $global-font-size !default;
632
- $datepicker-button-line-height: 40px !default;
627
+ $datepicker-button-line-height: $global-control-large-height !default;
633
628
  $datepicker-button-padding-horizontal: $global-small-gutter !default;
634
629
  $datepicker-body-padding-vertical: $global-small-gutter !default;
635
630
  $datepicker-body-padding-horizontal: $global-gutter !default;
636
631
  $datepicker-cell-border-radius: $global-small-border-radius !default;
637
- $datepicker-cell-height: 32px !default;
638
- $datepicker-cell-width: 44px !default;
632
+ $datepicker-cell-height: $global-control-height !default;
633
+ $datepicker-cell-width: $global-control-height * 1.05 !default;
639
634
  $datepicker-cell-padding: $global-xsmall-gutter !default;
640
635
  $datepicker-cell-color: $global-color !default;
641
636
  $datepicker-cell-hover-background: $global-secondary-background !default;
@@ -646,6 +641,11 @@ $datepicker-cell-disabled-color: $global-muted-co
646
641
  $datepicker-time-column-height: 252px !default;
647
642
  $datepicker-time-column-width: 60px !default;
648
643
  $datepicker-time-cell-height: 28px !default;
644
+ $datepicker-dropdown-background: $global-muted-background !default;
645
+ $datepicker-dropdown-border: $global-border !default;
646
+ $datepicker-dropdown-border-style: $global-border-style !default;
647
+ $datepicker-dropdown-border-width: $global-border-width !default;
648
+ $datepicker-dropdown-border-radius: $global-border-radius !default;
649
649
 
650
650
 
651
651
  // Description list