@flux-ui/components 3.1.2 → 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 (61) 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 +441 -1
  25. package/dist/index.js +2018 -407
  26. package/dist/index.js.map +1 -1
  27. package/package.json +7 -7
  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/Form.module.scss +51 -0
  53. package/src/css/component/FormRating.module.scss +47 -0
  54. package/src/css/component/InlineEdit.module.scss +45 -0
  55. package/src/css/component/Menu.module.scss +4 -1
  56. package/src/css/component/MenuFlyout.module.scss +38 -0
  57. package/src/css/component/Table.module.scss +16 -0
  58. package/src/css/component/Tour.module.scss +108 -0
  59. package/src/css/component/VirtualScroller.module.scss +17 -0
  60. package/src/data/di.ts +40 -0
  61. 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;
@@ -5818,6 +5887,20 @@
5818
5887
  .color-select-check :is(path) {
5819
5888
  stroke: currentColor;
5820
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;
5821
5904
  }.pagination {
5822
5905
  display: flex;
5823
5906
  gap: 1px;
@@ -6111,6 +6194,115 @@ tfoot .table-cell {
6111
6194
 
6112
6195
  :not(.base-pane-structure) > .table .table-cell:not(.is-bordered):last-child .table-cell-content {
6113
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;
6114
6306
  }.drop-zone {
6115
6307
  --dz-fill: transparent;
6116
6308
  --dz-stroke: transparent;
@@ -6446,6 +6638,52 @@ tfoot .table-cell {
6446
6638
  100% {
6447
6639
  aspect-ratio: var(--aspect-ratio);
6448
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);
6449
6687
  }.tree-view-select-value {
6450
6688
  margin-left: 6px;
6451
6689
  overflow: hidden;
@@ -6697,6 +6935,51 @@ tfoot .table-cell {
6697
6935
 
6698
6936
  .info-body {
6699
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);
6700
6983
  }.kanban {
6701
6984
  position: relative;
6702
6985
  display: grid;
@@ -6956,6 +7239,39 @@ tfoot .table-cell {
6956
7239
 
6957
7240
  .base-pane-structure:is(a, button):hover:has(> .item) {
6958
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);
6959
7275
  }.notice {
6960
7276
  display: flex;
6961
7277
  padding: 12px 15px;
@@ -8519,6 +8835,114 @@ tfoot .table-cell {
8519
8835
 
8520
8836
  .pane-header + .toolbar-flat {
8521
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;
8522
8946
  }.tree-view {
8523
8947
  display: flex;
8524
8948
  flex-flow: column;
@@ -8535,4 +8959,20 @@ tfoot .table-cell {
8535
8959
  }
8536
8960
  .tree-node.is-highlighted {
8537
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%;
8538
8978
  }/*$vite$:1*/