@flux-ui/components 3.0.0-next.61 → 3.0.0-next.64

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 (125) hide show
  1. package/dist/component/FluxActionStack.vue.d.ts +25 -19
  2. package/dist/component/FluxAspectRatio.vue.d.ts +4 -3
  3. package/dist/component/FluxBorderShine.vue.d.ts +1 -1
  4. package/dist/component/FluxCalendar.vue.d.ts +2 -6
  5. package/dist/component/FluxContainer.vue.d.ts +3 -2
  6. package/dist/component/FluxFilter.vue.d.ts +6 -7
  7. package/dist/component/FluxFilterBar.vue.d.ts +5 -4
  8. package/dist/component/FluxFilterBase.vue.d.ts +14 -11
  9. package/dist/component/FluxFilterDate.vue.d.ts +3 -6
  10. package/dist/component/FluxFilterDateRange.vue.d.ts +3 -6
  11. package/dist/component/FluxFilterOption.vue.d.ts +3 -6
  12. package/dist/component/FluxFilterOptionAsync.vue.d.ts +3 -6
  13. package/dist/component/FluxFilterOptions.vue.d.ts +3 -6
  14. package/dist/component/FluxFilterOptionsAsync.vue.d.ts +3 -6
  15. package/dist/component/FluxFilterRange.vue.d.ts +3 -7
  16. package/dist/component/FluxFilterWindow.vue.d.ts +3 -8
  17. package/dist/component/FluxFlex.vue.d.ts +30 -0
  18. package/dist/component/{FluxRow.vue.d.ts → FluxFlexItem.vue.d.ts} +5 -3
  19. package/dist/component/FluxGrid.vue.d.ts +3 -2
  20. package/dist/component/FluxGridColumn.vue.d.ts +3 -2
  21. package/dist/component/FluxKanbanColumn.vue.d.ts +3 -0
  22. package/dist/component/FluxScroller.vue.d.ts +32 -0
  23. package/dist/component/{FluxStack.vue.d.ts → FluxSplitView.vue.d.ts} +7 -6
  24. package/dist/component/{FluxColumn.vue.d.ts → FluxSplitViewPane.vue.d.ts} +4 -1
  25. package/dist/component/FluxSticky.vue.d.ts +34 -0
  26. package/dist/component/index.d.ts +6 -3
  27. package/dist/component/primitive/FilterBadge.vue.d.ts +2 -2
  28. package/dist/component/primitive/FilterItem.vue.d.ts +3 -2
  29. package/dist/component/primitive/SelectBase.vue.d.ts +4 -4
  30. package/dist/composable/private/index.d.ts +1 -0
  31. package/dist/composable/private/useSplitView.d.ts +23 -0
  32. package/dist/data/di.d.ts +19 -2
  33. package/dist/data/index.d.ts +0 -1
  34. package/dist/index.css +778 -526
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +10381 -9732
  37. package/dist/index.js.map +1 -1
  38. package/dist/util/defineFilter.d.ts +3 -0
  39. package/dist/util/filter.d.ts +7 -0
  40. package/dist/util/index.d.ts +2 -0
  41. package/dist/vite/defineFilterMacro.d.ts +3 -0
  42. package/dist/vite/index.d.ts +1 -0
  43. package/dist/vite.js +217 -0
  44. package/dist/vite.js.map +1 -0
  45. package/package.json +11 -7
  46. package/src/component/FluxActionBar.vue +3 -4
  47. package/src/component/FluxActionStack.vue +3 -3
  48. package/src/component/FluxAspectRatio.vue +5 -3
  49. package/src/component/FluxBadgeStack.vue +4 -4
  50. package/src/component/FluxButtonStack.vue +6 -4
  51. package/src/component/FluxCalendar.vue +160 -157
  52. package/src/component/FluxContainer.vue +4 -2
  53. package/src/component/FluxFilter.vue +10 -11
  54. package/src/component/FluxFilterBar.vue +71 -15
  55. package/src/component/FluxFilterBase.vue +65 -51
  56. package/src/component/FluxFilterDate.vue +24 -8
  57. package/src/component/FluxFilterDateRange.vue +27 -9
  58. package/src/component/FluxFilterOption.vue +20 -10
  59. package/src/component/FluxFilterOptionAsync.vue +19 -11
  60. package/src/component/FluxFilterOptions.vue +26 -11
  61. package/src/component/FluxFilterOptionsAsync.vue +28 -12
  62. package/src/component/FluxFilterRange.vue +25 -11
  63. package/src/component/FluxFilterWindow.vue +25 -11
  64. package/src/component/FluxFlex.vue +53 -0
  65. package/src/component/FluxFlexItem.vue +40 -0
  66. package/src/component/FluxFormDateTimeInput.vue +3 -4
  67. package/src/component/FluxGrid.vue +4 -2
  68. package/src/component/FluxGridColumn.vue +4 -2
  69. package/src/component/FluxInfoStack.vue +3 -3
  70. package/src/component/FluxItemStack.vue +4 -4
  71. package/src/component/FluxKanbanColumn.vue +16 -3
  72. package/src/component/FluxNoticeStack.vue +3 -3
  73. package/src/component/FluxPane.vue +10 -7
  74. package/src/component/FluxProgressBar.vue +4 -3
  75. package/src/component/FluxScroller.vue +63 -0
  76. package/src/component/FluxSplitView.vue +101 -0
  77. package/src/component/FluxSplitViewPane.vue +23 -0
  78. package/src/component/FluxSticky.vue +67 -0
  79. package/src/component/FluxTagStack.vue +4 -4
  80. package/src/component/FluxToolbar.vue +3 -4
  81. package/src/component/FluxToolbarGroup.vue +3 -4
  82. package/src/component/FluxTooltipProvider.vue +56 -25
  83. package/src/component/index.ts +6 -3
  84. package/src/component/primitive/FilterBadge.vue +2 -2
  85. package/src/component/primitive/FilterItem.vue +4 -2
  86. package/src/component/primitive/FilterMenuRenderer.ts +10 -5
  87. package/src/component/primitive/FilterOptionBase.vue +1 -1
  88. package/src/composable/private/index.ts +1 -0
  89. package/src/composable/private/useAsyncFilterOptions.ts +1 -1
  90. package/src/composable/private/useFilterOption.ts +1 -1
  91. package/src/composable/private/useSplitView.ts +249 -0
  92. package/src/composable/useFilterInjection.ts +3 -1
  93. package/src/css/component/Calendar.module.scss +11 -17
  94. package/src/css/component/Comment.module.scss +3 -11
  95. package/src/css/component/Filter.module.scss +6 -2
  96. package/src/css/component/Flex.module.scss +84 -0
  97. package/src/css/component/Flyout.module.scss +1 -0
  98. package/src/css/component/Kanban.module.scss +31 -28
  99. package/src/css/component/LayerPane.module.scss +5 -0
  100. package/src/css/component/Layout.module.scss +0 -41
  101. package/src/css/component/Legend.module.scss +3 -4
  102. package/src/css/component/Menu.module.scss +1 -0
  103. package/src/css/component/Notice.module.scss +1 -1
  104. package/src/css/component/Pagination.module.scss +1 -1
  105. package/src/css/component/Pane.module.scss +1 -1
  106. package/src/css/component/Progress.module.scss +2 -2
  107. package/src/css/component/Scroller.module.scss +109 -0
  108. package/src/css/component/SplitView.module.scss +78 -0
  109. package/src/css/component/Sticky.module.scss +35 -0
  110. package/src/css/component/Tab.module.scss +1 -0
  111. package/src/css/component/Table.module.scss +1 -0
  112. package/src/css/component/Tooltip.module.scss +14 -0
  113. package/src/data/di.ts +22 -2
  114. package/src/data/index.ts +0 -1
  115. package/src/index.ts +11 -0
  116. package/src/util/defineFilter.ts +10 -0
  117. package/src/util/filter.ts +63 -0
  118. package/src/util/index.ts +2 -0
  119. package/src/vite/defineFilterMacro.ts +335 -0
  120. package/src/vite/index.ts +1 -0
  121. package/dist/data/filter.d.ts +0 -7
  122. package/src/component/FluxColumn.vue +0 -24
  123. package/src/component/FluxRow.vue +0 -24
  124. package/src/component/FluxStack.vue +0 -41
  125. package/src/data/filter.ts +0 -165
@@ -0,0 +1,84 @@
1
+ .flex {
2
+ --gap: 0;
3
+
4
+ display: flex;
5
+ gap: var(--gap);
6
+ }
7
+
8
+ .flexInline {
9
+ composes: flex;
10
+
11
+ display: inline-flex;
12
+ }
13
+
14
+ .flexDirectionHorizontal {
15
+ flex-direction: row;
16
+ }
17
+
18
+ .flexDirectionVertical {
19
+ flex-direction: column;
20
+ }
21
+
22
+ .flexAlignStart {
23
+ align-items: flex-start;
24
+ }
25
+
26
+ .flexAlignCenter {
27
+ align-items: center;
28
+ }
29
+
30
+ .flexAlignEnd {
31
+ align-items: flex-end;
32
+ }
33
+
34
+ .flexAlignStretch {
35
+ align-items: stretch;
36
+ }
37
+
38
+ .flexAlignBaseline {
39
+ align-items: baseline;
40
+ }
41
+
42
+ .flexJustifyStart {
43
+ justify-content: flex-start;
44
+ }
45
+
46
+ .flexJustifyCenter {
47
+ justify-content: center;
48
+ }
49
+
50
+ .flexJustifyEnd {
51
+ justify-content: flex-end;
52
+ }
53
+
54
+ .flexJustifyBetween {
55
+ justify-content: space-between;
56
+ }
57
+
58
+ .flexJustifyAround {
59
+ justify-content: space-around;
60
+ }
61
+
62
+ .flexJustifyEvenly {
63
+ justify-content: space-evenly;
64
+ }
65
+
66
+ .flexWrapWrap {
67
+ flex-wrap: wrap;
68
+ }
69
+
70
+ .flexWrapNowrap {
71
+ flex-wrap: nowrap;
72
+ }
73
+
74
+ .flexWrapWrapReverse {
75
+ flex-wrap: wrap-reverse;
76
+ }
77
+
78
+ .flexFill {
79
+ width: 100%;
80
+ }
81
+
82
+ .flexItem {
83
+ min-width: 0;
84
+ }
@@ -18,6 +18,7 @@
18
18
 
19
19
  .flyoutPane {
20
20
  max-height: calc(100dvh - 120px);
21
+ width: max-content;
21
22
  box-shadow: var(--shadow-md);
22
23
  overflow: auto;
23
24
  transform: translate3d(var(--pane-mx), var(--pane-my), 0);
@@ -7,8 +7,6 @@
7
7
  grid-auto-flow: column;
8
8
  grid-auto-columns: minmax(300px, 1fr);
9
9
  grid-template-rows: auto 1fr auto;
10
- margin: -9px;
11
- padding: 9px;
12
10
  gap: 0 15px;
13
11
  overflow-x: auto;
14
12
  }
@@ -35,7 +33,7 @@
35
33
  border: 1px solid var(--surface-stroke);
36
34
  border-radius: var(--radius);
37
35
  outline: 2px dashed transparent;
38
- outline-offset: 2px;
36
+ outline-offset: -2px;
39
37
  overflow: hidden;
40
38
  transition: 210ms var(--swift-out);
41
39
  transition-property: background, border, outline-color, opacity, z-index;
@@ -66,6 +64,21 @@
66
64
  @include mixin.focus-ring(-2);
67
65
  }
68
66
 
67
+ .kanbanColumnHeaderCaption {
68
+ display: flex;
69
+ padding-left: 9px;
70
+ align-items: center;
71
+ gap: 9px;
72
+
73
+ :local(.icon) {
74
+ font-size: 16px;
75
+ }
76
+
77
+ :global(span) {
78
+ font-weight: 500;
79
+ }
80
+ }
81
+
69
82
  .kanbanColumn.isReorderable .kanbanColumnHeader {
70
83
  cursor: grab;
71
84
  }
@@ -74,14 +87,6 @@
74
87
  cursor: grabbing;
75
88
  }
76
89
 
77
- .kanbanColumnLabel {
78
- flex: 1;
79
- font-size: 14px;
80
- font-weight: 600;
81
- color: var(--foreground);
82
- text-transform: uppercase;
83
- }
84
-
85
90
  .kanbanColumnBody {
86
91
  position: relative;
87
92
  display: flex;
@@ -117,9 +122,7 @@
117
122
  flex: 1;
118
123
  align-items: center;
119
124
  justify-content: center;
120
- padding: 18px 12px;
121
- font-size: .8125rem;
122
- color: var(--gray-500);
125
+ color: var(--foreground-secondary);
123
126
  text-align: center;
124
127
  }
125
128
 
@@ -130,9 +133,9 @@
130
133
 
131
134
  .kanbanDropIndicator {
132
135
  position: absolute;
133
- top: -3px;
136
+ top: -2px;
134
137
  inset-inline: 15px;
135
- height: 4px;
138
+ height: 2px;
136
139
  border-radius: 999px;
137
140
  background: var(--primary-500);
138
141
  opacity: 0;
@@ -165,6 +168,18 @@
165
168
  &:active {
166
169
  cursor: grabbing;
167
170
  }
171
+
172
+ &.isDragging {
173
+ opacity: .4;
174
+ cursor: grabbing;
175
+ }
176
+
177
+ &.isGrabbed {
178
+ transform: scale(1.04);
179
+ outline: 2px solid var(--primary-500);
180
+ outline-offset: 2px;
181
+ z-index: 1;
182
+ }
168
183
  }
169
184
 
170
185
  .kanbanItem.isDisabled {
@@ -175,15 +190,3 @@
175
190
  cursor: not-allowed;
176
191
  }
177
192
  }
178
-
179
- .isDragging {
180
- opacity: .4;
181
- cursor: grabbing;
182
- }
183
-
184
- .isGrabbed {
185
- transform: scale(1.04);
186
- outline: 2px solid var(--primary-500);
187
- outline-offset: 2px;
188
- z-index: 1;
189
- }
@@ -31,6 +31,11 @@
31
31
  border-bottom-right-radius: 0;
32
32
  }
33
33
 
34
+ .layerPane > .paneFooter {
35
+ background: unset;
36
+ border: 0;
37
+ }
38
+
34
39
  .layerPaneSecondary {
35
40
  display: flex;
36
41
  align-items: center;
@@ -23,47 +23,6 @@
23
23
  @include mixin.breakpoint-max-widths;
24
24
  }
25
25
 
26
- .column {
27
- display: flex;
28
- flex-flow: column;
29
- gap: var(--gap, 0);
30
- }
31
-
32
- .row {
33
- display: flex;
34
- gap: var(--gap, 0);
35
- }
36
-
37
26
  .spacer {
38
27
  flex-grow: 1;
39
28
  }
40
-
41
- .stack {
42
- gap: var(--gap, 0);
43
-
44
- &.isCentered {
45
- place-content: center;
46
- place-items: center;
47
- }
48
-
49
- &.isFill {
50
- width: 100%;
51
- }
52
-
53
- &.isWrapping {
54
- flex-wrap: wrap;
55
- }
56
- }
57
-
58
- .stackHorizontal {
59
- composes: stack;
60
-
61
- display: flex;
62
- }
63
-
64
- .stackVertical {
65
- composes: stack;
66
-
67
- display: flex;
68
- flex-flow: column;
69
- }
@@ -1,12 +1,11 @@
1
1
  .legendHorizontal {
2
- composes: stackHorizontal from './Layout.module.scss';
3
-
2
+ display: flex;
4
3
  gap: 12px 18px;
5
4
  }
6
5
 
7
6
  .legendVertical {
8
- composes: stackVertical from './Layout.module.scss';
9
-
7
+ display: flex;
8
+ flex-flow: column;
10
9
  gap: 12px;
11
10
  }
12
11
 
@@ -47,6 +47,7 @@
47
47
  box-shadow: none;
48
48
  color: var(--foreground);
49
49
  text-align: left;
50
+ transition-duration: 0s;
50
51
 
51
52
  @include mixin.hover {
52
53
  background: var(--gray-100);
@@ -65,7 +65,7 @@
65
65
  }
66
66
 
67
67
  > .icon {
68
- font-size: 14px;
68
+ font-size: 12px;
69
69
  }
70
70
  }
71
71
 
@@ -91,6 +91,6 @@
91
91
  @include mixin.breakpoint-down(sm) {
92
92
  .paginationBar {
93
93
  flex-flow: column;
94
- gap: 15px;
94
+ gap: 9px;
95
95
  }
96
96
  }
@@ -17,7 +17,7 @@
17
17
  .paneWell {
18
18
  composes: pane;
19
19
 
20
- --surface: var(--background);
20
+ background-color: var(--gray-50);
21
21
  }
22
22
 
23
23
  :is(.paneDefault, .paneFlat, .paneWell):is(a) {
@@ -28,7 +28,7 @@
28
28
  .progressBarValueIncomplete {
29
29
  composes: progressBarValue;
30
30
 
31
- background: linear-gradient(to right, var(--primary-600) 20%, var(--primary-500), var(--primary-600) 80%);
31
+ background: var(--primary-600) linear-gradient(-45deg, transparent 20%, rgb(from var(--primary-500) r g b / .5), transparent 80%);
32
32
  background-size: 150px 100%;
33
33
  animation: progressBarValue 1s linear infinite;
34
34
  }
@@ -37,7 +37,7 @@
37
37
  composes: progressBarTrack;
38
38
 
39
39
  .progressBarValue {
40
- background: linear-gradient(to right, var(--primary-600) 20%, var(--primary-500), var(--primary-600) 80%);
40
+ background: var(--primary-600) linear-gradient(-45deg, transparent 20%, rgb(from var(--primary-500) r g b / .5), transparent 80%);
41
41
  background-size: 90px 100%;
42
42
  animation: progressBarIndeterminate 1s linear infinite;
43
43
  }
@@ -0,0 +1,109 @@
1
+ .scroller {
2
+ position: relative;
3
+ overflow: auto;
4
+ overscroll-behavior: contain;
5
+ scrollbar-color: var(--surface-stroke) transparent;
6
+ scrollbar-width: thin;
7
+
8
+ &::-webkit-scrollbar {
9
+ width: 8px;
10
+ height: 8px;
11
+ }
12
+
13
+ &::-webkit-scrollbar-track {
14
+ background: transparent;
15
+ }
16
+
17
+ &::-webkit-scrollbar-thumb {
18
+ background-color: var(--surface-stroke);
19
+ border-radius: 4px;
20
+ }
21
+
22
+ &:hover {
23
+ &::-webkit-scrollbar-thumb {
24
+ background-color: var(--gray-400);
25
+ }
26
+ }
27
+ }
28
+
29
+ .scrollerDirectionVertical {
30
+ overflow-x: hidden;
31
+ overflow-y: auto;
32
+ }
33
+
34
+ .scrollerDirectionHorizontal {
35
+ overflow-x: auto;
36
+ overflow-y: hidden;
37
+ }
38
+
39
+ .scrollerDirectionBoth {
40
+ overflow: auto;
41
+ }
42
+
43
+ .scrollerSnapMandatoryHorizontal {
44
+ scroll-snap-type: x mandatory;
45
+ }
46
+
47
+ .scrollerSnapMandatoryVertical {
48
+ scroll-snap-type: y mandatory;
49
+ }
50
+
51
+ .scrollerSnapMandatoryBoth {
52
+ scroll-snap-type: both mandatory;
53
+ }
54
+
55
+ .scrollerSnapProximityHorizontal {
56
+ scroll-snap-type: x proximity;
57
+ }
58
+
59
+ .scrollerSnapProximityVertical {
60
+ scroll-snap-type: y proximity;
61
+ }
62
+
63
+ .scrollerSnapProximityBoth {
64
+ scroll-snap-type: both proximity;
65
+ }
66
+
67
+ .scrollerSnapAlignStart > * {
68
+ scroll-snap-align: start;
69
+ }
70
+
71
+ .scrollerSnapAlignCenter > * {
72
+ scroll-snap-align: center;
73
+ }
74
+
75
+ .scrollerSnapAlignEnd > * {
76
+ scroll-snap-align: end;
77
+ }
78
+
79
+ .scrollerFade {
80
+ --fade-mask-vertical: linear-gradient(
81
+ to bottom,
82
+ transparent 0,
83
+ black var(--fade-start, 0px),
84
+ black calc(100% - var(--fade-end, 0px)),
85
+ transparent 100%
86
+ );
87
+
88
+ --fade-mask-horizontal: linear-gradient(
89
+ to right,
90
+ transparent 0,
91
+ black var(--fade-start, 0px),
92
+ black calc(100% - var(--fade-end, 0px)),
93
+ transparent 100%
94
+ );
95
+ }
96
+
97
+ .scrollerFadeVertical {
98
+ composes: scrollerFade;
99
+
100
+ -webkit-mask-image: var(--fade-mask-vertical);
101
+ mask-image: var(--fade-mask-vertical);
102
+ }
103
+
104
+ .scrollerFadeHorizontal {
105
+ composes: scrollerFade;
106
+
107
+ -webkit-mask-image: var(--fade-mask-horizontal);
108
+ mask-image: var(--fade-mask-horizontal);
109
+ }
@@ -0,0 +1,78 @@
1
+ .splitView {
2
+ display: grid;
3
+ width: 100%;
4
+ height: 100%;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .splitViewHorizontal {
9
+ composes: splitView;
10
+
11
+ grid-auto-flow: column;
12
+ }
13
+
14
+ .splitViewVertical {
15
+ composes: splitView;
16
+
17
+ grid-auto-flow: row;
18
+ }
19
+
20
+ .splitViewDragging {
21
+ user-select: none;
22
+
23
+ & * {
24
+ pointer-events: none;
25
+ }
26
+ }
27
+
28
+ .splitViewPane {
29
+ min-width: 0;
30
+ min-height: 0;
31
+ overflow: auto;
32
+ }
33
+
34
+ .splitViewHandle {
35
+ appearance: none;
36
+ position: relative;
37
+
38
+ display: block;
39
+ border: 0;
40
+ margin: 0;
41
+ padding: 0;
42
+
43
+ background: transparent;
44
+ cursor: col-resize;
45
+
46
+ &::before {
47
+ position: absolute;
48
+ top: 0;
49
+ left: calc(50% - 1px);
50
+ height: 100%;
51
+ width: 2px;
52
+ content: '';
53
+ background: var(--surface-stroke);
54
+ transition: background .15s var(--swift-out);
55
+ }
56
+
57
+ &:hover::before,
58
+ &:focus-visible::before {
59
+ background: var(--primary-500);
60
+ }
61
+
62
+ &:focus-visible {
63
+ outline: none;
64
+ }
65
+ }
66
+
67
+ .splitViewHandleVertical {
68
+ composes: splitViewHandle;
69
+
70
+ cursor: row-resize;
71
+
72
+ &::before {
73
+ top: calc(50% - 1px);
74
+ left: 0;
75
+ height: 2px;
76
+ width: 100%;
77
+ }
78
+ }
@@ -0,0 +1,35 @@
1
+ .stickySentinel {
2
+ position: relative;
3
+
4
+ height: 1px;
5
+ width: 100%;
6
+
7
+ pointer-events: none;
8
+ visibility: hidden;
9
+ }
10
+
11
+ .sticky {
12
+ position: sticky;
13
+
14
+ z-index: 1;
15
+ }
16
+
17
+ .stickyTop {
18
+ composes: sticky;
19
+
20
+ top: var(--offset, 0);
21
+ }
22
+
23
+ .stickyBottom {
24
+ composes: sticky;
25
+
26
+ bottom: var(--offset, 0);
27
+ }
28
+
29
+ .hasShadow {
30
+ transition: box-shadow .15s var(--swift-out);
31
+ }
32
+
33
+ .hasShadow[data-stuck='true'] {
34
+ box-shadow: var(--surface-shadow-md, 0 4px 12px rgb(0 0 0 / 0.08));
35
+ }
@@ -5,6 +5,7 @@
5
5
  display: flex;
6
6
  flex-flow: column;
7
7
  flex-grow: 1;
8
+ gap: 18px;
8
9
  }
9
10
 
10
11
  .baseTabBar {
@@ -149,6 +149,7 @@ tfoot .tableCell {
149
149
 
150
150
  .tablePagination {
151
151
  position: sticky;
152
+ left: 0;
152
153
  bottom: 0;
153
154
  margin-top: auto;
154
155
  margin-bottom: -1px;
@@ -1,3 +1,17 @@
1
+ .tooltipHost {
2
+ position: fixed;
3
+ inset: 0;
4
+ width: 0;
5
+ height: 0;
6
+ margin: 0;
7
+ padding: 0;
8
+ background: transparent;
9
+ border: 0;
10
+ color: inherit;
11
+ overflow: visible;
12
+ pointer-events: none;
13
+ }
14
+
1
15
  .tooltip {
2
16
  position: fixed;
3
17
  display: flex;
package/src/data/di.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FluxFilterState, FluxFilterValue } from '@flux-ui/types';
1
+ import type { FluxFilterDefinition, FluxFilterState, FluxFilterValue } from '@flux-ui/types';
2
2
  import type { DateTime } from 'luxon';
3
3
  import type { ComponentInternalInstance, ComputedRef, InjectionKey, Ref, VNode } from 'vue';
4
4
 
@@ -10,6 +10,7 @@ export const FluxExpandableGroupInjectionKey: InjectionKey<FluxExpandableGroupIn
10
10
  export const FluxFlyoutInjectionKey: InjectionKey<FluxFlyoutInjection> = Symbol();
11
11
  export const FluxFilterInjectionKey: InjectionKey<FluxFilterInjection> = Symbol();
12
12
  export const FluxFormFieldInjectionKey: InjectionKey<FluxFormFieldInjection> = Symbol();
13
+ export const FluxSplitViewInjectionKey: InjectionKey<FluxSplitViewInjection> = Symbol();
13
14
  export const FluxTabBarInjectionKey: InjectionKey<FluxTabBarInjection> = Symbol();
14
15
  export const FluxTableInjectionKey: InjectionKey<FluxTableInjection> = Symbol();
15
16
  export const FluxTooltipInjectionKey: InjectionKey<FluxTooltipInjection> = Symbol();
@@ -132,9 +133,11 @@ export type FluxFilterInjection = {
132
133
  readonly state: Ref<FluxFilterState>;
133
134
 
134
135
  back(): void;
135
- reset(name: string | number): void;
136
+ clear(name: string | number): void;
137
+ getDefinition(name: string | number): FluxFilterDefinition | undefined;
136
138
  getValue(name: string | number): FluxFilterValue | undefined;
137
139
  hasValue(name: string | number): boolean;
140
+ reset(name: string | number): void;
138
141
  setValue(name: string | number, value?: FluxFilterValue): void;
139
142
  };
140
143
 
@@ -148,6 +151,23 @@ export type FluxFormFieldInjection = {
148
151
  readonly id?: string;
149
152
  };
150
153
 
154
+ export type FluxSplitViewPaneSpec = {
155
+ readonly id: number;
156
+ readonly defaultSize: Ref<number | string | undefined>;
157
+ readonly minSize: Ref<number>;
158
+ readonly maxSize: Ref<number | undefined>;
159
+ readonly isResizable: Ref<boolean>;
160
+ };
161
+
162
+ export type FluxSplitViewInjection = {
163
+ readonly direction: Ref<'horizontal' | 'vertical'>;
164
+ readonly panes: Ref<readonly FluxSplitViewPaneSpec[]>;
165
+
166
+ registerPane(spec: FluxSplitViewPaneSpec): void;
167
+ unregisterPane(id: number): void;
168
+ getPaneIndex(id: number): number;
169
+ };
170
+
151
171
  export type FluxTabBarInjection = {
152
172
  readonly isPills: Ref<boolean>;
153
173
 
package/src/data/index.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './di';
2
- export * from './filter';
3
2
  export * from './helper';
4
3
  export * from './i18n';
5
4
  export * from './iconRegistry';
package/src/index.ts CHANGED
@@ -26,3 +26,14 @@ export type {
26
26
  FluxState,
27
27
  FluxStore
28
28
  } from './data';
29
+
30
+ export {
31
+ defineFilter,
32
+ isFluxFilterOptionHeader,
33
+ isFluxFilterOptionItem,
34
+ pickFilterCommon
35
+ } from './util';
36
+
37
+ export type {
38
+ FluxFilterDefinitionFactory
39
+ } from './util';
@@ -0,0 +1,10 @@
1
+ import type { FluxFilterDefinition, FluxFilterValue } from '@flux-ui/types';
2
+
3
+ export type FluxFilterDefinitionFactory<TProps = any, TValue extends FluxFilterValue = FluxFilterValue> =
4
+ (props: TProps) => FluxFilterDefinition<TValue>;
5
+
6
+ export default function defineFilter<TProps, TValue extends FluxFilterValue = FluxFilterValue>(
7
+ factory: FluxFilterDefinitionFactory<TProps, TValue>
8
+ ): FluxFilterDefinitionFactory<TProps, TValue> {
9
+ return factory;
10
+ }