@rockshin/tao-ui 0.0.1 → 0.0.3
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/components/breadcrumb/breadcrumb.css +1091 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +43 -0
- package/dist/components/breadcrumb/breadcrumb.js +268 -0
- package/dist/components/button/button.css +46 -21
- package/dist/components/checkbox/checkbox.css +33 -12
- package/dist/components/collapsible/collapsible.css +1026 -0
- package/dist/components/collapsible/collapsible.d.ts +39 -0
- package/dist/components/collapsible/collapsible.js +168 -0
- package/dist/components/context-menu/context-menu.css +1149 -0
- package/dist/components/context-menu/context-menu.d.ts +19 -0
- package/dist/components/context-menu/context-menu.js +106 -0
- package/dist/components/date-picker/calendar/month-grid.d.ts +1 -1
- package/dist/components/date-picker/calendar/time-panel.d.ts +1 -1
- package/dist/components/date-picker/calendar/year-grid.d.ts +1 -1
- package/dist/components/date-picker/date-picker.css +87 -17
- package/dist/components/date-picker/date-picker.js +9 -7
- package/dist/components/date-picker/range-picker.js +9 -7
- package/dist/components/drawer/drawer.css +128 -15
- package/dist/components/drawer/drawer.d.ts +36 -3
- package/dist/components/drawer/drawer.js +323 -121
- package/dist/components/dropdown/dropdown.css +999 -0
- package/dist/components/dropdown/dropdown.d.ts +45 -0
- package/dist/components/dropdown/dropdown.js +383 -0
- package/dist/components/form-field/form.css +33 -12
- package/dist/components/input/input.css +86 -14
- package/dist/components/menu/menu-render.d.ts +89 -0
- package/dist/components/menu/menu-render.js +379 -0
- package/dist/components/menu/menu.css +1145 -0
- package/dist/components/modal/confirm-dialog.d.ts +37 -0
- package/dist/components/modal/confirm-dialog.js +193 -0
- package/dist/components/modal/confirm.d.ts +13 -0
- package/dist/components/modal/confirm.js +56 -0
- package/dist/components/modal/index.d.ts +21 -0
- package/dist/components/modal/index.js +18 -0
- package/dist/components/modal/modal.css +1169 -0
- package/dist/components/modal/modal.d.ts +50 -0
- package/dist/components/modal/modal.js +362 -0
- package/dist/components/modal/use-modal.d.ts +21 -0
- package/dist/components/modal/use-modal.js +83 -0
- package/dist/components/pagination/pagination.css +33 -12
- package/dist/components/pagination/pagination.js +3 -1
- package/dist/components/radio/radio.css +33 -12
- package/dist/components/scroll-area/scroll-area.css +33 -12
- package/dist/components/select/mobile-select.css +75 -13
- package/dist/components/select/mobile-select.d.ts +4 -1
- package/dist/components/select/mobile-select.js +103 -107
- package/dist/components/select/select.css +167 -26
- package/dist/components/select/select.d.ts +62 -4
- package/dist/components/select/select.js +359 -377
- package/dist/components/spinner/spinner.css +1084 -0
- package/dist/components/spinner/spinner.d.ts +26 -0
- package/dist/components/spinner/spinner.js +229 -0
- package/dist/components/splitter/splitter.css +33 -12
- package/dist/components/switch/switch.css +33 -12
- package/dist/components/table/table.css +57 -18
- package/dist/components/table/table.d.ts +17 -2
- package/dist/components/table/table.js +214 -206
- package/dist/components/tabs/tabs.css +36 -17
- package/dist/components/tag/tag.css +33 -12
- package/dist/components/textarea/textarea.css +1246 -0
- package/dist/components/textarea/textarea.d.ts +19 -0
- package/dist/components/textarea/textarea.js +181 -0
- package/dist/index.d.ts +25 -18
- package/dist/index.js +22 -15
- package/dist/layouts/stack/layout.css +33 -12
- package/dist/provider/tao-provider.d.ts +17 -1
- package/dist/provider/tao-provider.js +53 -15
- package/dist/theme/control.css +86 -13
- package/dist/theme/theme.css +33 -12
- package/llms.txt +7 -6
- package/package.json +18 -13
|
@@ -307,11 +307,16 @@
|
|
|
307
307
|
--tao-radius: 6px;
|
|
308
308
|
--tao-font-size: 14px;
|
|
309
309
|
--tao-control-height: 36px;
|
|
310
|
+
--tao-control-width: 200px;
|
|
311
|
+
--tao-control-range-width: 360px;
|
|
310
312
|
--tao-size-unit: 4px;
|
|
311
313
|
--tao-line-width: 1px;
|
|
312
314
|
--tao-font-family: "Geist Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
313
315
|
--tao-font-family-code: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
314
316
|
--tao-motion-unit: .1s;
|
|
317
|
+
--tao-z-index-drawer: 1000;
|
|
318
|
+
--tao-z-index-modal: 1000;
|
|
319
|
+
--tao-z-index-popup: 1100;
|
|
315
320
|
--tao-primary: var(--tao-color-primary);
|
|
316
321
|
--tao-primary-hover: var(--tao-color-primary);
|
|
317
322
|
}
|
|
@@ -529,8 +534,8 @@
|
|
|
529
534
|
}
|
|
530
535
|
|
|
531
536
|
:root, [data-tao-provider] {
|
|
532
|
-
--tao-color-bg-container:
|
|
533
|
-
--tao-color-bg-elevated:
|
|
537
|
+
--tao-color-bg-container: oklch(100% 0 0);
|
|
538
|
+
--tao-color-bg-elevated: oklch(100% 0 0);
|
|
534
539
|
--tao-color-border: var(--tao-color-text-base);
|
|
535
540
|
}
|
|
536
541
|
|
|
@@ -541,16 +546,7 @@
|
|
|
541
546
|
}
|
|
542
547
|
|
|
543
548
|
:root, [data-tao-provider] {
|
|
544
|
-
--tao-color-border-secondary:
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
548
|
-
:root, [data-tao-provider] {
|
|
549
|
-
--tao-color-border-secondary: color-mix(in oklch, var(--tao-color-text-base) 10%, var(--tao-color-bg-base));
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
:root, [data-tao-provider] {
|
|
549
|
+
--tao-color-border-secondary: #0000170b;
|
|
554
550
|
--tao-radius-xs: 2px;
|
|
555
551
|
--tao-radius-sm: calc(var(--tao-radius) - 2px);
|
|
556
552
|
--tao-radius-md: var(--tao-radius);
|
|
@@ -633,6 +629,10 @@
|
|
|
633
629
|
visibility: collapse;
|
|
634
630
|
}
|
|
635
631
|
|
|
632
|
+
.visible {
|
|
633
|
+
visibility: visible;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
636
|
.absolute {
|
|
637
637
|
position: absolute;
|
|
638
638
|
}
|
|
@@ -715,6 +715,10 @@
|
|
|
715
715
|
display: inline;
|
|
716
716
|
}
|
|
717
717
|
|
|
718
|
+
.inline-flex {
|
|
719
|
+
display: inline-flex;
|
|
720
|
+
}
|
|
721
|
+
|
|
718
722
|
.table {
|
|
719
723
|
display: table;
|
|
720
724
|
}
|
|
@@ -727,6 +731,10 @@
|
|
|
727
731
|
transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
|
|
728
732
|
}
|
|
729
733
|
|
|
734
|
+
.resize {
|
|
735
|
+
resize: both;
|
|
736
|
+
}
|
|
737
|
+
|
|
730
738
|
.flex-wrap {
|
|
731
739
|
flex-wrap: wrap;
|
|
732
740
|
}
|
|
@@ -742,6 +750,14 @@
|
|
|
742
750
|
border-width: 1px;
|
|
743
751
|
}
|
|
744
752
|
|
|
753
|
+
.italic {
|
|
754
|
+
font-style: italic;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
.underline {
|
|
758
|
+
text-decoration-line: underline;
|
|
759
|
+
}
|
|
760
|
+
|
|
745
761
|
.shadow {
|
|
746
762
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
|
|
747
763
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -771,6 +787,11 @@
|
|
|
771
787
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
772
788
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
773
789
|
}
|
|
790
|
+
|
|
791
|
+
.select-all {
|
|
792
|
+
-webkit-user-select: all;
|
|
793
|
+
user-select: all;
|
|
794
|
+
}
|
|
774
795
|
}
|
|
775
796
|
|
|
776
797
|
[data-tao-radio-wrapper] {
|
|
@@ -307,11 +307,16 @@
|
|
|
307
307
|
--tao-radius: 6px;
|
|
308
308
|
--tao-font-size: 14px;
|
|
309
309
|
--tao-control-height: 36px;
|
|
310
|
+
--tao-control-width: 200px;
|
|
311
|
+
--tao-control-range-width: 360px;
|
|
310
312
|
--tao-size-unit: 4px;
|
|
311
313
|
--tao-line-width: 1px;
|
|
312
314
|
--tao-font-family: "Geist Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
313
315
|
--tao-font-family-code: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
314
316
|
--tao-motion-unit: .1s;
|
|
317
|
+
--tao-z-index-drawer: 1000;
|
|
318
|
+
--tao-z-index-modal: 1000;
|
|
319
|
+
--tao-z-index-popup: 1100;
|
|
315
320
|
--tao-primary: var(--tao-color-primary);
|
|
316
321
|
--tao-primary-hover: var(--tao-color-primary);
|
|
317
322
|
}
|
|
@@ -529,8 +534,8 @@
|
|
|
529
534
|
}
|
|
530
535
|
|
|
531
536
|
:root, [data-tao-provider] {
|
|
532
|
-
--tao-color-bg-container:
|
|
533
|
-
--tao-color-bg-elevated:
|
|
537
|
+
--tao-color-bg-container: oklch(100% 0 0);
|
|
538
|
+
--tao-color-bg-elevated: oklch(100% 0 0);
|
|
534
539
|
--tao-color-border: var(--tao-color-text-base);
|
|
535
540
|
}
|
|
536
541
|
|
|
@@ -541,16 +546,7 @@
|
|
|
541
546
|
}
|
|
542
547
|
|
|
543
548
|
:root, [data-tao-provider] {
|
|
544
|
-
--tao-color-border-secondary:
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
548
|
-
:root, [data-tao-provider] {
|
|
549
|
-
--tao-color-border-secondary: color-mix(in oklch, var(--tao-color-text-base) 10%, var(--tao-color-bg-base));
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
:root, [data-tao-provider] {
|
|
549
|
+
--tao-color-border-secondary: #0000170b;
|
|
554
550
|
--tao-radius-xs: 2px;
|
|
555
551
|
--tao-radius-sm: calc(var(--tao-radius) - 2px);
|
|
556
552
|
--tao-radius-md: var(--tao-radius);
|
|
@@ -633,6 +629,10 @@
|
|
|
633
629
|
visibility: collapse;
|
|
634
630
|
}
|
|
635
631
|
|
|
632
|
+
.visible {
|
|
633
|
+
visibility: visible;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
636
|
.absolute {
|
|
637
637
|
position: absolute;
|
|
638
638
|
}
|
|
@@ -715,6 +715,10 @@
|
|
|
715
715
|
display: inline;
|
|
716
716
|
}
|
|
717
717
|
|
|
718
|
+
.inline-flex {
|
|
719
|
+
display: inline-flex;
|
|
720
|
+
}
|
|
721
|
+
|
|
718
722
|
.table {
|
|
719
723
|
display: table;
|
|
720
724
|
}
|
|
@@ -727,6 +731,10 @@
|
|
|
727
731
|
transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
|
|
728
732
|
}
|
|
729
733
|
|
|
734
|
+
.resize {
|
|
735
|
+
resize: both;
|
|
736
|
+
}
|
|
737
|
+
|
|
730
738
|
.flex-wrap {
|
|
731
739
|
flex-wrap: wrap;
|
|
732
740
|
}
|
|
@@ -742,6 +750,14 @@
|
|
|
742
750
|
border-width: 1px;
|
|
743
751
|
}
|
|
744
752
|
|
|
753
|
+
.italic {
|
|
754
|
+
font-style: italic;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
.underline {
|
|
758
|
+
text-decoration-line: underline;
|
|
759
|
+
}
|
|
760
|
+
|
|
745
761
|
.shadow {
|
|
746
762
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
|
|
747
763
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -771,6 +787,11 @@
|
|
|
771
787
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
772
788
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
773
789
|
}
|
|
790
|
+
|
|
791
|
+
.select-all {
|
|
792
|
+
-webkit-user-select: all;
|
|
793
|
+
user-select: all;
|
|
794
|
+
}
|
|
774
795
|
}
|
|
775
796
|
|
|
776
797
|
[data-tao-scroll-area] {
|
|
@@ -307,11 +307,16 @@
|
|
|
307
307
|
--tao-radius: 6px;
|
|
308
308
|
--tao-font-size: 14px;
|
|
309
309
|
--tao-control-height: 36px;
|
|
310
|
+
--tao-control-width: 200px;
|
|
311
|
+
--tao-control-range-width: 360px;
|
|
310
312
|
--tao-size-unit: 4px;
|
|
311
313
|
--tao-line-width: 1px;
|
|
312
314
|
--tao-font-family: "Geist Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
313
315
|
--tao-font-family-code: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
314
316
|
--tao-motion-unit: .1s;
|
|
317
|
+
--tao-z-index-drawer: 1000;
|
|
318
|
+
--tao-z-index-modal: 1000;
|
|
319
|
+
--tao-z-index-popup: 1100;
|
|
315
320
|
--tao-primary: var(--tao-color-primary);
|
|
316
321
|
--tao-primary-hover: var(--tao-color-primary);
|
|
317
322
|
}
|
|
@@ -529,8 +534,8 @@
|
|
|
529
534
|
}
|
|
530
535
|
|
|
531
536
|
:root, [data-tao-provider] {
|
|
532
|
-
--tao-color-bg-container:
|
|
533
|
-
--tao-color-bg-elevated:
|
|
537
|
+
--tao-color-bg-container: oklch(100% 0 0);
|
|
538
|
+
--tao-color-bg-elevated: oklch(100% 0 0);
|
|
534
539
|
--tao-color-border: var(--tao-color-text-base);
|
|
535
540
|
}
|
|
536
541
|
|
|
@@ -541,16 +546,7 @@
|
|
|
541
546
|
}
|
|
542
547
|
|
|
543
548
|
:root, [data-tao-provider] {
|
|
544
|
-
--tao-color-border-secondary:
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
548
|
-
:root, [data-tao-provider] {
|
|
549
|
-
--tao-color-border-secondary: color-mix(in oklch, var(--tao-color-text-base) 10%, var(--tao-color-bg-base));
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
:root, [data-tao-provider] {
|
|
549
|
+
--tao-color-border-secondary: #0000170b;
|
|
554
550
|
--tao-radius-xs: 2px;
|
|
555
551
|
--tao-radius-sm: calc(var(--tao-radius) - 2px);
|
|
556
552
|
--tao-radius-md: var(--tao-radius);
|
|
@@ -633,6 +629,10 @@
|
|
|
633
629
|
visibility: collapse;
|
|
634
630
|
}
|
|
635
631
|
|
|
632
|
+
.visible {
|
|
633
|
+
visibility: visible;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
636
|
.absolute {
|
|
637
637
|
position: absolute;
|
|
638
638
|
}
|
|
@@ -715,6 +715,10 @@
|
|
|
715
715
|
display: inline;
|
|
716
716
|
}
|
|
717
717
|
|
|
718
|
+
.inline-flex {
|
|
719
|
+
display: inline-flex;
|
|
720
|
+
}
|
|
721
|
+
|
|
718
722
|
.table {
|
|
719
723
|
display: table;
|
|
720
724
|
}
|
|
@@ -727,6 +731,10 @@
|
|
|
727
731
|
transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
|
|
728
732
|
}
|
|
729
733
|
|
|
734
|
+
.resize {
|
|
735
|
+
resize: both;
|
|
736
|
+
}
|
|
737
|
+
|
|
730
738
|
.flex-wrap {
|
|
731
739
|
flex-wrap: wrap;
|
|
732
740
|
}
|
|
@@ -742,6 +750,14 @@
|
|
|
742
750
|
border-width: 1px;
|
|
743
751
|
}
|
|
744
752
|
|
|
753
|
+
.italic {
|
|
754
|
+
font-style: italic;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
.underline {
|
|
758
|
+
text-decoration-line: underline;
|
|
759
|
+
}
|
|
760
|
+
|
|
745
761
|
.shadow {
|
|
746
762
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);
|
|
747
763
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -771,6 +787,11 @@
|
|
|
771
787
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
772
788
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
773
789
|
}
|
|
790
|
+
|
|
791
|
+
.select-all {
|
|
792
|
+
-webkit-user-select: all;
|
|
793
|
+
user-select: all;
|
|
794
|
+
}
|
|
774
795
|
}
|
|
775
796
|
|
|
776
797
|
[data-tao-drawer]:has([data-tao-sheet-list]) [data-tao-drawer-body] {
|
|
@@ -813,6 +834,13 @@
|
|
|
813
834
|
overflow-y: auto;
|
|
814
835
|
}
|
|
815
836
|
|
|
837
|
+
[data-tao-sheet-group-label] {
|
|
838
|
+
padding: var(--tao-padding-sm) var(--tao-padding) var(--tao-padding-xxs);
|
|
839
|
+
font-size: var(--tao-font-size-sm);
|
|
840
|
+
font-weight: var(--tao-font-weight-medium);
|
|
841
|
+
color: var(--tao-color-text-tertiary);
|
|
842
|
+
}
|
|
843
|
+
|
|
816
844
|
[data-tao-sheet-item] {
|
|
817
845
|
min-height: 48px;
|
|
818
846
|
padding-inline: var(--tao-padding);
|
|
@@ -838,10 +866,44 @@
|
|
|
838
866
|
cursor: not-allowed;
|
|
839
867
|
}
|
|
840
868
|
|
|
869
|
+
[data-tao-sheet-item-icon] {
|
|
870
|
+
border-radius: var(--tao-radius-md);
|
|
871
|
+
width: 2rem;
|
|
872
|
+
height: 2rem;
|
|
873
|
+
flex-shrink: 0;
|
|
874
|
+
justify-content: center;
|
|
875
|
+
align-items: center;
|
|
876
|
+
margin-inline-end: var(--tao-padding-sm);
|
|
877
|
+
display: inline-flex;
|
|
878
|
+
overflow: hidden;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
[data-tao-sheet-item-icon] > * {
|
|
882
|
+
object-fit: cover;
|
|
883
|
+
width: 100%;
|
|
884
|
+
height: 100%;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
[data-tao-sheet-item-main] {
|
|
888
|
+
flex-direction: column;
|
|
889
|
+
flex: 1;
|
|
890
|
+
min-width: 0;
|
|
891
|
+
display: flex;
|
|
892
|
+
}
|
|
893
|
+
|
|
841
894
|
[data-tao-sheet-item-label] {
|
|
842
895
|
text-overflow: ellipsis;
|
|
843
896
|
white-space: nowrap;
|
|
844
|
-
|
|
897
|
+
overflow: hidden;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
[data-tao-sheet-item-desc] {
|
|
901
|
+
font-size: var(--tao-font-size-sm);
|
|
902
|
+
line-height: var(--tao-line-height-sm);
|
|
903
|
+
color: var(--tao-color-text-tertiary);
|
|
904
|
+
text-overflow: ellipsis;
|
|
905
|
+
white-space: nowrap;
|
|
906
|
+
margin-block-start: 2px;
|
|
845
907
|
overflow: hidden;
|
|
846
908
|
}
|
|
847
909
|
|
|
@@ -9,9 +9,12 @@ interface MobileSelectContentProps {
|
|
|
9
9
|
showSearch?: boolean;
|
|
10
10
|
filterOption?: (input: string, option: SelectOption) => boolean;
|
|
11
11
|
notFoundContent?: ReactNode;
|
|
12
|
+
optionRender?: (option: SelectOption, info: {
|
|
13
|
+
index: number;
|
|
14
|
+
}) => ReactNode;
|
|
12
15
|
onClose: () => void;
|
|
13
16
|
}
|
|
14
|
-
export declare function MobileSelectContent({ options, value, onChange, showSearch, filterOption, notFoundContent, onClose, }: MobileSelectContentProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function MobileSelectContent({ options, value, onChange, showSearch, filterOption, notFoundContent, optionRender, onClose, }: MobileSelectContentProps): import("react/jsx-runtime").JSX.Element;
|
|
15
18
|
export interface MobileSelectDrawerProps extends MobileSelectContentProps {
|
|
16
19
|
open: boolean;
|
|
17
20
|
}
|
|
@@ -1,126 +1,122 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { c } from "react/compiler-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
3
|
+
import { useCallback, useMemo, useState } from "react";
|
|
4
4
|
import { Drawer } from "../drawer/drawer.js";
|
|
5
5
|
import "./mobile-select.css";
|
|
6
6
|
const defaultFilter = (input, option)=>{
|
|
7
7
|
const label = 'string' == typeof option.label ? option.label : String(option.label);
|
|
8
8
|
return label.toLowerCase().includes(input.toLowerCase());
|
|
9
9
|
};
|
|
10
|
-
function
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
function filterTree(options, fn, input) {
|
|
11
|
+
const result = [];
|
|
12
|
+
for (const o of options)if (o.options) {
|
|
13
|
+
const kids = filterTree(o.options, fn, input);
|
|
14
|
+
if (kids.length) result.push({
|
|
15
|
+
...o,
|
|
16
|
+
options: kids
|
|
17
|
+
});
|
|
18
|
+
} else if (fn(input, o)) result.push(o);
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
function countLeaves(options) {
|
|
22
|
+
return options.reduce((n, o)=>n + (o.options ? countLeaves(o.options) : 1), 0);
|
|
23
|
+
}
|
|
24
|
+
function MobileSelectContent({ options, value, onChange, showSearch, filterOption, notFoundContent = 'No results', optionRender, onClose }) {
|
|
25
|
+
const [search, setSearch] = useState('');
|
|
26
|
+
const filteredOptions = useMemo(()=>{
|
|
27
|
+
if (!showSearch || !search) return options;
|
|
21
28
|
const fn = filterOption ?? defaultFilter;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
$[9] = t3;
|
|
49
|
-
} else t3 = $[9];
|
|
50
|
-
const handleSelect = t3;
|
|
51
|
-
let t4;
|
|
52
|
-
if ($[10] !== search || $[11] !== showSearch) {
|
|
53
|
-
t4 = showSearch && /*#__PURE__*/ jsxs("div", {
|
|
54
|
-
"data-tao-sheet-search": "",
|
|
29
|
+
return filterTree(options, fn, search);
|
|
30
|
+
}, [
|
|
31
|
+
options,
|
|
32
|
+
search,
|
|
33
|
+
showSearch,
|
|
34
|
+
filterOption
|
|
35
|
+
]);
|
|
36
|
+
const handleSelect = useCallback((optValue)=>{
|
|
37
|
+
onChange?.(optValue);
|
|
38
|
+
onClose();
|
|
39
|
+
}, [
|
|
40
|
+
onChange,
|
|
41
|
+
onClose
|
|
42
|
+
]);
|
|
43
|
+
let optIndex = 0;
|
|
44
|
+
const renderItem = (opt)=>{
|
|
45
|
+
const index = optIndex++;
|
|
46
|
+
const isSelected = opt.value === value;
|
|
47
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
48
|
+
"data-tao-sheet-item": "",
|
|
49
|
+
"data-tao-selected": isSelected || void 0,
|
|
50
|
+
"data-tao-disabled": opt.disabled || void 0,
|
|
51
|
+
onClick: ()=>{
|
|
52
|
+
if (!opt.disabled) handleSelect(opt.value);
|
|
53
|
+
},
|
|
54
|
+
"data-tao-has-desc": null != opt.description || void 0,
|
|
55
55
|
children: [
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
optionRender ? optionRender(opt, {
|
|
57
|
+
index
|
|
58
|
+
}) : /*#__PURE__*/ jsxs(Fragment, {
|
|
59
|
+
children: [
|
|
60
|
+
null != opt.icon && /*#__PURE__*/ jsx("span", {
|
|
61
|
+
"data-tao-sheet-item-icon": "",
|
|
62
|
+
children: opt.icon
|
|
63
|
+
}),
|
|
64
|
+
/*#__PURE__*/ jsxs("span", {
|
|
65
|
+
"data-tao-sheet-item-main": "",
|
|
66
|
+
children: [
|
|
67
|
+
/*#__PURE__*/ jsx("span", {
|
|
68
|
+
"data-tao-sheet-item-label": "",
|
|
69
|
+
children: opt.label
|
|
70
|
+
}),
|
|
71
|
+
null != opt.description && /*#__PURE__*/ jsx("span", {
|
|
72
|
+
"data-tao-sheet-item-desc": "",
|
|
73
|
+
children: opt.description
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
})
|
|
77
|
+
]
|
|
78
|
+
}),
|
|
79
|
+
isSelected && /*#__PURE__*/ jsx("span", {
|
|
80
|
+
"data-tao-sheet-item-check": "",
|
|
81
|
+
children: /*#__PURE__*/ jsx(CheckIcon, {})
|
|
63
82
|
})
|
|
64
83
|
]
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
} else t4 = $[12];
|
|
70
|
-
let t5;
|
|
71
|
-
if ($[13] !== filteredOptions || $[14] !== handleSelect || $[15] !== notFoundContent || $[16] !== value) {
|
|
72
|
-
t5 = filteredOptions.length > 0 ? filteredOptions.map((opt)=>{
|
|
73
|
-
const isSelected = opt.value === value;
|
|
74
|
-
return /*#__PURE__*/ jsxs("div", {
|
|
75
|
-
"data-tao-sheet-item": "",
|
|
76
|
-
"data-tao-selected": isSelected || void 0,
|
|
77
|
-
"data-tao-disabled": opt.disabled || void 0,
|
|
78
|
-
onClick: ()=>{
|
|
79
|
-
if (!opt.disabled) handleSelect(opt.value);
|
|
80
|
-
},
|
|
84
|
+
}, opt.value);
|
|
85
|
+
};
|
|
86
|
+
const renderTree = (opts)=>opts.map((o)=>o.options ? /*#__PURE__*/ jsxs("div", {
|
|
87
|
+
"data-tao-sheet-group": "",
|
|
81
88
|
children: [
|
|
82
|
-
/*#__PURE__*/ jsx("
|
|
83
|
-
"data-tao-sheet-
|
|
84
|
-
children:
|
|
89
|
+
/*#__PURE__*/ jsx("div", {
|
|
90
|
+
"data-tao-sheet-group-label": "",
|
|
91
|
+
children: o.label
|
|
85
92
|
}),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
o.options.map(renderItem)
|
|
94
|
+
]
|
|
95
|
+
}, o.value) : renderItem(o));
|
|
96
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
97
|
+
children: [
|
|
98
|
+
showSearch && /*#__PURE__*/ jsxs("div", {
|
|
99
|
+
"data-tao-sheet-search": "",
|
|
100
|
+
children: [
|
|
101
|
+
/*#__PURE__*/ jsx(SearchIcon, {}),
|
|
102
|
+
/*#__PURE__*/ jsx("input", {
|
|
103
|
+
"data-tao-sheet-search-input": "",
|
|
104
|
+
value: search,
|
|
105
|
+
onChange: (e)=>setSearch(e.target.value),
|
|
106
|
+
placeholder: "Search...",
|
|
107
|
+
autoFocus: true
|
|
89
108
|
})
|
|
90
109
|
]
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
} else t5 = $[17];
|
|
102
|
-
let t6;
|
|
103
|
-
if ($[18] !== t5) {
|
|
104
|
-
t6 = /*#__PURE__*/ jsx("div", {
|
|
105
|
-
"data-tao-sheet-list": "",
|
|
106
|
-
children: t5
|
|
107
|
-
});
|
|
108
|
-
$[18] = t5;
|
|
109
|
-
$[19] = t6;
|
|
110
|
-
} else t6 = $[19];
|
|
111
|
-
let t7;
|
|
112
|
-
if ($[20] !== t4 || $[21] !== t6) {
|
|
113
|
-
t7 = /*#__PURE__*/ jsxs(Fragment, {
|
|
114
|
-
children: [
|
|
115
|
-
t4,
|
|
116
|
-
t6
|
|
117
|
-
]
|
|
118
|
-
});
|
|
119
|
-
$[20] = t4;
|
|
120
|
-
$[21] = t6;
|
|
121
|
-
$[22] = t7;
|
|
122
|
-
} else t7 = $[22];
|
|
123
|
-
return t7;
|
|
110
|
+
}),
|
|
111
|
+
/*#__PURE__*/ jsx("div", {
|
|
112
|
+
"data-tao-sheet-list": "",
|
|
113
|
+
children: countLeaves(filteredOptions) > 0 ? renderTree(filteredOptions) : /*#__PURE__*/ jsx("div", {
|
|
114
|
+
"data-tao-sheet-empty": "",
|
|
115
|
+
children: notFoundContent
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
});
|
|
124
120
|
}
|
|
125
121
|
function MobileSelectDrawer(t0) {
|
|
126
122
|
const $ = c(14);
|