@latitude-ui/widgets 0.0.32 → 0.0.34

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 (58) hide show
  1. package/fesm2022/latitude-ui-widgets-button.mjs +34 -16
  2. package/fesm2022/latitude-ui-widgets-button.mjs.map +1 -1
  3. package/fesm2022/latitude-ui-widgets-checkbox.mjs +17 -11
  4. package/fesm2022/latitude-ui-widgets-checkbox.mjs.map +1 -1
  5. package/fesm2022/latitude-ui-widgets-core.mjs +40 -59
  6. package/fesm2022/latitude-ui-widgets-core.mjs.map +1 -1
  7. package/fesm2022/latitude-ui-widgets-icons.mjs +16 -4
  8. package/fesm2022/latitude-ui-widgets-icons.mjs.map +1 -1
  9. package/fesm2022/latitude-ui-widgets-input.mjs +9 -3
  10. package/fesm2022/latitude-ui-widgets-input.mjs.map +1 -1
  11. package/fesm2022/latitude-ui-widgets-l10n.mjs +104 -0
  12. package/fesm2022/latitude-ui-widgets-l10n.mjs.map +1 -0
  13. package/fesm2022/latitude-ui-widgets-listbox.mjs +6 -1
  14. package/fesm2022/latitude-ui-widgets-listbox.mjs.map +1 -1
  15. package/fesm2022/latitude-ui-widgets-lookup.mjs +12 -8
  16. package/fesm2022/latitude-ui-widgets-lookup.mjs.map +1 -1
  17. package/fesm2022/latitude-ui-widgets-menu.mjs +5 -5
  18. package/fesm2022/latitude-ui-widgets-menu.mjs.map +1 -1
  19. package/fesm2022/latitude-ui-widgets-paginate.mjs +100 -0
  20. package/fesm2022/latitude-ui-widgets-paginate.mjs.map +1 -0
  21. package/fesm2022/latitude-ui-widgets-scrollable.mjs +9 -5
  22. package/fesm2022/latitude-ui-widgets-scrollable.mjs.map +1 -1
  23. package/fesm2022/latitude-ui-widgets-select.mjs +20 -12
  24. package/fesm2022/latitude-ui-widgets-select.mjs.map +1 -1
  25. package/fesm2022/latitude-ui-widgets-splitview.mjs +218 -0
  26. package/fesm2022/latitude-ui-widgets-splitview.mjs.map +1 -0
  27. package/fesm2022/latitude-ui-widgets-switch.mjs +10 -6
  28. package/fesm2022/latitude-ui-widgets-switch.mjs.map +1 -1
  29. package/fesm2022/latitude-ui-widgets-tabs.mjs +23 -26
  30. package/fesm2022/latitude-ui-widgets-tabs.mjs.map +1 -1
  31. package/fesm2022/latitude-ui-widgets-textbox.mjs +67 -61
  32. package/fesm2022/latitude-ui-widgets-textbox.mjs.map +1 -1
  33. package/fesm2022/latitude-ui-widgets-toolbar.mjs +9 -5
  34. package/fesm2022/latitude-ui-widgets-toolbar.mjs.map +1 -1
  35. package/fesm2022/latitude-ui-widgets.mjs +10 -1
  36. package/fesm2022/latitude-ui-widgets.mjs.map +1 -1
  37. package/l10n/README.md +3 -0
  38. package/package.json +13 -1
  39. package/paginate/README.md +3 -0
  40. package/splitview/README.md +3 -0
  41. package/types/latitude-ui-widgets-button.d.ts +25 -8
  42. package/types/latitude-ui-widgets-checkbox.d.ts +6 -3
  43. package/types/latitude-ui-widgets-core.d.ts +32 -32
  44. package/types/latitude-ui-widgets-icons.d.ts +11 -2
  45. package/types/latitude-ui-widgets-input.d.ts +5 -3
  46. package/types/latitude-ui-widgets-l10n.d.ts +46 -0
  47. package/types/latitude-ui-widgets-listbox.d.ts +3 -1
  48. package/types/latitude-ui-widgets-lookup.d.ts +5 -3
  49. package/types/latitude-ui-widgets-menu.d.ts +4 -4
  50. package/types/latitude-ui-widgets-paginate.d.ts +39 -0
  51. package/types/latitude-ui-widgets-scrollable.d.ts +6 -4
  52. package/types/latitude-ui-widgets-select.d.ts +5 -3
  53. package/types/latitude-ui-widgets-splitview.d.ts +76 -0
  54. package/types/latitude-ui-widgets-switch.d.ts +5 -3
  55. package/types/latitude-ui-widgets-tabs.d.ts +15 -19
  56. package/types/latitude-ui-widgets-textbox.d.ts +9 -12
  57. package/types/latitude-ui-widgets-toolbar.d.ts +3 -1
  58. package/types/latitude-ui-widgets.d.ts +4 -1
@@ -2,7 +2,7 @@ import { switchMap, of, delay } from 'rxjs';
2
2
  import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import * as i0 from '@angular/core';
4
4
  import { input, booleanAttribute, ChangeDetectionStrategy, ViewEncapsulation, Component, forwardRef, inject, computed, Directive, contentChildren, signal, output, untracked, ElementRef, afterRenderEffect, numberAttribute } from '@angular/core';
5
- import { HTMLFormControl } from '@latitude-ui/widgets/core';
5
+ import { FormControlComponent } from '@latitude-ui/widgets/core';
6
6
  import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
7
7
  import * as i1 from '@angular/forms';
8
8
  import { FormsModule } from '@angular/forms';
@@ -43,7 +43,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
43
43
  type: Directive
44
44
  }] });
45
45
 
46
- class SelectDirective extends HTMLFormControl {
46
+ class SelectDirective extends FormControlComponent {
47
47
  mode = input('popover', ...(ngDevMode ? [{ debugName: "mode" }] : []));
48
48
  searchable = input(false, { ...(ngDevMode ? { debugName: "searchable" } : {}), transform: booleanAttribute });
49
49
  contentChildren = contentChildren(SelectOptionDirective, ...(ngDevMode ? [{ debugName: "contentChildren" }] : []));
@@ -146,7 +146,7 @@ class SelectDropDownComponent {
146
146
  return untracked(() => (searchRegExp ? options.filter((option) => option.label().match(searchRegExp)) : options));
147
147
  }, ...(ngDevMode ? [{ debugName: "options" }] : []));
148
148
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectDropDownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
149
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SelectDropDownComponent, isStandalone: true, selector: "lat-select-dropdown", outputs: { selection: "selection" }, host: { properties: { "attr.data-side": "dir._overlayPositionSide()" } }, exportAs: ["latSelectDropDown"], ngImport: i0, template: "@if (dir.searchable()) {\n <lat-textbox [autofocus]=\"true\" [(ngModel)]=\"search\" />\n}\n\n<lat-listbox [style.width.px]=\"dir._overlayWidth()\" [attr.data-side]=\"dir._overlayPositionSide()\">\n @for (option of options(); track option.value()) {\n <lat-option\n [label]=\"option.label()\"\n [value]=\"option.value()\"\n [disabled]=\"option.disabled()\"\n [setsize]=\"$count\"\n [posinset]=\"$index\"\n (click)=\"selection.emit(option)\"\n >\n @if (option.selected()) {\n <lat-icon name=\"check\" />\n }\n <span>{{ option.label() }}</span>\n </lat-option>\n }\n</lat-listbox>\n", dependencies: [{ kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["url", "name"], exportAs: ["latIcon"] }, { kind: "component", type: ListBoxComponent, selector: "lat-listbox", exportAs: ["latListBox"] }, { kind: "component", type: OptionComponent, selector: "lat-option, lat-listbox-option", inputs: ["label", "value", "setsize", "posinset", "selected", "disabled", "checkbox"], exportAs: ["latOption"] }, { kind: "component", type: TextBoxComponent, selector: "lat-textbox:not([type]), lat-textbox[type=\"text\"]", inputs: ["rows", "maxlength", "minlength"], exportAs: ["latTextBox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
149
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SelectDropDownComponent, isStandalone: true, selector: "lat-select-dropdown", outputs: { selection: "selection" }, host: { properties: { "attr.data-side": "dir._overlayPositionSide()" } }, exportAs: ["latSelectDropDown"], ngImport: i0, template: "@if (dir.searchable()) {\n <lat-textbox [autofocus]=\"true\" [(ngModel)]=\"search\" />\n}\n\n<lat-listbox [style.width.px]=\"dir._overlayWidth()\" [attr.data-side]=\"dir._overlayPositionSide()\">\n @for (option of options(); track option.value()) {\n <lat-option\n [label]=\"option.label()\"\n [value]=\"option.value()\"\n [disabled]=\"option.disabled()\"\n [setsize]=\"$count\"\n [posinset]=\"$index\"\n (click)=\"selection.emit(option)\"\n >\n @if (option.selected()) {\n <lat-icon name=\"check\" />\n }\n <span>{{ option.label() }}</span>\n </lat-option>\n }\n</lat-listbox>\n", dependencies: [{ kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["role", "url", "name"], exportAs: ["latIcon"] }, { kind: "component", type: ListBoxComponent, selector: "lat-listbox", exportAs: ["latListBox"] }, { kind: "component", type: OptionComponent, selector: "lat-option, lat-listbox-option", inputs: ["label", "value", "setsize", "posinset", "selected", "disabled", "checkbox"], exportAs: ["latOption"] }, { kind: "component", type: TextBoxComponent, selector: "lat-textbox:not([type]), lat-textbox[type=\"text\"]", inputs: ["rows", "maxlength", "minlength"], exportAs: ["latTextBox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
150
150
  }
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectDropDownComponent, decorators: [{
152
152
  type: Component,
@@ -168,7 +168,7 @@ class SelectTriggerComponent {
168
168
  });
169
169
  }
170
170
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
171
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SelectTriggerComponent, isStandalone: true, selector: "lat-select-trigger", host: { attributes: { "role": "combobox" }, listeners: { "click": "select.toggle()" }, properties: { "attr.size": "select.size()" } }, exportAs: ["latSelectTrigger"], ngImport: i0, template: "<ng-content select=\"lat-select-values\" />\n\n@if (!select.readonly()) {\n <div class=\"lat-select-control\">\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\">\n <lat-icon [name]=\"select._overlayState() ? 'chevron-up' : 'chevron-down'\"/>\n </lat-button>\n </div>\n}\n\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "lat-button", inputs: ["role", "size", "variant", "disabled", "tabindex"], exportAs: ["latButton"] }, { kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["url", "name"], exportAs: ["latIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
171
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SelectTriggerComponent, isStandalone: true, selector: "lat-select-trigger", host: { attributes: { "role": "combobox" }, listeners: { "click": "select.toggle()" }, properties: { "attr.size": "select.size()" } }, exportAs: ["latSelectTrigger"], ngImport: i0, template: "<ng-content select=\"lat-select-values\" />\n\n@if (!select.readonly()) {\n <div class=\"lat-select-control\">\n @if(select.value()) {\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\" (click)=\"select.writeValue(null)\">\n <lat-icon name=\"x\"/>\n </lat-button>\n }\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\">\n <lat-icon [name]=\"select._overlayState() ? 'chevron-up' : 'chevron-down'\"/>\n </lat-button>\n </div>\n}\n\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "lat-button", inputs: ["role", "size", "variant", "disabled", "tabindex"], exportAs: ["latButton"] }, { kind: "component", type: IconComponent, selector: "lat-icon", inputs: ["role", "url", "name"], exportAs: ["latIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
172
172
  }
173
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectTriggerComponent, decorators: [{
174
174
  type: Component,
@@ -176,7 +176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
176
176
  role: 'combobox',
177
177
  '[attr.size]': 'select.size()',
178
178
  '(click)': 'select.toggle()',
179
- }, template: "<ng-content select=\"lat-select-values\" />\n\n@if (!select.readonly()) {\n <div class=\"lat-select-control\">\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\">\n <lat-icon [name]=\"select._overlayState() ? 'chevron-up' : 'chevron-down'\"/>\n </lat-button>\n </div>\n}\n\n" }]
179
+ }, template: "<ng-content select=\"lat-select-values\" />\n\n@if (!select.readonly()) {\n <div class=\"lat-select-control\">\n @if(select.value()) {\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\" (click)=\"select.writeValue(null)\">\n <lat-icon name=\"x\"/>\n </lat-button>\n }\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\">\n <lat-icon [name]=\"select._overlayState() ? 'chevron-up' : 'chevron-down'\"/>\n </lat-button>\n </div>\n}\n\n" }]
180
180
  }], ctorParameters: () => [] });
181
181
 
182
182
  class SelectValueComponent {
@@ -221,7 +221,7 @@ class SelectMultipleComponent extends SelectDirective {
221
221
  else {
222
222
  selected.splice(index, 1);
223
223
  }
224
- this.writeValue(selected);
224
+ this.updateValue(selected);
225
225
  }
226
226
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectMultipleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
227
227
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SelectMultipleComponent, isStandalone: true, selector: "lat-select[type=\"multiple\"]", inputs: { maxlength: { classPropertyName: "maxlength", publicName: "maxlength", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
@@ -230,7 +230,7 @@ class SelectMultipleComponent extends SelectDirective {
230
230
  useExisting: forwardRef(() => SelectMultipleComponent),
231
231
  },
232
232
  {
233
- provide: HTMLFormControl,
233
+ provide: FormControlComponent,
234
234
  useExisting: forwardRef(() => SelectMultipleComponent),
235
235
  },
236
236
  ], exportAs: ["latSelect"], usesInheritance: true, ngImport: i0, template: "@if(mode() === 'popover') {\r\n <lat-select-trigger cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayPanelClass=\"lat-select-dropdown\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"_overlayExpanded()\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth() > 0 ? _overlayWidth() : 'auto'\"\r\n [cdkConnectedOverlayPositions]=\"_overlayPositions()\"\r\n (detach)=\"hide()\"\r\n (backdropClick)=\"hide()\"\r\n (positionChange)=\"updateOverlayPositionSide($event)\"\r\n >\r\n <lat-select-dropdown (selection)=\"select($event)\" />\r\n </ng-template>\r\n} @else {\r\n <lat-select-trigger>\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n}\r\n", dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: SelectDropDownComponent, selector: "lat-select-dropdown", outputs: ["selection"], exportAs: ["latSelectDropDown"] }, { kind: "component", type: SelectTriggerComponent, selector: "lat-select-trigger", exportAs: ["latSelectTrigger"] }, { kind: "component", type: SelectValuesComponent, selector: "lat-select-values", exportAs: ["latSelectValues"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -249,7 +249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
249
249
  useExisting: forwardRef(() => SelectMultipleComponent),
250
250
  },
251
251
  {
252
- provide: HTMLFormControl,
252
+ provide: FormControlComponent,
253
253
  useExisting: forwardRef(() => SelectMultipleComponent),
254
254
  },
255
255
  ], template: "@if(mode() === 'popover') {\r\n <lat-select-trigger cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayPanelClass=\"lat-select-dropdown\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"_overlayExpanded()\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth() > 0 ? _overlayWidth() : 'auto'\"\r\n [cdkConnectedOverlayPositions]=\"_overlayPositions()\"\r\n (detach)=\"hide()\"\r\n (backdropClick)=\"hide()\"\r\n (positionChange)=\"updateOverlayPositionSide($event)\"\r\n >\r\n <lat-select-dropdown (selection)=\"select($event)\" />\r\n </ng-template>\r\n} @else {\r\n <lat-select-trigger>\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n}\r\n" }]
@@ -263,7 +263,7 @@ class SelectSingleComponent extends SelectDirective {
263
263
  }, ...(ngDevMode ? [{ debugName: "selected" }] : []));
264
264
  select(option) {
265
265
  const value = this.nullable() ? (option.selected() ? null : option.value()) : option.value();
266
- this.writeValue(value);
266
+ this.updateValue(value);
267
267
  this.hide();
268
268
  }
269
269
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SelectSingleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -273,7 +273,7 @@ class SelectSingleComponent extends SelectDirective {
273
273
  useExisting: forwardRef(() => SelectSingleComponent),
274
274
  },
275
275
  {
276
- provide: HTMLFormControl,
276
+ provide: FormControlComponent,
277
277
  useExisting: forwardRef(() => SelectSingleComponent),
278
278
  },
279
279
  ], exportAs: ["latSelect"], usesInheritance: true, ngImport: i0, template: "@if(mode() === 'popover') {\r\n <lat-select-trigger cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayPanelClass=\"lat-select-dropdown\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"_overlayExpanded()\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth() > 0 ? _overlayWidth() : 'auto'\"\r\n [cdkConnectedOverlayPositions]=\"_overlayPositions()\"\r\n (detach)=\"hide()\"\r\n (backdropClick)=\"hide()\"\r\n (positionChange)=\"updateOverlayPositionSide($event)\"\r\n >\r\n <lat-select-dropdown (selection)=\"select($event)\" />\r\n </ng-template>\r\n} @else {\r\n <lat-select-trigger>\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n}\r\n", dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: SelectDropDownComponent, selector: "lat-select-dropdown", outputs: ["selection"], exportAs: ["latSelectDropDown"] }, { kind: "component", type: SelectTriggerComponent, selector: "lat-select-trigger", exportAs: ["latSelectTrigger"] }, { kind: "component", type: SelectValuesComponent, selector: "lat-select-values", exportAs: ["latSelectValues"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -292,15 +292,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
292
292
  useExisting: forwardRef(() => SelectSingleComponent),
293
293
  },
294
294
  {
295
- provide: HTMLFormControl,
295
+ provide: FormControlComponent,
296
296
  useExisting: forwardRef(() => SelectSingleComponent),
297
297
  },
298
298
  ], template: "@if(mode() === 'popover') {\r\n <lat-select-trigger cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayPanelClass=\"lat-select-dropdown\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"_overlayExpanded()\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth() > 0 ? _overlayWidth() : 'auto'\"\r\n [cdkConnectedOverlayPositions]=\"_overlayPositions()\"\r\n (detach)=\"hide()\"\r\n (backdropClick)=\"hide()\"\r\n (positionChange)=\"updateOverlayPositionSide($event)\"\r\n >\r\n <lat-select-dropdown (selection)=\"select($event)\" />\r\n </ng-template>\r\n} @else {\r\n <lat-select-trigger>\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n}\r\n" }]
299
299
  }], propDecorators: { nullable: [{ type: i0.Input, args: [{ isSignal: true, alias: "nullable", required: false }] }] } });
300
300
 
301
+ const SelectImports = [
302
+ SelectDirective,
303
+ SelectOptionComponent,
304
+ SelectOptionDirective,
305
+ SelectMultipleComponent,
306
+ SelectSingleComponent
307
+ ];
308
+
301
309
  /**
302
310
  * Generated bundle index. Do not edit.
303
311
  */
304
312
 
305
- export { SelectDirective, SelectMultipleComponent, SelectOptionComponent, SelectOptionDirective, SelectSingleComponent };
313
+ export { SelectDirective, SelectImports, SelectMultipleComponent, SelectOptionComponent, SelectOptionDirective, SelectSingleComponent };
306
314
  //# sourceMappingURL=latitude-ui-widgets-select.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"latitude-ui-widgets-select.mjs","sources":["../../../../packages/widgets/select/lib/select-option/select-option.component.ts","../../../../packages/widgets/select/lib/select-option/select-option.component.html","../../../../packages/widgets/select/lib/select-option/select-option.directive.ts","../../../../packages/widgets/select/lib/select/select.directive.ts","../../../../packages/widgets/select/lib/select-dropdown/select-dropdown.component.ts","../../../../packages/widgets/select/lib/select-dropdown/select-dropdown.component.html","../../../../packages/widgets/select/lib/select-trigger/select-trigger.component.ts","../../../../packages/widgets/select/lib/select-trigger/select-trigger.component.html","../../../../packages/widgets/select/lib/select-value/select-value.component.ts","../../../../packages/widgets/select/lib/select-value/select-value.component.html","../../../../packages/widgets/select/lib/select-values/select-values.component.ts","../../../../packages/widgets/select/lib/select-values/select-values.component.html","../../../../packages/widgets/select/lib/select-multiple.component.ts","../../../../packages/widgets/select/lib/select/select.component.html","../../../../packages/widgets/select/lib/select-single.component.ts","../../../../packages/widgets/select/latitude-ui-widgets-select.ts"],"sourcesContent":["import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n forwardRef,\r\n input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { SelectOptionDirective } from './select-option.directive';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSelectOption',\r\n selector: 'lat-select-option',\r\n templateUrl: './select-option.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n {\r\n directive: forwardRef(() => SelectOptionDirective),\r\n },\r\n ],\r\n})\r\nexport class SelectOptionComponent<T> {\r\n readonly value = input.required<T>();\r\n readonly label = input.required<string>();\r\n\r\n readonly hidden = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n}\r\n","\r\n","import { computed, Directive, inject } from '@angular/core';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\nimport { SelectOptionComponent } from './select-option.component';\r\n\r\n@Directive()\r\nexport class SelectOptionDirective<T> {\r\n readonly select = inject(SelectDirective<T, T | T[]>);\r\n readonly option = inject(SelectOptionComponent<T>, { host: true });\r\n\r\n readonly value = computed(() => this.option.value());\r\n readonly label = computed(() => this.option.label());\r\n readonly hidden = computed(() => this.option.hidden());\r\n readonly disabled = computed(() => this.option.disabled());\r\n\r\n readonly selected = computed(() => this.select.selected().includes(this.value()));\r\n}\r\n","import { delay, of, switchMap } from 'rxjs';\r\n\r\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { booleanAttribute, computed, contentChildren, Directive, input, Signal, signal } from '@angular/core';\r\n\r\nimport { ConnectedOverlayPositionChange, ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { HTMLFormControl } from '@latitude-ui/widgets/core';\r\n\r\nimport { SelectOptionDirective } from '../select-option/select-option.directive';\r\n\r\nexport type SelectMode = 'popover' | 'dialog' ;\r\n\r\n@Directive()\r\nexport abstract class SelectDirective<T, TValue> extends HTMLFormControl<TValue> {\r\n readonly mode = input<SelectMode>('popover');\r\n readonly searchable = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n readonly contentChildren = contentChildren<SelectOptionDirective<T>>(SelectOptionDirective);\r\n\r\n /** @internal */\r\n readonly _overlayWidth = signal<number>(0);\r\n\r\n /** @internal */\r\n readonly _overlayState = signal<boolean>(false);\r\n\r\n /** @internal */\r\n readonly _overlayExpanded = toSignal(\r\n toObservable(this._overlayState).pipe(\r\n switchMap((state) => {\r\n return state ? of(state) : of(state).pipe(delay(100));\r\n }),\r\n takeUntilDestroyed()\r\n ),\r\n { initialValue: false }\r\n );\r\n\r\n /** @internal */\r\n readonly _overlayPositions = signal<ConnectedPosition[]>([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ]);\r\n\r\n /** @internal */\r\n readonly _overlayPositionSide = signal<'top' | 'bottom' | 'left' | 'right'>('bottom');\r\n\r\n /** @internal */\r\n readonly _indexes = computed(() => {\r\n const children = this.contentChildren();\r\n\r\n return new Map(children.map((option) => [option.value(), option]));\r\n });\r\n\r\n /** @internal */\r\n readonly _selected = computed(() => {\r\n const selected = this.selected();\r\n\r\n const indexes = this._indexes();\r\n\r\n return selected\r\n .filter((value) => indexes.has(value))\r\n .map((value) => indexes.get(value)) as SelectOptionDirective<T>[];\r\n });\r\n\r\n public hide() {\r\n if (!this._overlayState()) {\r\n return void 0;\r\n }\r\n\r\n this._overlayState.set(false);\r\n\r\n this.markAsTouched();\r\n }\r\n\r\n public open() {\r\n if (this._overlayState() || this.disabled() || this.contentChildren().length === 0) {\r\n return void 0;\r\n }\r\n\r\n this._overlayState.set(true);\r\n }\r\n\r\n public toggle(): void {\r\n if (this._overlayState()) {\r\n this.hide();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected updateOverlayPositionSide({ connectionPair }: ConnectedOverlayPositionChange) {\r\n this._overlayPositionSide.update(() => {\r\n return connectionPair.originY === 'center'\r\n ? connectionPair.originX === 'start'\r\n ? 'left'\r\n : 'right'\r\n : connectionPair.originY;\r\n });\r\n }\r\n\r\n /** ABSTRACT SECTION */\r\n\r\n abstract selected: Signal<T[]>;\r\n\r\n abstract select(option: SelectOptionDirective<T>): void;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n output,\r\n signal,\r\n untracked,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IconComponent } from '@latitude-ui/widgets/icons';\r\nimport { ListBoxComponent, OptionComponent } from '@latitude-ui/widgets/listbox';\r\nimport { TextBoxComponent } from '@latitude-ui/widgets/textbox';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\nimport { SelectOptionDirective } from '../select-option/select-option.directive';\r\n\r\n\r\n@Component({\r\n imports: [IconComponent, ListBoxComponent, OptionComponent, TextBoxComponent, FormsModule],\r\n exportAs: 'latSelectDropDown',\r\n selector: 'lat-select-dropdown',\r\n templateUrl: './select-dropdown.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.data-side]': 'dir._overlayPositionSide()',\r\n },\r\n})\r\nexport class SelectDropDownComponent<T> {\r\n readonly dir = inject(SelectDirective);\r\n\r\n readonly selection = output<SelectOptionDirective<T>>();\r\n\r\n readonly search = signal('');\r\n readonly options = computed(() => {\r\n const options = this.dir.contentChildren();\r\n\r\n const search = this.search()\r\n const searchRegExp = search.length ? new RegExp(`.*${search}*.`, 'i') : null\r\n\r\n return untracked(() => (searchRegExp ? options.filter((option) => option.label().match(searchRegExp)) : options));\r\n });\r\n\r\n}\r\n","@if (dir.searchable()) {\n <lat-textbox [autofocus]=\"true\" [(ngModel)]=\"search\" />\n}\n\n<lat-listbox [style.width.px]=\"dir._overlayWidth()\" [attr.data-side]=\"dir._overlayPositionSide()\">\n @for (option of options(); track option.value()) {\n <lat-option\n [label]=\"option.label()\"\n [value]=\"option.value()\"\n [disabled]=\"option.disabled()\"\n [setsize]=\"$count\"\n [posinset]=\"$index\"\n (click)=\"selection.emit(option)\"\n >\n @if (option.selected()) {\n <lat-icon name=\"check\" />\n }\n <span>{{ option.label() }}</span>\n </lat-option>\n }\n</lat-listbox>\n","import {\r\n afterRenderEffect,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n inject,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { ButtonComponent } from '@latitude-ui/widgets/button';\r\nimport { IconComponent } from '@latitude-ui/widgets/icons';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\n\r\n\r\n@Component({\r\n imports: [ButtonComponent, IconComponent],\r\n exportAs: 'latSelectTrigger',\r\n selector: 'lat-select-trigger',\r\n templateUrl: './select-trigger.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'combobox',\r\n '[attr.size]': 'select.size()',\r\n '(click)': 'select.toggle()',\r\n },\r\n})\r\nexport class SelectTriggerComponent {\r\n readonly el = inject(ElementRef<HTMLElement>).nativeElement;\r\n readonly select = inject(SelectDirective);\r\n\r\n constructor() {\r\n afterRenderEffect((onCleanup) => {\r\n const observer = new ResizeObserver(() => {\r\n this.select._overlayWidth.set(this.el.offsetWidth);\r\n });\r\n\r\n observer.observe(this.el);\r\n\r\n onCleanup(() => observer.disconnect());\r\n });\r\n }\r\n}\r\n","<ng-content select=\"lat-select-values\" />\n\n@if (!select.readonly()) {\n <div class=\"lat-select-control\">\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\">\n <lat-icon [name]=\"select._overlayState() ? 'chevron-up' : 'chevron-down'\"/>\n </lat-button>\n </div>\n}\n\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSelectValue',\r\n selector: 'lat-select-value',\r\n templateUrl: './select-value.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'listitem'\r\n },\r\n})\r\nexport class SelectValueComponent {\r\n readonly select = inject(SelectDirective);\r\n}\r\n","<span>\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\nimport { SelectValueComponent } from '../select-value/select-value.component';\r\n\r\n\r\n@Component({\r\n imports: [SelectValueComponent],\r\n exportAs: 'latSelectValues',\r\n selector: 'lat-select-values',\r\n templateUrl: './select-values.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'list'\r\n },\r\n})\r\nexport class SelectValuesComponent {\r\n readonly select = inject(SelectDirective);\r\n}\r\n","@for (option of select._selected(); track option.value()) {\n <lat-select-value>\n {{ option.label() }}\n </lat-select-value>\n} @empty {\n {{ select.placeholder() }}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n numberAttribute,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\nimport { HTMLFormControl } from '@latitude-ui/widgets/core';\r\n\r\nimport { SelectDirective } from './select/select.directive';\r\n\r\nimport { SelectDropDownComponent } from './select-dropdown/select-dropdown.component';\r\nimport { SelectTriggerComponent } from './select-trigger/select-trigger.component';\r\nimport { SelectOptionDirective } from './select-option/select-option.directive';\r\nimport { SelectValuesComponent } from './select-values/select-values.component';\r\n\r\n@Component({\r\n imports: [\r\n CdkOverlayOrigin,\r\n CdkConnectedOverlay,\r\n SelectDropDownComponent,\r\n SelectTriggerComponent,\r\n SelectValuesComponent,\r\n ],\r\n exportAs: 'latSelect',\r\n selector: 'lat-select[type=\"multiple\"]',\r\n templateUrl: './select/select.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: SelectDirective,\r\n useExisting: forwardRef(() => SelectMultipleComponent),\r\n },\r\n {\r\n provide: HTMLFormControl,\r\n useExisting: forwardRef(() => SelectMultipleComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectMultipleComponent<T> extends SelectDirective<T, T[]> {\r\n readonly maxlength = input<number, unknown>(Number.MAX_SAFE_INTEGER, { transform: numberAttribute });\r\n\r\n public override selected = computed(() => {\r\n const value = this.value();\r\n\r\n return (value ? (Array.isArray(value) ? value : [value]) : []) as T[];\r\n });\r\n\r\n public override select(option: SelectOptionDirective<T>): void {\r\n const selected = this.selected().slice();\r\n\r\n if (selected.length >= this.maxlength()) {\r\n return void 0;\r\n }\r\n\r\n const index = selected.findIndex((value) => value === option.value());\r\n\r\n if (index === -1) {\r\n selected.push(option.value());\r\n } else {\r\n selected.splice(index, 1);\r\n }\r\n\r\n this.writeValue(selected);\r\n }\r\n}\r\n","@if(mode() === 'popover') {\r\n <lat-select-trigger cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayPanelClass=\"lat-select-dropdown\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"_overlayExpanded()\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth() > 0 ? _overlayWidth() : 'auto'\"\r\n [cdkConnectedOverlayPositions]=\"_overlayPositions()\"\r\n (detach)=\"hide()\"\r\n (backdropClick)=\"hide()\"\r\n (positionChange)=\"updateOverlayPositionSide($event)\"\r\n >\r\n <lat-select-dropdown (selection)=\"select($event)\" />\r\n </ng-template>\r\n} @else {\r\n <lat-select-trigger>\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed, forwardRef,\r\n input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\nimport { HTMLFormControl } from '@latitude-ui/widgets/core';\r\n\r\nimport { SelectDirective } from './select/select.directive';\r\n\r\nimport { SelectDropDownComponent } from './select-dropdown/select-dropdown.component';\r\nimport { SelectOptionDirective } from './select-option/select-option.directive';\r\nimport { SelectTriggerComponent } from './select-trigger/select-trigger.component';\r\nimport { SelectValuesComponent } from './select-values/select-values.component';\r\n\r\n\r\n@Component({\r\n imports: [\r\n CdkOverlayOrigin,\r\n CdkConnectedOverlay,\r\n SelectDropDownComponent,\r\n SelectTriggerComponent,\r\n SelectValuesComponent,\r\n ],\r\n exportAs: 'latSelect',\r\n selector: 'lat-select[type=\"single\"]',\r\n templateUrl: './select/select.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: SelectDirective,\r\n useExisting: forwardRef(() => SelectSingleComponent),\r\n },\r\n {\r\n provide: HTMLFormControl,\r\n useExisting: forwardRef(() => SelectSingleComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectSingleComponent<T> extends SelectDirective<T, T> {\r\n readonly nullable = input<unknown, boolean>(true, { transform: booleanAttribute });\r\n\r\n public override selected = computed(() => {\r\n const value = this.value();\r\n return (value === undefined ? [] : [value]) as T[];\r\n });\r\n\r\n public override select(option: SelectOptionDirective<T>): void {\r\n const value = this.nullable() ? (option.selected() ? null : option.value()) : option.value();\r\n\r\n this.writeValue(value);\r\n this.hide();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latitude-ui-widgets-select.mjs","sources":["../../../../packages/widgets/select/lib/select-option/select-option.component.ts","../../../../packages/widgets/select/lib/select-option/select-option.component.html","../../../../packages/widgets/select/lib/select-option/select-option.directive.ts","../../../../packages/widgets/select/lib/select/select.directive.ts","../../../../packages/widgets/select/lib/select-dropdown/select-dropdown.component.ts","../../../../packages/widgets/select/lib/select-dropdown/select-dropdown.component.html","../../../../packages/widgets/select/lib/select-trigger/select-trigger.component.ts","../../../../packages/widgets/select/lib/select-trigger/select-trigger.component.html","../../../../packages/widgets/select/lib/select-value/select-value.component.ts","../../../../packages/widgets/select/lib/select-value/select-value.component.html","../../../../packages/widgets/select/lib/select-values/select-values.component.ts","../../../../packages/widgets/select/lib/select-values/select-values.component.html","../../../../packages/widgets/select/lib/select-multiple.component.ts","../../../../packages/widgets/select/lib/select/select.component.html","../../../../packages/widgets/select/lib/select-single.component.ts","../../../../packages/widgets/select/public-api.ts","../../../../packages/widgets/select/latitude-ui-widgets-select.ts"],"sourcesContent":["import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n forwardRef,\r\n input,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { SelectOptionDirective } from './select-option.directive';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSelectOption',\r\n selector: 'lat-select-option',\r\n templateUrl: './select-option.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n {\r\n directive: forwardRef(() => SelectOptionDirective),\r\n },\r\n ],\r\n})\r\nexport class SelectOptionComponent<T> {\r\n readonly value = input.required<T>();\r\n readonly label = input.required<string>();\r\n\r\n readonly hidden = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n}\r\n","\r\n","import { computed, Directive, inject } from '@angular/core';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\nimport { SelectOptionComponent } from './select-option.component';\r\n\r\n@Directive()\r\nexport class SelectOptionDirective<T> {\r\n readonly select = inject(SelectDirective<T, T | T[]>);\r\n readonly option = inject(SelectOptionComponent<T>, { host: true });\r\n\r\n readonly value = computed(() => this.option.value());\r\n readonly label = computed(() => this.option.label());\r\n readonly hidden = computed(() => this.option.hidden());\r\n readonly disabled = computed(() => this.option.disabled());\r\n\r\n readonly selected = computed(() => this.select.selected().includes(this.value()));\r\n}\r\n","import { delay, of, switchMap } from 'rxjs';\r\n\r\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { booleanAttribute, computed, contentChildren, Directive, input, Signal, signal } from '@angular/core';\r\n\r\nimport { ConnectedOverlayPositionChange, ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { FormControlComponent } from '@latitude-ui/widgets/core';\r\n\r\nimport { SelectOptionDirective } from '../select-option/select-option.directive';\r\n\r\nexport type SelectMode = 'popover' | 'dialog' ;\r\n\r\n@Directive()\r\nexport abstract class SelectDirective<T, TValue> extends FormControlComponent<TValue> {\r\n readonly mode = input<SelectMode>('popover');\r\n readonly searchable = input<boolean, unknown>(false, { transform: booleanAttribute });\r\n\r\n readonly contentChildren = contentChildren<SelectOptionDirective<T>>(SelectOptionDirective);\r\n\r\n /** @internal */\r\n readonly _overlayWidth = signal<number>(0);\r\n\r\n /** @internal */\r\n readonly _overlayState = signal<boolean>(false);\r\n\r\n /** @internal */\r\n readonly _overlayExpanded = toSignal(\r\n toObservable(this._overlayState).pipe(\r\n switchMap((state) => {\r\n return state ? of(state) : of(state).pipe(delay(100));\r\n }),\r\n takeUntilDestroyed()\r\n ),\r\n { initialValue: false }\r\n );\r\n\r\n /** @internal */\r\n readonly _overlayPositions = signal<ConnectedPosition[]>([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ]);\r\n\r\n /** @internal */\r\n readonly _overlayPositionSide = signal<'top' | 'bottom' | 'left' | 'right'>('bottom');\r\n\r\n /** @internal */\r\n readonly _indexes = computed(() => {\r\n const children = this.contentChildren();\r\n\r\n return new Map(children.map((option) => [option.value(), option]));\r\n });\r\n\r\n /** @internal */\r\n readonly _selected = computed(() => {\r\n const selected = this.selected();\r\n\r\n const indexes = this._indexes();\r\n\r\n return selected\r\n .filter((value) => indexes.has(value))\r\n .map((value) => indexes.get(value)) as SelectOptionDirective<T>[];\r\n });\r\n\r\n public hide() {\r\n if (!this._overlayState()) {\r\n return void 0;\r\n }\r\n\r\n this._overlayState.set(false);\r\n\r\n this.markAsTouched();\r\n }\r\n\r\n public open() {\r\n if (this._overlayState() || this.disabled() || this.contentChildren().length === 0) {\r\n return void 0;\r\n }\r\n\r\n this._overlayState.set(true);\r\n }\r\n\r\n public toggle(): void {\r\n if (this._overlayState()) {\r\n this.hide();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected updateOverlayPositionSide({ connectionPair }: ConnectedOverlayPositionChange) {\r\n this._overlayPositionSide.update(() => {\r\n return connectionPair.originY === 'center'\r\n ? connectionPair.originX === 'start'\r\n ? 'left'\r\n : 'right'\r\n : connectionPair.originY;\r\n });\r\n }\r\n\r\n /** ABSTRACT SECTION */\r\n\r\n abstract selected: Signal<T[]>;\r\n\r\n abstract select(option: SelectOptionDirective<T>): void;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n output,\r\n signal,\r\n untracked,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IconComponent } from '@latitude-ui/widgets/icons';\r\nimport { ListBoxComponent, OptionComponent } from '@latitude-ui/widgets/listbox';\r\nimport { TextBoxComponent } from '@latitude-ui/widgets/textbox';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\nimport { SelectOptionDirective } from '../select-option/select-option.directive';\r\n\r\n\r\n@Component({\r\n imports: [IconComponent, ListBoxComponent, OptionComponent, TextBoxComponent, FormsModule],\r\n exportAs: 'latSelectDropDown',\r\n selector: 'lat-select-dropdown',\r\n templateUrl: './select-dropdown.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.data-side]': 'dir._overlayPositionSide()',\r\n },\r\n})\r\nexport class SelectDropDownComponent<T> {\r\n readonly dir = inject(SelectDirective);\r\n\r\n readonly selection = output<SelectOptionDirective<T>>();\r\n\r\n readonly search = signal('');\r\n readonly options = computed(() => {\r\n const options = this.dir.contentChildren();\r\n\r\n const search = this.search()\r\n const searchRegExp = search.length ? new RegExp(`.*${search}*.`, 'i') : null\r\n\r\n return untracked(() => (searchRegExp ? options.filter((option) => option.label().match(searchRegExp)) : options));\r\n });\r\n\r\n}\r\n","@if (dir.searchable()) {\n <lat-textbox [autofocus]=\"true\" [(ngModel)]=\"search\" />\n}\n\n<lat-listbox [style.width.px]=\"dir._overlayWidth()\" [attr.data-side]=\"dir._overlayPositionSide()\">\n @for (option of options(); track option.value()) {\n <lat-option\n [label]=\"option.label()\"\n [value]=\"option.value()\"\n [disabled]=\"option.disabled()\"\n [setsize]=\"$count\"\n [posinset]=\"$index\"\n (click)=\"selection.emit(option)\"\n >\n @if (option.selected()) {\n <lat-icon name=\"check\" />\n }\n <span>{{ option.label() }}</span>\n </lat-option>\n }\n</lat-listbox>\n","import {\r\n afterRenderEffect,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n inject,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { ButtonComponent } from '@latitude-ui/widgets/button';\r\nimport { IconComponent } from '@latitude-ui/widgets/icons';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\n\r\n\r\n@Component({\r\n imports: [ButtonComponent, IconComponent],\r\n exportAs: 'latSelectTrigger',\r\n selector: 'lat-select-trigger',\r\n templateUrl: './select-trigger.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'combobox',\r\n '[attr.size]': 'select.size()',\r\n '(click)': 'select.toggle()',\r\n },\r\n})\r\nexport class SelectTriggerComponent {\r\n readonly el = inject(ElementRef<HTMLElement>).nativeElement;\r\n readonly select = inject(SelectDirective);\r\n\r\n constructor() {\r\n afterRenderEffect((onCleanup) => {\r\n const observer = new ResizeObserver(() => {\r\n this.select._overlayWidth.set(this.el.offsetWidth);\r\n });\r\n\r\n observer.observe(this.el);\r\n\r\n onCleanup(() => observer.disconnect());\r\n });\r\n }\r\n}\r\n","<ng-content select=\"lat-select-values\" />\n\n@if (!select.readonly()) {\n <div class=\"lat-select-control\">\n @if(select.value()) {\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\" (click)=\"select.writeValue(null)\">\n <lat-icon name=\"x\"/>\n </lat-button>\n }\n <lat-button tabindex=\"-1\" variant=\"inherit\" [size]=\"select.size()\" [disabled]=\"select.disabled()\">\n <lat-icon [name]=\"select._overlayState() ? 'chevron-up' : 'chevron-down'\"/>\n </lat-button>\n </div>\n}\n\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSelectValue',\r\n selector: 'lat-select-value',\r\n templateUrl: './select-value.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'listitem'\r\n },\r\n})\r\nexport class SelectValueComponent {\r\n readonly select = inject(SelectDirective);\r\n}\r\n","<span>\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { SelectDirective } from '../select/select.directive';\r\nimport { SelectValueComponent } from '../select-value/select-value.component';\r\n\r\n\r\n@Component({\r\n imports: [SelectValueComponent],\r\n exportAs: 'latSelectValues',\r\n selector: 'lat-select-values',\r\n templateUrl: './select-values.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'list'\r\n },\r\n})\r\nexport class SelectValuesComponent {\r\n readonly select = inject(SelectDirective);\r\n}\r\n","@for (option of select._selected(); track option.value()) {\n <lat-select-value>\n {{ option.label() }}\n </lat-select-value>\n} @empty {\n {{ select.placeholder() }}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n numberAttribute,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\nimport { FormControlComponent } from '@latitude-ui/widgets/core';\r\n\r\nimport { SelectDirective } from './select/select.directive';\r\n\r\nimport { SelectDropDownComponent } from './select-dropdown/select-dropdown.component';\r\nimport { SelectTriggerComponent } from './select-trigger/select-trigger.component';\r\nimport { SelectOptionDirective } from './select-option/select-option.directive';\r\nimport { SelectValuesComponent } from './select-values/select-values.component';\r\n\r\n@Component({\r\n imports: [\r\n CdkOverlayOrigin,\r\n CdkConnectedOverlay,\r\n SelectDropDownComponent,\r\n SelectTriggerComponent,\r\n SelectValuesComponent,\r\n ],\r\n exportAs: 'latSelect',\r\n selector: 'lat-select[type=\"multiple\"]',\r\n templateUrl: './select/select.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: SelectDirective,\r\n useExisting: forwardRef(() => SelectMultipleComponent),\r\n },\r\n {\r\n provide: FormControlComponent,\r\n useExisting: forwardRef(() => SelectMultipleComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectMultipleComponent<T> extends SelectDirective<T, T[]> {\r\n readonly maxlength = input<number, unknown>(Number.MAX_SAFE_INTEGER, { transform: numberAttribute });\r\n\r\n public override selected = computed(() => {\r\n const value = this.value();\r\n\r\n return (value ? (Array.isArray(value) ? value : [value]) : []) as T[];\r\n });\r\n\r\n public override select(option: SelectOptionDirective<T>): void {\r\n const selected = this.selected().slice();\r\n\r\n if (selected.length >= this.maxlength()) {\r\n return void 0;\r\n }\r\n\r\n const index = selected.findIndex((value) => value === option.value());\r\n\r\n if (index === -1) {\r\n selected.push(option.value());\r\n } else {\r\n selected.splice(index, 1);\r\n }\r\n\r\n this.updateValue(selected);\r\n }\r\n}\r\n","@if(mode() === 'popover') {\r\n <lat-select-trigger cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n cdkConnectedOverlayHasBackdrop\r\n cdkConnectedOverlayLockPosition\r\n cdkConnectedOverlayPanelClass=\"lat-select-dropdown\"\r\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"_overlayExpanded()\"\r\n [cdkConnectedOverlayWidth]=\"_overlayWidth() > 0 ? _overlayWidth() : 'auto'\"\r\n [cdkConnectedOverlayPositions]=\"_overlayPositions()\"\r\n (detach)=\"hide()\"\r\n (backdropClick)=\"hide()\"\r\n (positionChange)=\"updateOverlayPositionSide($event)\"\r\n >\r\n <lat-select-dropdown (selection)=\"select($event)\" />\r\n </ng-template>\r\n} @else {\r\n <lat-select-trigger>\r\n <lat-select-values />\r\n </lat-select-trigger>\r\n}\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed, forwardRef,\r\n input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\nimport { FormControlComponent } from '@latitude-ui/widgets/core';\r\n\r\nimport { SelectDirective } from './select/select.directive';\r\n\r\nimport { SelectDropDownComponent } from './select-dropdown/select-dropdown.component';\r\nimport { SelectOptionDirective } from './select-option/select-option.directive';\r\nimport { SelectTriggerComponent } from './select-trigger/select-trigger.component';\r\nimport { SelectValuesComponent } from './select-values/select-values.component';\r\n\r\n\r\n@Component({\r\n imports: [\r\n CdkOverlayOrigin,\r\n CdkConnectedOverlay,\r\n SelectDropDownComponent,\r\n SelectTriggerComponent,\r\n SelectValuesComponent,\r\n ],\r\n exportAs: 'latSelect',\r\n selector: 'lat-select[type=\"single\"]',\r\n templateUrl: './select/select.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: SelectDirective,\r\n useExisting: forwardRef(() => SelectSingleComponent),\r\n },\r\n {\r\n provide: FormControlComponent,\r\n useExisting: forwardRef(() => SelectSingleComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectSingleComponent<T> extends SelectDirective<T, T> {\r\n readonly nullable = input<unknown, boolean>(true, { transform: booleanAttribute });\r\n\r\n public override selected = computed(() => {\r\n const value = this.value();\r\n return (value === undefined ? [] : [value]) as T[];\r\n });\r\n\r\n public override select(option: SelectOptionDirective<T>): void {\r\n const value = this.nullable() ? (option.selected() ? null : option.value()) : option.value();\r\n\r\n this.updateValue(value);\r\n this.hide();\r\n }\r\n}\r\n","import { SelectDirective } from './lib/select/select.directive';\r\nimport { SelectOptionComponent } from './lib/select-option/select-option.component';\r\nimport { SelectOptionDirective } from './lib/select-option/select-option.directive';\r\nimport { SelectMultipleComponent } from './lib/select-multiple.component';\r\nimport { SelectSingleComponent } from './lib/select-single.component';\r\n\r\nexport * from './lib/select/select.directive';\r\nexport * from './lib/select-option/select-option.component';\r\nexport * from './lib/select-option/select-option.directive';\r\nexport * from './lib/select-multiple.component';\r\nexport * from './lib/select-single.component';\r\n\r\nexport const SelectImports = [\r\n SelectDirective,\r\n SelectOptionComponent,\r\n SelectOptionDirective,\r\n SelectMultipleComponent,\r\n SelectSingleComponent\r\n] as const;\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, numberAttribute, booleanAttribute, signal, computed, ChangeDetectionStrategy, Component, inject, ElementRef, DOCUMENT, contentChildren, afterRenderEffect, untracked } from '@angular/core';
3
+
4
+ class SplitPaneComponent {
5
+ /** @publicApi */
6
+ size = input(undefined, { ...(ngDevMode ? { debugName: "size" } : {}), transform: numberAttribute });
7
+ /** @publicApi */
8
+ minsize = input(0, { ...(ngDevMode ? { debugName: "minsize" } : {}), transform: numberAttribute });
9
+ /** @publicApi */
10
+ maxsize = input(100, { ...(ngDevMode ? { debugName: "maxsize" } : {}), transform: numberAttribute });
11
+ /** @publicApi */
12
+ resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : {}), transform: booleanAttribute });
13
+ /** @internalApi */
14
+ grow = signal(0, ...(ngDevMode ? [{ debugName: "grow" }] : []));
15
+ /** @internalApi */
16
+ index = signal(0, ...(ngDevMode ? [{ debugName: "index" }] : []));
17
+ /** @internalApi */
18
+ flexbox = computed(() => `${this.grow()} 1 0`, ...(ngDevMode ? [{ debugName: "flexbox" }] : []));
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SplitPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.3", type: SplitPaneComponent, isStandalone: true, selector: "lat-splitpane", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, minsize: { classPropertyName: "minsize", publicName: "minsize", isSignal: true, isRequired: false, transformFunction: null }, maxsize: { classPropertyName: "maxsize", publicName: "maxsize", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "\"group\"", "style.flex": "flexbox()", "style.order": "index()", "style.overflow": "\"hidden\"" } }, exportAs: ["latSplitPane"], ngImport: i0, template: "<ng-content />\r\n\r\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SplitPaneComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ exportAs: 'latSplitPane', selector: 'lat-splitpane', changeDetection: ChangeDetectionStrategy.OnPush, host: {
25
+ '[attr.role]': '"group"',
26
+ '[style.flex]': 'flexbox()',
27
+ '[style.order]': 'index()',
28
+ '[style.overflow]': '"hidden"'
29
+ }, template: "<ng-content />\r\n\r\n" }]
30
+ }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], minsize: [{ type: i0.Input, args: [{ isSignal: true, alias: "minsize", required: false }] }], maxsize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxsize", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }] } });
31
+
32
+ class SplitViewComponent {
33
+ /** @internalApi */
34
+ el = inject((ElementRef));
35
+ /** @internalApi */
36
+ doc = inject(DOCUMENT);
37
+ /** @publicApi */
38
+ direction = input('horizontal', ...(ngDevMode ? [{ debugName: "direction" }] : []));
39
+ /** @internalApi */
40
+ panes = contentChildren(SplitPaneComponent, ...(ngDevMode ? [{ debugName: "panes" }] : []));
41
+ /** @internalApi */
42
+ sizes = signal([], ...(ngDevMode ? [{ debugName: "sizes" }] : []));
43
+ /** @internalApi */
44
+ _onResizeRaf = null;
45
+ /** @internalApi */
46
+ _onResizeSizes = null;
47
+ constructor() {
48
+ afterRenderEffect(() => this._setUpSize());
49
+ }
50
+ /** @publicApi */
51
+ doLayout() {
52
+ const panes = this.panes();
53
+ const sizes = this.sizes();
54
+ panes.forEach((pane, idx) => {
55
+ const size = sizes[idx];
56
+ if (size !== undefined) {
57
+ pane.grow.set(size);
58
+ }
59
+ });
60
+ }
61
+ /** @internalApi */
62
+ _setUpSize() {
63
+ const panes = this.panes();
64
+ const length = panes.length;
65
+ untracked(() => {
66
+ let idx = 0;
67
+ const sizes = panes.map((pane) => {
68
+ const size = pane.size();
69
+ const grow = size !== undefined ? size : 100 / length;
70
+ pane.grow.set(grow);
71
+ pane.index.set(idx);
72
+ idx += 2;
73
+ return grow;
74
+ });
75
+ if (sizes.length) {
76
+ this.sizes.set(sizes);
77
+ }
78
+ });
79
+ }
80
+ /** @internalApi */
81
+ _onResize(ev, idx) {
82
+ ev.preventDefault();
83
+ const sizes = this.sizes().slice();
84
+ const position = this._getResizePosition(ev);
85
+ const onMouseUp = () => {
86
+ this._onResized();
87
+ this.doc.removeEventListener('mousemove', onMouseMove);
88
+ this.doc.removeEventListener('touchmove', onMouseMove);
89
+ this.doc.removeEventListener('mouseup', onMouseUp);
90
+ this.doc.removeEventListener('touchend', onMouseUp);
91
+ };
92
+ const onMouseMove = (ev) => {
93
+ this._onResizing(ev, idx, position, sizes);
94
+ };
95
+ this.doc.addEventListener('mousemove', onMouseMove);
96
+ this.doc.addEventListener('touchmove', onMouseMove);
97
+ this.doc.addEventListener('mouseup', onMouseUp);
98
+ this.doc.addEventListener('touchend', onMouseUp);
99
+ }
100
+ /** @internalApi */
101
+ _onResized() {
102
+ if (this._onResizeRaf !== null) {
103
+ cancelAnimationFrame(this._onResizeRaf);
104
+ }
105
+ this._onResizeRaf = null;
106
+ this._onResizeSizes = null;
107
+ }
108
+ /** @internalApi */
109
+ _onResizing(ev, idx, position, sizes) {
110
+ const panes = this.panes();
111
+ const delta = ((this._getResizePosition(ev) - position) / this._getBoundingClientRect()) * 100;
112
+ const shallowSizes = [...sizes];
113
+ const lpane = panes[idx];
114
+ const rpane = panes[idx + 1];
115
+ if (!lpane || !rpane) {
116
+ return void 0;
117
+ }
118
+ const lsize = Math.max(lpane.minsize(), Math.min(lpane.maxsize(), sizes[idx] + delta));
119
+ const rsize = Math.max(rpane.minsize(), Math.min(rpane.maxsize(), sizes[idx + 1] - delta));
120
+ const totalSize = lsize + rsize;
121
+ const shallowTotalSize = sizes[idx] + sizes[idx + 1];
122
+ if (Math.abs(totalSize - shallowTotalSize) < 0.01) {
123
+ shallowSizes[idx] = lsize;
124
+ shallowSizes[idx + 1] = rsize;
125
+ // batch update
126
+ this._onResizeQueue(shallowSizes);
127
+ }
128
+ }
129
+ /** @internalApi */
130
+ _onResizeQueue(sizes) {
131
+ this._onResizeSizes = sizes;
132
+ if (this._onResizeRaf !== null) {
133
+ return void 0;
134
+ }
135
+ this._onResizeRaf = requestAnimationFrame(() => {
136
+ this._onResizeRaf = null;
137
+ if (this._onResizeSizes) {
138
+ this.sizes.set(this._onResizeSizes);
139
+ this._onResizeSizes = null;
140
+ this.doLayout();
141
+ }
142
+ });
143
+ }
144
+ /** @internalApi */
145
+ _getResizePosition(ev) {
146
+ const dir = this.direction();
147
+ if (ev instanceof MouseEvent) {
148
+ return dir === 'vertical' ? ev.clientY : ev.clientX;
149
+ }
150
+ else {
151
+ const touch = ev.touches[0];
152
+ return dir === 'vertical' ? touch.clientY : touch.clientX;
153
+ }
154
+ }
155
+ /** @internalApi */
156
+ _getBoundingClientRect() {
157
+ const element = this.el.nativeElement;
158
+ return this.direction() === 'vertical' ? element.offsetHeight : element.offsetWidth;
159
+ }
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SplitViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SplitViewComponent, isStandalone: true, selector: "lat-splitview", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-direction": "direction()" } }, queries: [{ propertyName: "panes", predicate: SplitPaneComponent, isSignal: true }], exportAs: ["latSplitView"], ngImport: i0, template: "<ng-content select=\"lat-splitpane\"/>\r\n\r\n\r\n@for (_ of panes(); track $index) {\r\n @if(!$last) {\r\n <lat-splitbar [index]=\"$index\" />\r\n }\r\n}\r\n", dependencies: [{ kind: "component", type: SplitBarComponent, selector: "lat-splitbar", inputs: ["index"], exportAs: ["latSplitBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SplitViewComponent, decorators: [{
164
+ type: Component,
165
+ args: [{ exportAs: 'latSplitView', selector: 'lat-splitview', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
166
+ SplitBarComponent
167
+ ], host: {
168
+ '[attr.data-direction]': 'direction()'
169
+ }, template: "<ng-content select=\"lat-splitpane\"/>\r\n\r\n\r\n@for (_ of panes(); track $index) {\r\n @if(!$last) {\r\n <lat-splitbar [index]=\"$index\" />\r\n }\r\n}\r\n" }]
170
+ }], ctorParameters: () => [], propDecorators: { direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], panes: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SplitPaneComponent), { isSignal: true }] }] } });
171
+
172
+ class SplitBarComponent {
173
+ /** @internalApi */
174
+ splitview = inject(SplitViewComponent, { host: true });
175
+ /** @publicApi */
176
+ index = input.required({ ...(ngDevMode ? { debugName: "index" } : {}), transform: numberAttribute });
177
+ /** @internalApi */
178
+ disabled = computed(() => {
179
+ const idx = this.index();
180
+ const panes = this.splitview.panes();
181
+ const lpane = panes[idx];
182
+ const rpane = panes[idx + 1];
183
+ return !(lpane.resizable() && rpane.resizable());
184
+ }, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
185
+ /** @internalApi */
186
+ _onKeyDown(ev) {
187
+ // TODO:
188
+ }
189
+ /** @internalApi */
190
+ _onMouseDown(ev) {
191
+ this.splitview._onResize(ev, this.index());
192
+ }
193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SplitBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.3", type: SplitBarComponent, isStandalone: true, selector: "lat-splitbar", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "keydown": "_onKeyDown($event)", "mousedown": "_onMouseDown($event)" }, properties: { "attr.role": "\"separator\"", "attr.aria-disabled": "disabled() || undefined", "style.order": "2 * index() + 1" } }, exportAs: ["latSplitBar"], ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush });
195
+ }
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SplitBarComponent, decorators: [{
197
+ type: Component,
198
+ args: [{ exportAs: 'latSplitBar', selector: 'lat-splitbar', changeDetection: ChangeDetectionStrategy.OnPush, host: {
199
+ '[attr.role]': '"separator"',
200
+ '[attr.aria-disabled]': 'disabled() || undefined',
201
+ '[style.order]': '2 * index() + 1',
202
+ '(keydown)': '_onKeyDown($event)',
203
+ '(mousedown)': '_onMouseDown($event)'
204
+ }, template: "" }]
205
+ }], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }] } });
206
+
207
+ const SplitViewImports = [
208
+ SplitBarComponent,
209
+ SplitPaneComponent,
210
+ SplitViewComponent
211
+ ];
212
+
213
+ /**
214
+ * Generated bundle index. Do not edit.
215
+ */
216
+
217
+ export { SplitBarComponent, SplitPaneComponent, SplitViewComponent, SplitViewImports };
218
+ //# sourceMappingURL=latitude-ui-widgets-splitview.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latitude-ui-widgets-splitview.mjs","sources":["../../../../packages/widgets/splitview/lib/split-pane.ts","../../../../packages/widgets/splitview/lib/split-pane.html","../../../../packages/widgets/splitview/lib/split-view.ts","../../../../packages/widgets/splitview/lib/split-view.html","../../../../packages/widgets/splitview/lib/split-bar.ts","../../../../packages/widgets/splitview/lib/split-bar.html","../../../../packages/widgets/splitview/public-api.ts","../../../../packages/widgets/splitview/latitude-ui-widgets-splitview.ts"],"sourcesContent":["import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n numberAttribute,\r\n signal\r\n} from '@angular/core';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSplitPane',\r\n selector: 'lat-splitpane',\r\n templateUrl: './split-pane.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.role]': '\"group\"',\r\n '[style.flex]': 'flexbox()',\r\n '[style.order]': 'index()',\r\n '[style.overflow]': '\"hidden\"'\r\n }\r\n})\r\nexport class SplitPaneComponent {\r\n\r\n /** @publicApi */\r\n readonly size = input<number, unknown>(undefined, { transform: numberAttribute });\r\n\r\n /** @publicApi */\r\n readonly minsize = input<number, unknown>(0, { transform: numberAttribute });\r\n\r\n /** @publicApi */\r\n readonly maxsize = input<number, unknown>(100, { transform: numberAttribute });\r\n\r\n /** @publicApi */\r\n readonly resizable = input<boolean, unknown>(true, { transform: booleanAttribute });\r\n\r\n /** @internalApi */\r\n readonly grow = signal(0);\r\n\r\n /** @internalApi */\r\n readonly index = signal(0);\r\n\r\n /** @internalApi */\r\n readonly flexbox = computed(() => `${this.grow()} 1 0`);\r\n}\r\n","<ng-content />\r\n\r\n","import {\r\n afterRenderEffect,\r\n ChangeDetectionStrategy,\r\n Component,\r\n contentChildren,\r\n DOCUMENT,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n untracked\r\n} from '@angular/core';\r\n\r\nimport { SplitPaneComponent } from './split-pane';\r\nimport { SplitBarComponent } from './split-bar';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSplitView',\r\n selector: 'lat-splitview',\r\n templateUrl: './split-view.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n SplitBarComponent\r\n ],\r\n host: {\r\n '[attr.data-direction]': 'direction()'\r\n }\r\n})\r\nexport class SplitViewComponent {\r\n\r\n /** @internalApi */\r\n readonly el = inject(ElementRef<HTMLElement>);\r\n\r\n /** @internalApi */\r\n readonly doc = inject(DOCUMENT);\r\n\r\n /** @publicApi */\r\n readonly direction = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n /** @internalApi */\r\n readonly panes = contentChildren(SplitPaneComponent);\r\n\r\n /** @internalApi */\r\n readonly sizes = signal<number[]>([]);\r\n\r\n /** @internalApi */\r\n _onResizeRaf: number | null = null;\r\n\r\n /** @internalApi */\r\n _onResizeSizes: number[] | null = null;\r\n\r\n constructor() {\r\n afterRenderEffect(() => this._setUpSize());\r\n }\r\n\r\n /** @publicApi */\r\n doLayout(): void {\r\n const panes = this.panes();\r\n const sizes = this.sizes();\r\n\r\n panes.forEach((pane, idx) => {\r\n const size = sizes[idx];\r\n if (size !== undefined) {\r\n pane.grow.set(size);\r\n }\r\n });\r\n }\r\n\r\n /** @internalApi */\r\n _setUpSize(): void {\r\n const panes = this.panes();\r\n const length = panes.length;\r\n\r\n untracked(() => {\r\n let idx = 0;\r\n\r\n const sizes = panes.map((pane) => {\r\n const size = pane.size();\r\n\r\n const grow = size !== undefined ? size : 100 / length;\r\n\r\n pane.grow.set(grow);\r\n pane.index.set(idx);\r\n\r\n idx += 2;\r\n\r\n return grow;\r\n });\r\n\r\n if (sizes.length) {\r\n this.sizes.set(sizes);\r\n }\r\n });\r\n }\r\n\r\n /** @internalApi */\r\n _onResize(ev: MouseEvent | TouchEvent, idx: number): void {\r\n ev.preventDefault();\r\n\r\n const sizes = this.sizes().slice();\r\n const position = this._getResizePosition(ev);\r\n\r\n const onMouseUp = () => {\r\n this._onResized();\r\n\r\n this.doc.removeEventListener('mousemove', onMouseMove);\r\n this.doc.removeEventListener('touchmove', onMouseMove);\r\n this.doc.removeEventListener('mouseup', onMouseUp);\r\n this.doc.removeEventListener('touchend', onMouseUp);\r\n };\r\n\r\n const onMouseMove = (ev: MouseEvent | TouchEvent) => {\r\n this._onResizing(ev, idx, position, sizes);\r\n };\r\n\r\n this.doc.addEventListener('mousemove', onMouseMove);\r\n this.doc.addEventListener('touchmove', onMouseMove);\r\n\r\n this.doc.addEventListener('mouseup', onMouseUp);\r\n this.doc.addEventListener('touchend', onMouseUp);\r\n }\r\n\r\n /** @internalApi */\r\n _onResized(): void {\r\n if (this._onResizeRaf !== null) {\r\n cancelAnimationFrame(this._onResizeRaf);\r\n }\r\n\r\n this._onResizeRaf = null;\r\n this._onResizeSizes = null;\r\n }\r\n\r\n /** @internalApi */\r\n _onResizing(ev: MouseEvent | TouchEvent, idx: number, position: number, sizes: number[]): void {\r\n const panes = this.panes();\r\n\r\n const delta = (\r\n (this._getResizePosition(ev) - position) / this._getBoundingClientRect()\r\n ) * 100;\r\n\r\n const shallowSizes = [...sizes];\r\n\r\n const lpane = panes[idx];\r\n const rpane = panes[idx + 1];\r\n\r\n if (!lpane || !rpane) {\r\n return void 0;\r\n }\r\n\r\n const lsize = Math.max(lpane.minsize(), Math.min(lpane.maxsize(), sizes[idx] + delta));\r\n const rsize = Math.max(rpane.minsize(), Math.min(rpane.maxsize(), sizes[idx + 1] - delta));\r\n\r\n const totalSize = lsize + rsize;\r\n const shallowTotalSize = sizes[idx] + sizes[idx + 1];\r\n\r\n if (Math.abs(totalSize - shallowTotalSize) < 0.01) {\r\n shallowSizes[idx] = lsize;\r\n shallowSizes[idx + 1] = rsize;\r\n\r\n // batch update\r\n this._onResizeQueue(shallowSizes);\r\n }\r\n }\r\n\r\n /** @internalApi */\r\n _onResizeQueue(sizes: number[]): void {\r\n this._onResizeSizes = sizes;\r\n\r\n if (this._onResizeRaf !== null) {\r\n return void 0;\r\n }\r\n\r\n this._onResizeRaf = requestAnimationFrame(() => {\r\n this._onResizeRaf = null;\r\n if (this._onResizeSizes) {\r\n this.sizes.set(this._onResizeSizes);\r\n\r\n this._onResizeSizes = null;\r\n\r\n this.doLayout();\r\n }\r\n });\r\n }\r\n\r\n /** @internalApi */\r\n _getResizePosition(ev: MouseEvent | TouchEvent): number {\r\n const dir = this.direction();\r\n\r\n if (ev instanceof MouseEvent) {\r\n return dir === 'vertical' ? ev.clientY : ev.clientX;\r\n } else {\r\n const touch = ev.touches[0];\r\n return dir === 'vertical' ? touch.clientY : touch.clientX;\r\n }\r\n }\r\n\r\n /** @internalApi */\r\n _getBoundingClientRect(): number {\r\n const element = this.el.nativeElement;\r\n\r\n return this.direction() === 'vertical' ? element.offsetHeight : element.offsetWidth;\r\n }\r\n}\r\n","<ng-content select=\"lat-splitpane\"/>\r\n\r\n\r\n@for (_ of panes(); track $index) {\r\n @if(!$last) {\r\n <lat-splitbar [index]=\"$index\" />\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, numberAttribute } from '@angular/core';\r\nimport { SplitViewComponent } from './split-view';\r\n\r\n\r\n@Component({\r\n exportAs: 'latSplitBar',\r\n selector: 'lat-splitbar',\r\n templateUrl: './split-bar.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.role]': '\"separator\"',\r\n '[attr.aria-disabled]': 'disabled() || undefined',\r\n '[style.order]': '2 * index() + 1',\r\n '(keydown)': '_onKeyDown($event)',\r\n '(mousedown)': '_onMouseDown($event)'\r\n }\r\n})\r\nexport class SplitBarComponent {\r\n\r\n /** @internalApi */\r\n readonly splitview = inject(SplitViewComponent, { host: true });\r\n\r\n /** @publicApi */\r\n readonly index = input.required<number, unknown>({ transform: numberAttribute });\r\n\r\n /** @internalApi */\r\n readonly disabled = computed(() => {\r\n const idx = this.index();\r\n const panes = this.splitview.panes();\r\n\r\n const lpane = panes[idx];\r\n const rpane = panes[idx + 1];\r\n\r\n return !(lpane.resizable() && rpane.resizable());\r\n });\r\n\r\n /** @internalApi */\r\n _onKeyDown(ev: KeyboardEvent): void {\r\n // TODO:\r\n }\r\n\r\n /** @internalApi */\r\n _onMouseDown(ev: MouseEvent | TouchEvent): void {\r\n this.splitview._onResize(ev, this.index());\r\n }\r\n}\r\n","","import { SplitBarComponent } from './lib/split-bar';\r\nimport { SplitPaneComponent } from './lib/split-pane';\r\nimport { SplitViewComponent } from './lib/split-view';\r\n\r\nexport * from './lib/split-bar';\r\nexport * from './lib/split-pane';\r\nexport * from './lib/split-view';\r\n\r\nexport const SplitViewImports = [\r\n SplitBarComponent,\r\n SplitPaneComponent,\r\n SplitViewComponent\r\n] as const;\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}