@tylertech/forge 3.9.0-dev.2 → 3.9.0-dev.4

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 (68) hide show
  1. package/custom-elements.json +1508 -1977
  2. package/dist/lib.js +12 -12
  3. package/dist/lib.js.map +3 -3
  4. package/dist/vscode.css-custom-data.json +101 -108
  5. package/dist/vscode.html-custom-data.json +137 -179
  6. package/esm/core/utils/dismissible-stack.d.ts +3 -2
  7. package/esm/core/utils/dismissible-stack.js +8 -4
  8. package/esm/date-picker/base/base-date-picker-adapter.js +0 -3
  9. package/esm/dialog/dialog-core.js +8 -0
  10. package/esm/drawer/mini-drawer/mini-drawer.js +1 -1
  11. package/esm/icon-button/icon-button-core.js +2 -11
  12. package/esm/popover/popover-constants.d.ts +0 -1
  13. package/esm/popover/popover-constants.js +1 -2
  14. package/esm/popover/popover-core.js +7 -12
  15. package/esm/popover/popover.d.ts +2 -2
  16. package/esm/popover/popover.js +3 -3
  17. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  18. package/esm/table/table-constants.d.ts +1 -0
  19. package/esm/table/table-constants.js +1 -0
  20. package/esm/table/table-core.js +2 -1
  21. package/esm/table/table.d.ts +2 -0
  22. package/esm/table/table.js +1 -0
  23. package/package.json +5 -5
  24. package/sass/calendar/calendar-menu/_variables.scss +1 -1
  25. package/sass/color-picker/_mixins.scss +5 -5
  26. package/sass/core/styles/theme/_color-utils.scss +1 -1
  27. package/sass/core/styles/tokens/app-bar/app-bar/_tokens.scss +1 -1
  28. package/sass/drawer/mini-drawer/mini-drawer.scss +0 -1
  29. package/esm/data-table/body/body.d.ts +0 -33
  30. package/esm/data-table/body/body.js +0 -42
  31. package/esm/data-table/body/index.d.ts +0 -6
  32. package/esm/data-table/body/index.js +0 -6
  33. package/esm/data-table/cell/cell.d.ts +0 -33
  34. package/esm/data-table/cell/cell.js +0 -42
  35. package/esm/data-table/cell/index.d.ts +0 -6
  36. package/esm/data-table/cell/index.js +0 -6
  37. package/esm/data-table/column/column.d.ts +0 -33
  38. package/esm/data-table/column/column.js +0 -42
  39. package/esm/data-table/column/index.d.ts +0 -6
  40. package/esm/data-table/column/index.js +0 -6
  41. package/esm/data-table/footer/footer.d.ts +0 -33
  42. package/esm/data-table/footer/footer.js +0 -42
  43. package/esm/data-table/footer/index.d.ts +0 -6
  44. package/esm/data-table/footer/index.js +0 -6
  45. package/esm/data-table/head/head.d.ts +0 -33
  46. package/esm/data-table/head/head.js +0 -42
  47. package/esm/data-table/head/index.d.ts +0 -6
  48. package/esm/data-table/head/index.js +0 -6
  49. package/esm/data-table/index.d.ts +0 -12
  50. package/esm/data-table/index.js +0 -12
  51. package/esm/data-table/row/index.d.ts +0 -6
  52. package/esm/data-table/row/index.js +0 -6
  53. package/esm/data-table/row/row.d.ts +0 -33
  54. package/esm/data-table/row/row.js +0 -42
  55. package/esm/data-table/table/index.d.ts +0 -6
  56. package/esm/data-table/table/index.js +0 -6
  57. package/esm/data-table/table/table.d.ts +0 -36
  58. package/esm/data-table/table/table.js +0 -40
  59. package/sass/data-table/_core.scss +0 -52
  60. package/sass/data-table/_token-utils.scss +0 -15
  61. package/sass/data-table/body/body.scss +0 -27
  62. package/sass/data-table/cell/cell.scss +0 -27
  63. package/sass/data-table/column/column.scss +0 -27
  64. package/sass/data-table/footer/footer.scss +0 -27
  65. package/sass/data-table/head/head.scss +0 -27
  66. package/sass/data-table/index.scss +0 -12
  67. package/sass/data-table/row/row.scss +0 -27
  68. package/sass/data-table/table/table.scss +0 -16
@@ -103,10 +103,13 @@ export class PopoverCore extends WithLongpressListener((OverlayAwareCore)) {
103
103
  }
104
104
  this._previouslyFocusedElement = this._adapter.captureFocusedElement();
105
105
  this._adapter.setOverlayOpen(true);
106
- if (this._distinct) {
106
+ // Popovers can be distinct from each other, meaning that only one popover with the same distinct
107
+ // value can be open at a time. Let's capture the distinct group context and close any other popovers
108
+ // that are open in the same context.
109
+ if (this._distinct != null) {
107
110
  const allPopovers = DismissibleStack.instance.getAll().filter(el => el.tagName.toLowerCase() === 'forge-popover');
108
- const contextPopovers = allPopovers.filter(popover => popover.distinct === this._distinct);
109
- contextPopovers.filter(popover => popover !== this._adapter.hostElement).forEach(popover => (popover.open = false));
111
+ const contextPopovers = allPopovers.filter(popover => popover.distinct === this._distinct && !popover.persistent);
112
+ contextPopovers.filter(popover => popover !== this._adapter.hostElement).forEach(popover => popover.hideAsync());
110
113
  }
111
114
  if (!this.overlayElement.persistent) {
112
115
  DismissibleStack.instance.add(this._adapter.hostElement);
@@ -528,14 +531,6 @@ export class PopoverCore extends WithLongpressListener((OverlayAwareCore)) {
528
531
  return this._distinct;
529
532
  }
530
533
  set distinct(value) {
531
- value = value ?? null;
532
- if (this._distinct !== value) {
533
- if (this._adapter.hasHostAttribute(POPOVER_CONSTANTS.attributes.DISTINCT) && !value) {
534
- this._distinct = POPOVER_CONSTANTS.defaults.DISTINCT;
535
- }
536
- else {
537
- this._distinct = value;
538
- }
539
- }
534
+ this._distinct = value;
540
535
  }
541
536
  }
@@ -45,7 +45,7 @@ declare global {
45
45
  * @property {number} [hoverDismissDelay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
46
46
  * @property {number} [hoverDelay=0] - The delay in milliseconds before the popover is shown.
47
47
  * @property {PopoverPreset} [preset="popover"] - The preset to use for the popover.
48
- * @property {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
48
+ * @property {string | null} [distinct=null] - Enforces that this popover should be the only one open with the same unique value.
49
49
  *
50
50
  * @globalconfig placement
51
51
  * @globalconfig animationType
@@ -66,7 +66,7 @@ declare global {
66
66
  * @attribute {string} [hover-dismiss-delay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
67
67
  * @attribute {number} [hover-delay=0] - The delay in milliseconds before the popover is shown.
68
68
  * @attribute {string} [preset="popover"] - The preset to use for the popover.
69
- * @attribute {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
69
+ * @attribute {string | null} [distinct=null] - Enforces that this popover should be the only one open with the same unique value.
70
70
  *
71
71
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-beforetoggle - Dispatches before the popover is toggled, and is cancelable.
72
72
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-toggle - Dispatches after the popover is toggled.
@@ -29,7 +29,7 @@ const styles = '@keyframes zoomin{from{transform:scale(.8)}to{transform:scale(1)
29
29
  * @property {number} [hoverDismissDelay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
30
30
  * @property {number} [hoverDelay=0] - The delay in milliseconds before the popover is shown.
31
31
  * @property {PopoverPreset} [preset="popover"] - The preset to use for the popover.
32
- * @property {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
32
+ * @property {string | null} [distinct=null] - Enforces that this popover should be the only one open with the same unique value.
33
33
  *
34
34
  * @globalconfig placement
35
35
  * @globalconfig animationType
@@ -50,7 +50,7 @@ const styles = '@keyframes zoomin{from{transform:scale(.8)}to{transform:scale(1)
50
50
  * @attribute {string} [hover-dismiss-delay=500] - The delay in milliseconds before the popover is dismissed when the user hovers outside of the popover.
51
51
  * @attribute {number} [hover-delay=0] - The delay in milliseconds before the popover is shown.
52
52
  * @attribute {string} [preset="popover"] - The preset to use for the popover.
53
- * @attribute {string | null} [distinct=null] - Enforces that this popover should be the only one open in the same context. Use a unique name otherwise a default context will be used.
53
+ * @attribute {string | null} [distinct=null] - Enforces that this popover should be the only one open with the same unique value.
54
54
  *
55
55
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-beforetoggle - Dispatches before the popover is toggled, and is cancelable.
56
56
  * @event {CustomEvent<IPopoverToggleEventData>} forge-popover-toggle - Dispatches after the popover is toggled.
@@ -142,7 +142,7 @@ let PopoverComponent = class PopoverComponent extends OverlayAware {
142
142
  this.preset = newValue;
143
143
  return;
144
144
  case POPOVER_CONSTANTS.observedAttributes.DISTINCT:
145
- this.distinct = !newValue ? null : newValue.trim();
145
+ this.distinct = newValue;
146
146
  return;
147
147
  }
148
148
  super.attributeChangedCallback(name, oldValue, newValue);
@@ -14,7 +14,7 @@ import { IconComponent, IconRegistry } from '../../icon';
14
14
  import { StateLayerComponent } from '../../state-layer';
15
15
  import { FocusIndicatorComponent } from '../../focus-indicator';
16
16
  const template = '<template><div class=\"forge-split-view-panel\" id=\"root\" part=\"root\"><div class=\"forge-split-view-panel__handle\" id=\"handle\" part=\"handle\" role=\"separator\" aria-controls=\"content\" aria-grabbed=\"false\" tabindex=\"0\"><forge-icon class=\"forge-split-view-panel__icon\" id=\"icon\" part=\"icon\"></forge-icon><forge-state-layer target=\"handle\" id=\"state-layer\" exportparts=\"surface:state-layer\"></forge-state-layer><forge-focus-indicator inward target=\"handle\" part=\"focus-indicator\"></forge-focus-indicator></div><div class=\"forge-split-view-panel__content\" id=\"content\" part=\"content\" role=\"group\"><slot></slot></div></div></template>';
17
- const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u5hcny5;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hcny5{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:u5hcnya;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hcnya{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u5hcnyv;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5hcnyv{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:u5hcnzl;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5hcnzl{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u5hcnzx;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hcnzx{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u5hco06;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5hco06{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u5hco0q;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5hco0q{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u5hco1q;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5hco1q{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
17
+ const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u5ckttb;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5ckttb{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:u5cktu7;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5cktu7{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u5cktv2;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5cktv2{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:u5cktvo;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5cktvo{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u5cktwc;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5cktwc{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u5cktwv;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5cktwv{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u5cktwx;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5cktwx{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u5cktx2;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5cktx2{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
18
18
  /**
19
19
  * @tag forge-split-view-panel
20
20
  *
@@ -88,6 +88,7 @@ export declare const TABLE_CONSTANTS: {
88
88
  FILTER: string;
89
89
  INITIALIZED: string;
90
90
  COLUMN_RESIZE: string;
91
+ BEFORE_BODY_RENDERED: string;
91
92
  BODY_RENDERED: string;
92
93
  };
93
94
  strings: {
@@ -90,6 +90,7 @@ const events = {
90
90
  FILTER: `${elementName}-filter`,
91
91
  INITIALIZED: `${elementName}-initialized`,
92
92
  COLUMN_RESIZE: `${elementName}-column-resize`,
93
+ BEFORE_BODY_RENDERED: `${elementName}-before-body-rendered`,
93
94
  BODY_RENDERED: `${elementName}-body-rendered`
94
95
  };
95
96
  const strings = {
@@ -440,6 +440,7 @@ export class TableCore {
440
440
  * Creates and renders the table with the current column configuration and data.
441
441
  */
442
442
  render() {
443
+ this._adapter.emitHostEvent(TABLE_CONSTANTS.events.BEFORE_BODY_RENDERED, undefined, false);
443
444
  this._adapter.createTable(this._tableConfiguration);
444
445
  this._renderSelections();
445
446
  this._rendered = true;
@@ -452,6 +453,7 @@ export class TableCore {
452
453
  if (!this._rendered) {
453
454
  return;
454
455
  }
456
+ this._adapter.emitHostEvent(TABLE_CONSTANTS.events.BEFORE_BODY_RENDERED, undefined, false);
455
457
  this._adapter.recreateTableBody(this._tableConfiguration);
456
458
  this._renderSelections();
457
459
  this._adapter.emitHostEvent(TABLE_CONSTANTS.events.BODY_RENDERED, undefined, false);
@@ -575,7 +577,6 @@ export class TableCore {
575
577
  * Handles a row being selected/deselected.
576
578
  */
577
579
  _onRowSelected(evt) {
578
- // TODO: We need to ignore this if the checkbox is disabled (which could happen in user code)
579
580
  // We handle row selection manually with either a pointerdown or keydown event (space key), so we listen
580
581
  // for the change event as well to prevent checking the checkbox being checked by the time the event reaches us
581
582
  if (evt.type === 'change') {
@@ -59,6 +59,7 @@ declare global {
59
59
  'forge-table-filter': CustomEvent<ITableFilterEventData>;
60
60
  'forge-table-initialized': CustomEvent<void>;
61
61
  'forge-table-column-resize': CustomEvent<ITableColumnResizeEventData>;
62
+ 'forge-table-before-body-rendered': CustomEvent<void>;
62
63
  'forge-table-body-rendered': CustomEvent<void>;
63
64
  }
64
65
  }
@@ -78,6 +79,7 @@ declare global {
78
79
  * @event {CustomEvent<ITableFilterEventData>} forge-table-filter - Dispatched when a column is filtered. Only applies when `filter` is specified.
79
80
  * @event {CustomEvent<void>} forge-table-initialized - Dispatched when the table is initialized in the DOM for the first time.
80
81
  * @event {CustomEvent<ITableColumnResizeEventData>} forge-table-column-resize - Dispatched when a column is resized.
82
+ * @event {CustomEvent<void>} forge-table-before-body-rendered - Dispatched before the table body is rendered.
81
83
  * @event {CustomEvent<void>} forge-table-body-rendered - Dispatched when the table body is rendered.
82
84
  *
83
85
  * @cssclass forge-data-table - The base table class.
@@ -31,6 +31,7 @@ import { TooltipComponent } from '../tooltip';
31
31
  * @event {CustomEvent<ITableFilterEventData>} forge-table-filter - Dispatched when a column is filtered. Only applies when `filter` is specified.
32
32
  * @event {CustomEvent<void>} forge-table-initialized - Dispatched when the table is initialized in the DOM for the first time.
33
33
  * @event {CustomEvent<ITableColumnResizeEventData>} forge-table-column-resize - Dispatched when a column is resized.
34
+ * @event {CustomEvent<void>} forge-table-before-body-rendered - Dispatched before the table body is rendered.
34
35
  * @event {CustomEvent<void>} forge-table-body-rendered - Dispatched when the table body is rendered.
35
36
  *
36
37
  * @cssclass forge-data-table - The base table class.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tylertech/forge",
3
3
  "description": "Tyler Forge™ Web Components library",
4
- "version": "3.9.0-dev.2",
4
+ "version": "3.9.0-dev.4",
5
5
  "author": "Tyler Technologies, Inc.",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -13,11 +13,11 @@
13
13
  "typings": "esm/index.d.ts",
14
14
  "sideEffects": false,
15
15
  "dependencies": {
16
- "@floating-ui/dom": "^1.6.13",
17
- "@tylertech/forge-core": "^3.1.0",
18
- "@tylertech/tyler-icons": "^2.0.1",
16
+ "@floating-ui/dom": "^1.7.0",
17
+ "@tylertech/forge-core": "^3.2.0",
18
+ "@tylertech/tyler-icons": "^2.0.3",
19
19
  "imask": "^7.6.1",
20
- "lit": "^3.2.1",
20
+ "lit": "^3.3.0",
21
21
  "tslib": "^2.8.1"
22
22
  },
23
23
  "customElements": "custom-elements.json"
@@ -4,7 +4,7 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  $animation-duration: 200ms;
7
- $grid-item-background-color: rgba(0, 0, 0, 0.08);
7
+ $grid-item-background-color: rgb(0, 0, 0, 0.08);
8
8
  $initial-scale: 0.4;
9
9
  $list-item-horizontal-margin: 4px;
10
10
  $max-height: 320px;
@@ -51,7 +51,7 @@
51
51
  height: 16px;
52
52
  width: 16px;
53
53
  background-color: white;
54
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
54
+ box-shadow: 0 1px 2px rgb(0, 0, 0, 0.3);
55
55
  position: absolute;
56
56
  border-radius: 50%;
57
57
  top: calc(50% - 8px);
@@ -71,8 +71,8 @@
71
71
  &__color-preview-container {
72
72
  border-radius: 50%;
73
73
  box-shadow:
74
- 0 0 2px 0 rgba(0, 0, 0, 0.54) inset,
75
- 0 0 2px 0 rgba(0, 0, 0, 0.54);
74
+ 0 0 2px 0 rgb(0, 0, 0, 0.54) inset,
75
+ 0 0 2px 0 rgb(0, 0, 0, 0.54);
76
76
  overflow: hidden;
77
77
  }
78
78
 
@@ -159,7 +159,7 @@
159
159
  &__opacity-slider {
160
160
  height: 8px;
161
161
  margin-top: 16px;
162
- background: linear-gradient(to right, rgba(255, 0, 0, 0) 0%, rgb(255, 0, 0) 100%);
162
+ background: linear-gradient(to right, rgb(255, 0, 0, 0) 0%, rgb(255, 0, 0) 100%);
163
163
  }
164
164
 
165
165
  &__color-rgba,
@@ -206,7 +206,7 @@
206
206
  }
207
207
 
208
208
  @mixin gradient-color() {
209
- background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0, #000 100%), linear-gradient(to right, #fff 0, rgba(255, 255, 255, 0) 100%);
209
+ background: linear-gradient(to bottom, rgb(0, 0, 0, 0) 0, #000 100%), linear-gradient(to right, #fff 0, rgb(255, 255, 255, 0) 100%);
210
210
  height: 152px;
211
211
  }
212
212
 
@@ -47,7 +47,7 @@
47
47
 
48
48
  $minimumContrast: 3.1;
49
49
  $lightContrast: contrast-ratio($color, white);
50
- $darkContrast: contrast-ratio($color, rgba(black, 0.87));
50
+ $darkContrast: contrast-ratio($color, rgb(black, 0.87));
51
51
 
52
52
  @if $lightContrast < $minimumContrast and $darkContrast > $lightContrast {
53
53
  @return 'light';
@@ -26,7 +26,7 @@ $tokens: (
26
26
  transition-timing: utils.module-val(app-bar, transition-timing, animation.variable(easing-standard)),
27
27
  // Scoped theming tokens for app bar children to optionally inherit
28
28
  theme-foreground: utils.module-ref(app-bar, theme-foreground, foreground),
29
- theme-foreground-muted: utils.module-val(app-bar, theme-foreground-muted, rgba(white, theme.emphasis(medium)))
29
+ theme-foreground-muted: utils.module-val(app-bar, theme-foreground-muted, rgb(white, theme.emphasis(medium)))
30
30
  ) !default;
31
31
 
32
32
  @function get($key) {
@@ -48,7 +48,6 @@
48
48
 
49
49
  .content {
50
50
  overflow: auto;
51
- overflow: overlay; // Only supported by Chrome, Safari, Opera
52
51
  }
53
52
  }
54
53
  }
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- import { TemplateResult } from 'lit';
7
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
8
- import { BaseLitElement } from '../../core/base/base-lit-element';
9
- export interface IDataTableBodyComponent extends BaseLitElement {
10
- }
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- 'forge-data-table-body': IDataTableBodyComponent;
14
- }
15
- }
16
- export declare const DATA_TABLE_BODY_TAG_NAME: keyof HTMLElementTagNameMap;
17
- /**
18
- * @tag forge-data-table-body
19
- *
20
- * @summary Represents the body section of a data table.
21
- *
22
- * @csspart root - The root container element.
23
- *
24
- * @slot - The default slot for body content.
25
- *
26
- * @cssclass forge-data-table-body - The data table body class _(required)_.
27
- */
28
- export declare class DataTableBodyComponent extends BaseLitElement implements IDataTableBodyComponent {
29
- static styles: import("lit").CSSResult;
30
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
31
- static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
32
- render(): TemplateResult;
33
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- var _a;
7
- import { __decorate } from "tslib";
8
- import { html, unsafeCSS } from 'lit';
9
- import { customElement } from 'lit/decorators.js';
10
- import { classMap } from 'lit/directives/class-map.js';
11
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
12
- import { BaseLitElement } from '../../core/base/base-lit-element';
13
- const styles = ':host{display:block}:host([hidden]){display:none}.forge-data-table-body{display:table-row-group}';
14
- export const DATA_TABLE_BODY_TAG_NAME = 'forge-data-table-body';
15
- /**
16
- * @tag forge-data-table-body
17
- *
18
- * @summary Represents the body section of a data table.
19
- *
20
- * @csspart root - The root container element.
21
- *
22
- * @slot - The default slot for body content.
23
- *
24
- * @cssclass forge-data-table-body - The data table body class _(required)_.
25
- */
26
- let DataTableBodyComponent = class DataTableBodyComponent extends BaseLitElement {
27
- render() {
28
- return html `
29
- <div part="root" class=${classMap({ 'forge-data-table-body': true })}>
30
- <slot></slot>
31
- </div>
32
- `;
33
- }
34
- };
35
- _a = CUSTOM_ELEMENT_NAME_PROPERTY;
36
- DataTableBodyComponent.styles = unsafeCSS(styles);
37
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
38
- DataTableBodyComponent[_a] = DATA_TABLE_BODY_TAG_NAME;
39
- DataTableBodyComponent = __decorate([
40
- customElement(DATA_TABLE_BODY_TAG_NAME)
41
- ], DataTableBodyComponent);
42
- export { DataTableBodyComponent };
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './body';
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './body';
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- import { TemplateResult } from 'lit';
7
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
8
- import { BaseLitElement } from '../../core/base/base-lit-element';
9
- export interface IDataTableCellComponent extends BaseLitElement {
10
- }
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- 'forge-data-table-cell': IDataTableCellComponent;
14
- }
15
- }
16
- export declare const DATA_TABLE_CELL_TAG_NAME: keyof HTMLElementTagNameMap;
17
- /**
18
- * @tag forge-data-table-cell
19
- *
20
- * @summary Represents a cell in a data table.
21
- *
22
- * @csspart root - The root container element.
23
- *
24
- * @slot - The default slot for cell content.
25
- *
26
- * @cssclass forge-data-table-cell - The data table cell class _(required)_.
27
- */
28
- export declare class DataTableCellComponent extends BaseLitElement implements IDataTableCellComponent {
29
- static styles: import("lit").CSSResult;
30
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
31
- static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
32
- render(): TemplateResult;
33
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- var _a;
7
- import { __decorate } from "tslib";
8
- import { html, unsafeCSS } from 'lit';
9
- import { customElement } from 'lit/decorators.js';
10
- import { classMap } from 'lit/directives/class-map.js';
11
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
12
- import { BaseLitElement } from '../../core/base/base-lit-element';
13
- const styles = ':host{display:block}:host([hidden]){display:none}.forge-data-table-cell{display:table-cell;padding:.5rem}';
14
- export const DATA_TABLE_CELL_TAG_NAME = 'forge-data-table-cell';
15
- /**
16
- * @tag forge-data-table-cell
17
- *
18
- * @summary Represents a cell in a data table.
19
- *
20
- * @csspart root - The root container element.
21
- *
22
- * @slot - The default slot for cell content.
23
- *
24
- * @cssclass forge-data-table-cell - The data table cell class _(required)_.
25
- */
26
- let DataTableCellComponent = class DataTableCellComponent extends BaseLitElement {
27
- render() {
28
- return html `
29
- <div part="root" class=${classMap({ 'forge-data-table-cell': true })}>
30
- <slot></slot>
31
- </div>
32
- `;
33
- }
34
- };
35
- _a = CUSTOM_ELEMENT_NAME_PROPERTY;
36
- DataTableCellComponent.styles = unsafeCSS(styles);
37
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
38
- DataTableCellComponent[_a] = DATA_TABLE_CELL_TAG_NAME;
39
- DataTableCellComponent = __decorate([
40
- customElement(DATA_TABLE_CELL_TAG_NAME)
41
- ], DataTableCellComponent);
42
- export { DataTableCellComponent };
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './cell';
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './cell';
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- import { TemplateResult } from 'lit';
7
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
8
- import { BaseLitElement } from '../../core/base/base-lit-element';
9
- export interface IDataTableColumnComponent extends BaseLitElement {
10
- }
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- 'forge-data-table-column': IDataTableColumnComponent;
14
- }
15
- }
16
- export declare const DATA_TABLE_COLUMN_TAG_NAME: keyof HTMLElementTagNameMap;
17
- /**
18
- * @tag forge-data-table-column
19
- *
20
- * @summary Represents a column in a data table.
21
- *
22
- * @csspart root - The root container element.
23
- *
24
- * @slot - The default slot for column content.
25
- *
26
- * @cssclass forge-data-table-column - The data table column class _(required)_.
27
- */
28
- export declare class DataTableColumnComponent extends BaseLitElement implements IDataTableColumnComponent {
29
- static styles: import("lit").CSSResult;
30
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
31
- static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
32
- render(): TemplateResult;
33
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- var _a;
7
- import { __decorate } from "tslib";
8
- import { html, unsafeCSS } from 'lit';
9
- import { customElement } from 'lit/decorators.js';
10
- import { classMap } from 'lit/directives/class-map.js';
11
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
12
- import { BaseLitElement } from '../../core/base/base-lit-element';
13
- const styles = ':host{display:block}:host([hidden]){display:none}.forge-data-table-column{display:table-column}';
14
- export const DATA_TABLE_COLUMN_TAG_NAME = 'forge-data-table-column';
15
- /**
16
- * @tag forge-data-table-column
17
- *
18
- * @summary Represents a column in a data table.
19
- *
20
- * @csspart root - The root container element.
21
- *
22
- * @slot - The default slot for column content.
23
- *
24
- * @cssclass forge-data-table-column - The data table column class _(required)_.
25
- */
26
- let DataTableColumnComponent = class DataTableColumnComponent extends BaseLitElement {
27
- render() {
28
- return html `
29
- <div part="root" class=${classMap({ 'forge-data-table-column': true })}>
30
- <slot></slot>
31
- </div>
32
- `;
33
- }
34
- };
35
- _a = CUSTOM_ELEMENT_NAME_PROPERTY;
36
- DataTableColumnComponent.styles = unsafeCSS(styles);
37
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
38
- DataTableColumnComponent[_a] = DATA_TABLE_COLUMN_TAG_NAME;
39
- DataTableColumnComponent = __decorate([
40
- customElement(DATA_TABLE_COLUMN_TAG_NAME)
41
- ], DataTableColumnComponent);
42
- export { DataTableColumnComponent };
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './column';
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './column';
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- import { TemplateResult } from 'lit';
7
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
8
- import { BaseLitElement } from '../../core/base/base-lit-element';
9
- export interface IDataTableFooterComponent extends BaseLitElement {
10
- }
11
- declare global {
12
- interface HTMLElementTagNameMap {
13
- 'forge-data-table-footer': IDataTableFooterComponent;
14
- }
15
- }
16
- export declare const DATA_TABLE_FOOTER_TAG_NAME: keyof HTMLElementTagNameMap;
17
- /**
18
- * @tag forge-data-table-footer
19
- *
20
- * @summary Represents the footer section of a data table.
21
- *
22
- * @csspart root - The root container element.
23
- *
24
- * @slot - The default slot for footer content.
25
- *
26
- * @cssclass forge-data-table-footer - The data table footer class _(required)_.
27
- */
28
- export declare class DataTableFooterComponent extends BaseLitElement implements IDataTableFooterComponent {
29
- static styles: import("lit").CSSResult;
30
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
31
- static [CUSTOM_ELEMENT_NAME_PROPERTY]: keyof HTMLElementTagNameMap;
32
- render(): TemplateResult;
33
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- var _a;
7
- import { __decorate } from "tslib";
8
- import { html, unsafeCSS } from 'lit';
9
- import { customElement } from 'lit/decorators.js';
10
- import { classMap } from 'lit/directives/class-map.js';
11
- import { CUSTOM_ELEMENT_NAME_PROPERTY } from '@tylertech/forge-core';
12
- import { BaseLitElement } from '../../core/base/base-lit-element';
13
- const styles = ':host{display:block}:host([hidden]){display:none}.forge-data-table-footer{display:table-footer-group}';
14
- export const DATA_TABLE_FOOTER_TAG_NAME = 'forge-data-table-footer';
15
- /**
16
- * @tag forge-data-table-footer
17
- *
18
- * @summary Represents the footer section of a data table.
19
- *
20
- * @csspart root - The root container element.
21
- *
22
- * @slot - The default slot for footer content.
23
- *
24
- * @cssclass forge-data-table-footer - The data table footer class _(required)_.
25
- */
26
- let DataTableFooterComponent = class DataTableFooterComponent extends BaseLitElement {
27
- render() {
28
- return html `
29
- <div part="root" class=${classMap({ 'forge-data-table-footer': true })}>
30
- <slot></slot>
31
- </div>
32
- `;
33
- }
34
- };
35
- _a = CUSTOM_ELEMENT_NAME_PROPERTY;
36
- DataTableFooterComponent.styles = unsafeCSS(styles);
37
- /** @deprecated Used for compatibility with legacy Forge @customElement decorator. */
38
- DataTableFooterComponent[_a] = DATA_TABLE_FOOTER_TAG_NAME;
39
- DataTableFooterComponent = __decorate([
40
- customElement(DATA_TABLE_FOOTER_TAG_NAME)
41
- ], DataTableFooterComponent);
42
- export { DataTableFooterComponent };
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- export * from './footer';