@flux-ui/components 3.1.0 → 3.1.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.
Files changed (62) hide show
  1. package/dist/component/FluxAvatarGroup.vue.d.ts +17 -0
  2. package/dist/component/FluxContextMenu.vue.d.ts +26 -0
  3. package/dist/component/FluxDataTable.vue.d.ts +20 -10
  4. package/dist/component/FluxDescriptionItem.vue.d.ts +19 -0
  5. package/dist/component/FluxDescriptionList.vue.d.ts +17 -0
  6. package/dist/component/FluxFormCombobox.vue.d.ts +20 -0
  7. package/dist/component/FluxFormRating.vue.d.ts +21 -0
  8. package/dist/component/FluxFormTagsInput.vue.d.ts +27 -0
  9. package/dist/component/FluxFormTextArea.vue.d.ts +6 -1
  10. package/dist/component/FluxInlineEdit.vue.d.ts +41 -0
  11. package/dist/component/FluxMenu.vue.d.ts +1 -0
  12. package/dist/component/FluxMenuFlyout.vue.d.ts +22 -0
  13. package/dist/component/FluxTableCell.vue.d.ts +1 -0
  14. package/dist/component/FluxTour.vue.d.ts +35 -0
  15. package/dist/component/FluxTourItem.vue.d.ts +18 -0
  16. package/dist/component/FluxVirtualScroller.vue.d.ts +27 -0
  17. package/dist/component/index.d.ts +12 -0
  18. package/dist/component/primitive/AnchorPopup.vue.d.ts +7 -1
  19. package/dist/component/primitive/SelectBase.vue.d.ts +3 -0
  20. package/dist/composable/private/index.d.ts +1 -0
  21. package/dist/composable/private/useMenuFlyout.d.ts +42 -0
  22. package/dist/data/di.d.ts +35 -0
  23. package/dist/data/i18n.d.ts +7 -0
  24. package/dist/index.css +442 -1
  25. package/dist/index.js +2031 -420
  26. package/dist/index.js.map +1 -1
  27. package/package.json +9 -9
  28. package/src/component/FluxAvatarGroup.vue +52 -0
  29. package/src/component/FluxContextMenu.vue +134 -0
  30. package/src/component/FluxDataTable.vue +113 -32
  31. package/src/component/FluxDescriptionItem.vue +43 -0
  32. package/src/component/FluxDescriptionList.vue +37 -0
  33. package/src/component/FluxFormCombobox.vue +98 -0
  34. package/src/component/FluxFormRating.vue +172 -0
  35. package/src/component/FluxFormTagsInput.vue +249 -0
  36. package/src/component/FluxFormTextArea.vue +16 -1
  37. package/src/component/FluxInlineEdit.vue +176 -0
  38. package/src/component/FluxMenu.vue +13 -3
  39. package/src/component/FluxMenuFlyout.vue +118 -0
  40. package/src/component/FluxTableCell.vue +2 -0
  41. package/src/component/FluxTour.vue +332 -0
  42. package/src/component/FluxTourItem.vue +27 -0
  43. package/src/component/FluxVirtualScroller.vue +96 -0
  44. package/src/component/index.ts +12 -0
  45. package/src/component/primitive/AnchorPopup.vue +27 -0
  46. package/src/component/primitive/SelectBase.vue +37 -2
  47. package/src/composable/private/index.ts +1 -0
  48. package/src/composable/private/useMenuFlyout.ts +417 -0
  49. package/src/css/component/AvatarGroup.module.scss +22 -0
  50. package/src/css/component/ContextMenu.module.scss +17 -0
  51. package/src/css/component/DescriptionList.module.scss +98 -0
  52. package/src/css/component/Divider.module.scss +1 -0
  53. package/src/css/component/Form.module.scss +51 -0
  54. package/src/css/component/FormRating.module.scss +47 -0
  55. package/src/css/component/InlineEdit.module.scss +45 -0
  56. package/src/css/component/Menu.module.scss +4 -1
  57. package/src/css/component/MenuFlyout.module.scss +38 -0
  58. package/src/css/component/Table.module.scss +16 -0
  59. package/src/css/component/Tour.module.scss +108 -0
  60. package/src/css/component/VirtualScroller.module.scss +17 -0
  61. package/src/data/di.ts +40 -0
  62. package/src/data/i18n.ts +7 -0
@@ -4,10 +4,14 @@ export declare const english: {
4
4
  readonly 'flux.back': "Back";
5
5
  readonly 'flux.cancel': "Cancel";
6
6
  readonly 'flux.close': "Close";
7
+ readonly 'flux.collapseRow': "Collapse row";
8
+ readonly 'flux.expandRow': "Expand row";
7
9
  readonly 'flux.comingSoon': "Coming soon";
8
10
  readonly 'flux.continue': "Continue";
11
+ readonly 'flux.createOption': "Create \"{value}\"";
9
12
  readonly 'flux.customPeriod': "Custom period";
10
13
  readonly 'flux.delete': "Delete";
14
+ readonly 'flux.done': "Done";
11
15
  readonly 'flux.filter': "Filter";
12
16
  readonly 'flux.filterReset': "Reset filters";
13
17
  readonly 'flux.justNow': "Just now";
@@ -20,6 +24,7 @@ export declare const english: {
20
24
  readonly 'flux.previewClose': "Close preview";
21
25
  readonly 'flux.displayingOf': "{from}–{to} of {total}";
22
26
  readonly 'flux.showN': "Show {n}";
27
+ readonly 'flux.skip': "Skip";
23
28
  readonly 'flux.next': "Next";
24
29
  readonly 'flux.noItems': "There are no items (left).";
25
30
  readonly 'flux.pagination': "Pagination";
@@ -32,6 +37,7 @@ export declare const english: {
32
37
  readonly 'flux.sortAscending': "Ascending";
33
38
  readonly 'flux.sortDescending': "Descending";
34
39
  readonly 'flux.sortRemove': "Remove sorting";
40
+ readonly 'flux.submenu': "Submenu";
35
41
  readonly 'flux.today': "Today";
36
42
  readonly 'flux.selectMonth': "Select month";
37
43
  readonly 'flux.selectYear': "Select year";
@@ -41,6 +47,7 @@ export declare const english: {
41
47
  readonly 'flux.previousYears': "Previous years";
42
48
  readonly 'flux.nextYears': "Next years";
43
49
  readonly 'flux.allDay': "All day";
50
+ readonly 'flux.andNMore': "{n} more";
44
51
  readonly 'flux.grabbedAnnounce': "Item grabbed. Use arrow keys to move, Enter to drop, Escape to cancel.";
45
52
  readonly 'flux.releasedAnnounce': "Item released.";
46
53
  readonly 'flux.goToPage': "Go to page {page}";
package/dist/index.css CHANGED
@@ -1878,6 +1878,25 @@
1878
1878
  .persona-details :is(span) {
1879
1879
  color: var(--foreground);
1880
1880
  font-size: 14px;
1881
+ }.avatar-group {
1882
+ display: inline-flex;
1883
+ align-items: center;
1884
+ flex-flow: row nowrap;
1885
+ }
1886
+
1887
+ .avatar-group-item {
1888
+ position: relative;
1889
+ display: inline-flex;
1890
+ margin-left: calc(var(--overlap, 0.3) * -1em);
1891
+ border-radius: 0.3em;
1892
+ box-shadow: 0 0 0 0.125em var(--gray-25);
1893
+ transition: translate 0.2s var(--swift-out);
1894
+ }
1895
+ .avatar-group-item:first-child {
1896
+ margin-left: 0;
1897
+ }
1898
+ .avatar-group-item:hover {
1899
+ z-index: 1;
1881
1900
  }.badge {
1882
1901
  display: inline-flex;
1883
1902
  height: 28px;
@@ -4963,6 +4982,53 @@
4963
4982
  .form-toggle-input::after {
4964
4983
  transition: 210ms var(--swift-out);
4965
4984
  transition-property: background, border-color, color, opacity, scale, translate, outline-color, outline-offset;
4985
+ }
4986
+
4987
+ .form-tags-input {
4988
+ display: flex;
4989
+ height: unset;
4990
+ min-height: 42px;
4991
+ padding: 4px 6px;
4992
+ align-items: center;
4993
+ flex-wrap: wrap;
4994
+ gap: 6px;
4995
+ cursor: text;
4996
+ }
4997
+ .form-tags-input:not(.form-tags-input-disabled) {
4998
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
4999
+ outline-offset: 0;
5000
+ }
5001
+ .form-tags-input:not(.form-tags-input-disabled):focus-visible, .form-tags-input:not(.form-tags-input-disabled):focus-within {
5002
+ outline-color: var(--primary-600);
5003
+ outline-offset: -1px;
5004
+ }
5005
+
5006
+ .form-tags-input-enabled {
5007
+ }
5008
+
5009
+ .form-tags-input-disabled {
5010
+ background: var(--gray-100);
5011
+ cursor: not-allowed;
5012
+ }
5013
+
5014
+ .form-tags-input-field {
5015
+ height: 30px;
5016
+ min-width: 60px;
5017
+ flex: 1 1 60px;
5018
+ background: none;
5019
+ border: 0;
5020
+ color: inherit;
5021
+ font: inherit;
5022
+ outline: 0;
5023
+ }
5024
+ .form-tags-input-field::placeholder {
5025
+ color: var(--foreground-secondary);
5026
+ }
5027
+ .form-tags-input-field:disabled {
5028
+ cursor: not-allowed;
5029
+ }
5030
+
5031
+ .form-tags-input-popup {
4966
5032
  }.filter {
4967
5033
  max-height: 50dvh;
4968
5034
  max-width: 100%;
@@ -5097,7 +5163,6 @@
5097
5163
  .menu-group-vertical {
5098
5164
  display: flex;
5099
5165
  flex-flow: column;
5100
- gap: 1px;
5101
5166
  }
5102
5167
 
5103
5168
  .menu-item {
@@ -5183,6 +5248,10 @@
5183
5248
  margin-left: 33px;
5184
5249
  }
5185
5250
 
5251
+ .menu-cone-active .menu-item {
5252
+ pointer-events: none;
5253
+ }
5254
+
5186
5255
  .menu-collapsible {
5187
5256
  display: flex;
5188
5257
  flex-flow: column;
@@ -5637,6 +5706,7 @@
5637
5706
  }
5638
5707
 
5639
5708
  .separator {
5709
+ flex-shrink: 0;
5640
5710
  background: var(--gray-200);
5641
5711
  }
5642
5712
 
@@ -5817,6 +5887,20 @@
5817
5887
  .color-select-check :is(path) {
5818
5888
  stroke: currentColor;
5819
5889
  stroke-width: 54px;
5890
+ }.context-menu {
5891
+ display: contents;
5892
+ }
5893
+
5894
+ .context-menu-popup {
5895
+ position: fixed;
5896
+ top: 0;
5897
+ left: 0;
5898
+ min-width: 270px;
5899
+ max-height: max(330px, 50dvh);
5900
+ overflow: auto;
5901
+ box-shadow: var(--shadow-md);
5902
+ translate: var(--x) var(--y);
5903
+ z-index: 10000;
5820
5904
  }.pagination {
5821
5905
  display: flex;
5822
5906
  gap: 1px;
@@ -6110,6 +6194,115 @@ tfoot .table-cell {
6110
6194
 
6111
6195
  :not(.base-pane-structure) > .table .table-cell:not(.is-bordered):last-child .table-cell-content {
6112
6196
  padding-right: 0;
6197
+ }
6198
+
6199
+ .table-cell-expand {
6200
+ width: 0;
6201
+ }
6202
+
6203
+ .table-expand-toggle svg {
6204
+ transition: rotate 0.2s var(--swift-out);
6205
+ }
6206
+
6207
+ .table-expand-toggle.is-expanded svg {
6208
+ rotate: 90deg;
6209
+ }
6210
+
6211
+ .table-expand-content {
6212
+ padding: 12px 15px;
6213
+ }.description-list {
6214
+ display: flex;
6215
+ flex-flow: column;
6216
+ gap: 12px;
6217
+ }
6218
+
6219
+ .description-list-header {
6220
+ color: var(--foreground-secondary);
6221
+ font-size: 14px;
6222
+ font-weight: 500;
6223
+ }
6224
+
6225
+ .description-list-items {
6226
+ display: flex;
6227
+ margin: 0;
6228
+ flex-flow: column;
6229
+ gap: 12px;
6230
+ }
6231
+
6232
+ .description-item {
6233
+ display: flex;
6234
+ gap: 12px;
6235
+ align-items: center;
6236
+ }
6237
+
6238
+ .description-item.is-stacked {
6239
+ gap: 2px;
6240
+ align-items: stretch;
6241
+ flex-flow: column;
6242
+ }
6243
+
6244
+ .description-item.is-stacked .description-item-value {
6245
+ margin-left: 0;
6246
+ justify-content: flex-start;
6247
+ text-align: left;
6248
+ }
6249
+
6250
+ .description-item-term {
6251
+ display: flex;
6252
+ gap: 9px;
6253
+ align-items: center;
6254
+ color: var(--foreground);
6255
+ font-size: 15px;
6256
+ }
6257
+
6258
+ .description-item-icon {
6259
+ flex-shrink: 0;
6260
+ color: var(--foreground);
6261
+ font-size: 16px;
6262
+ }
6263
+
6264
+ .description-item-label {
6265
+ overflow-wrap: anywhere;
6266
+ }
6267
+
6268
+ .description-item-value {
6269
+ display: flex;
6270
+ margin: 0;
6271
+ margin-left: auto;
6272
+ gap: 6px;
6273
+ align-items: center;
6274
+ color: var(--foreground-prominent);
6275
+ font-size: 15px;
6276
+ font-weight: 600;
6277
+ text-align: right;
6278
+ overflow-wrap: anywhere;
6279
+ }
6280
+
6281
+ .description-list-items.is-horizontal {
6282
+ gap: 0;
6283
+ flex-flow: row;
6284
+ }
6285
+ .description-list-items.is-horizontal .description-item {
6286
+ gap: 6px;
6287
+ align-items: stretch;
6288
+ flex: 1 1 0;
6289
+ flex-flow: column;
6290
+ padding-right: 24px;
6291
+ padding-left: 24px;
6292
+ border-left: 1px solid var(--gray-100);
6293
+ }
6294
+ .description-list-items.is-horizontal .description-item:first-child {
6295
+ padding-left: 0;
6296
+ border-left: 0;
6297
+ }
6298
+ .description-list-items.is-horizontal .description-item-term {
6299
+ font-size: 14px;
6300
+ }
6301
+ .description-list-items.is-horizontal .description-item-value {
6302
+ margin-left: 0;
6303
+ justify-content: flex-start;
6304
+ font-weight: 500;
6305
+ text-align: left;
6113
6306
  }.drop-zone {
6114
6307
  --dz-fill: transparent;
6115
6308
  --dz-stroke: transparent;
@@ -6445,6 +6638,52 @@ tfoot .table-cell {
6445
6638
  100% {
6446
6639
  aspect-ratio: var(--aspect-ratio);
6447
6640
  }
6641
+ }.form-rating {
6642
+ display: inline-flex;
6643
+ gap: 0.15em;
6644
+ font-size: 24px;
6645
+ line-height: 1;
6646
+ border-radius: 4px;
6647
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
6648
+ outline-offset: 0;
6649
+ }
6650
+ .form-rating:focus-visible {
6651
+ outline-color: var(--primary-600);
6652
+ outline-offset: 4px;
6653
+ }
6654
+ .form-rating.is-disabled {
6655
+ opacity: 0.6;
6656
+ }
6657
+
6658
+ .form-rating-star {
6659
+ position: relative;
6660
+ display: inline-flex;
6661
+ padding: 0;
6662
+ border: 0;
6663
+ background: none;
6664
+ line-height: 0;
6665
+ cursor: pointer;
6666
+ }
6667
+ .form-rating-star:disabled {
6668
+ cursor: default;
6669
+ }
6670
+
6671
+ .form-rating-star-empty {
6672
+ color: var(--gray-300);
6673
+ }
6674
+
6675
+ .form-rating-star-full {
6676
+ position: absolute;
6677
+ top: 0;
6678
+ bottom: 0;
6679
+ left: 0;
6680
+ color: var(--warning-400);
6681
+ clip-path: inset(0 calc((1 - var(--fill, 0)) * 100%) 0 0);
6682
+ pointer-events: none;
6683
+ }
6684
+
6685
+ .is-invalid .form-rating-star-empty {
6686
+ color: var(--danger-200);
6448
6687
  }.tree-view-select-value {
6449
6688
  margin-left: 6px;
6450
6689
  overflow: hidden;
@@ -6696,6 +6935,51 @@ tfoot .table-cell {
6696
6935
 
6697
6936
  .info-body {
6698
6937
  align-items: center;
6938
+ }.inline-edit {
6939
+ display: flex;
6940
+ gap: 6px;
6941
+ align-items: flex-start;
6942
+ }
6943
+
6944
+ .inline-edit-field {
6945
+ min-width: 0;
6946
+ flex: 1 1 auto;
6947
+ }
6948
+
6949
+ .inline-edit-actions {
6950
+ display: flex;
6951
+ gap: 6px;
6952
+ align-items: center;
6953
+ flex-shrink: 0;
6954
+ }
6955
+
6956
+ .inline-edit-display {
6957
+ display: inline-flex;
6958
+ min-height: 30px;
6959
+ padding: 3px 6px;
6960
+ align-items: center;
6961
+ border-radius: 6px;
6962
+ color: var(--foreground);
6963
+ line-height: 21px;
6964
+ white-space: pre-wrap;
6965
+ overflow-wrap: anywhere;
6966
+ }
6967
+ .inline-edit-display.is-interactive {
6968
+ cursor: text;
6969
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
6970
+ outline-offset: 0;
6971
+ }
6972
+ .inline-edit-display.is-interactive:focus-visible {
6973
+ outline-color: var(--primary-600);
6974
+ outline-offset: 2px;
6975
+ }
6976
+ @media (hover: hover) {
6977
+ .inline-edit-display.is-interactive:hover {
6978
+ background: var(--surface-hover);
6979
+ }
6980
+ }
6981
+ .inline-edit-display.is-placeholder {
6982
+ color: var(--foreground-secondary);
6699
6983
  }.kanban {
6700
6984
  position: relative;
6701
6985
  display: grid;
@@ -6955,6 +7239,39 @@ tfoot .table-cell {
6955
7239
 
6956
7240
  .base-pane-structure:is(a, button):hover:has(> .item) {
6957
7241
  background-color: color-mix(in srgb, rgb(from var(--surface-hover) r g b/0.125), var(--surface));
7242
+ }.menu-flyout-popup {
7243
+ position: fixed;
7244
+ top: 0;
7245
+ left: 0;
7246
+ min-width: 270px;
7247
+ max-height: max(330px, 50dvh);
7248
+ overflow: auto;
7249
+ box-shadow: var(--shadow-md);
7250
+ translate: var(--x) var(--y);
7251
+ z-index: 10000;
7252
+ }
7253
+
7254
+ .menu-flyout-trigger-open {
7255
+ background: var(--gray-100);
7256
+ }
7257
+
7258
+ .menu-flyout-cone-debug {
7259
+ position: fixed;
7260
+ top: 0;
7261
+ left: 0;
7262
+ width: 100vw;
7263
+ height: 100vh;
7264
+ pointer-events: none;
7265
+ z-index: 20000;
7266
+ }
7267
+ .menu-flyout-cone-debug polygon {
7268
+ fill: var(--primary-500);
7269
+ fill-opacity: 0.15;
7270
+ stroke: var(--primary-500);
7271
+ stroke-width: 1.5;
7272
+ }
7273
+ .menu-flyout-cone-debug circle {
7274
+ fill: var(--danger-500);
6958
7275
  }.notice {
6959
7276
  display: flex;
6960
7277
  padding: 12px 15px;
@@ -8518,6 +8835,114 @@ tfoot .table-cell {
8518
8835
 
8519
8836
  .pane-header + .toolbar-flat {
8520
8837
  margin-top: 18px;
8838
+ }.tour {
8839
+ position: fixed;
8840
+ inset: 0;
8841
+ pointer-events: auto;
8842
+ z-index: 9999;
8843
+ }
8844
+
8845
+ .tour-spotlight {
8846
+ position: fixed;
8847
+ top: 0;
8848
+ left: 0;
8849
+ width: var(--w);
8850
+ height: var(--h);
8851
+ border-radius: 8px;
8852
+ box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.55);
8853
+ pointer-events: none;
8854
+ translate: var(--x) var(--y);
8855
+ transition: translate 0.25s var(--swift-out), width 0.25s var(--swift-out), height 0.25s var(--swift-out);
8856
+ }
8857
+
8858
+ .tour-popover {
8859
+ position: fixed;
8860
+ top: 0;
8861
+ left: 0;
8862
+ width: 321px;
8863
+ max-width: calc(100vw - 24px);
8864
+ translate: var(--x) var(--y);
8865
+ z-index: 1;
8866
+ }
8867
+ .tour-popover.is-stepping {
8868
+ transition: translate 0.25s var(--swift-out);
8869
+ }
8870
+
8871
+ .tour-pane {
8872
+ overflow: hidden;
8873
+ }
8874
+
8875
+ .tour-body-viewport {
8876
+ position: relative;
8877
+ overflow: hidden;
8878
+ transition: height 0.25s var(--swift-out);
8879
+ }
8880
+
8881
+ .tour-body {
8882
+ display: flex;
8883
+ padding: 15px 18px;
8884
+ flex-flow: column;
8885
+ gap: 6px;
8886
+ transition: opacity 0.15s var(--swift-out);
8887
+ }
8888
+ .tour-body.v-leave-active {
8889
+ position: absolute;
8890
+ top: 0;
8891
+ left: 0;
8892
+ width: 100%;
8893
+ }
8894
+ .tour-body.v-enter-from, .tour-body.v-leave-to {
8895
+ opacity: 0;
8896
+ }
8897
+
8898
+ .tour-title {
8899
+ color: var(--foreground-prominent);
8900
+ font-size: 15px;
8901
+ font-weight: 600;
8902
+ }
8903
+
8904
+ .tour-content {
8905
+ font-size: 14px;
8906
+ line-height: 21px;
8907
+ color: var(--foreground);
8908
+ }
8909
+
8910
+ .tour-footer {
8911
+ display: flex;
8912
+ padding: 12px 18px;
8913
+ gap: 6px;
8914
+ align-items: center;
8915
+ border-top: 1px solid var(--surface-stroke);
8916
+ }
8917
+
8918
+ .tour-progress {
8919
+ color: var(--foreground-secondary);
8920
+ font-size: 13px;
8921
+ }
8922
+
8923
+ .tour-skip {
8924
+ font: inherit;
8925
+ font-size: 13px;
8926
+ margin-right: 12px;
8927
+ padding: 0;
8928
+ cursor: pointer;
8929
+ transition: color 0.15s var(--swift-out);
8930
+ color: var(--foreground-secondary);
8931
+ border: 0;
8932
+ background: none;
8933
+ }
8934
+ @media (hover: hover) {
8935
+ .tour-skip:hover {
8936
+ color: var(--foreground);
8937
+ }
8938
+ }
8939
+ .tour-skip {
8940
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
8941
+ outline-offset: 0;
8942
+ }
8943
+ .tour-skip:focus-visible {
8944
+ outline-color: var(--primary-600);
8945
+ outline-offset: 2px;
8521
8946
  }.tree-view {
8522
8947
  display: flex;
8523
8948
  flex-flow: column;
@@ -8534,4 +8959,20 @@ tfoot .table-cell {
8534
8959
  }
8535
8960
  .tree-node.is-highlighted {
8536
8961
  background: var(--surface-hover);
8962
+ }.virtual-scroller {
8963
+ position: relative;
8964
+ height: 100%;
8965
+ overflow: auto;
8966
+ }
8967
+
8968
+ .virtual-scroller-spacer {
8969
+ position: relative;
8970
+ width: 100%;
8971
+ }
8972
+
8973
+ .virtual-scroller-window {
8974
+ position: absolute;
8975
+ top: 0;
8976
+ left: 0;
8977
+ width: 100%;
8537
8978
  }/*$vite$:1*/