@dereekb/dbx-web 9.20.19 → 9.21.0

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 (98) hide show
  1. package/calendar/package.json +2 -2
  2. package/esm2020/lib/layout/content/content.layout.module.mjs +31 -4
  3. package/esm2020/lib/layout/content/content.pit.directive.mjs +19 -0
  4. package/esm2020/lib/layout/content/index.mjs +2 -1
  5. package/esm2020/lib/layout/list/list.wrapper.mjs +1 -1
  6. package/esm2020/table/dereekb-dbx-web-table.mjs +5 -0
  7. package/esm2020/table/index.mjs +2 -0
  8. package/esm2020/table/lib/date/date.table.column.header.component.mjs +49 -0
  9. package/esm2020/table/lib/date/daterange.table.cell.input.component.mjs +166 -0
  10. package/esm2020/table/lib/date/index.mjs +4 -0
  11. package/esm2020/table/lib/date/table.date.module.mjs +68 -0
  12. package/esm2020/table/lib/index.mjs +18 -0
  13. package/esm2020/table/lib/table.cell.action.component.mjs +28 -0
  14. package/esm2020/table/lib/table.cell.input.component.mjs +31 -0
  15. package/esm2020/table/lib/table.cell.summaryend.component.mjs +28 -0
  16. package/esm2020/table/lib/table.cell.summarystart.component.mjs +31 -0
  17. package/esm2020/table/lib/table.column.directive.mjs +30 -0
  18. package/esm2020/table/lib/table.column.footer.component.mjs +35 -0
  19. package/esm2020/table/lib/table.column.header.component.mjs +35 -0
  20. package/esm2020/table/lib/table.component.mjs +59 -0
  21. package/esm2020/table/lib/table.directive.mjs +37 -0
  22. package/esm2020/table/lib/table.item.action.component.mjs +35 -0
  23. package/esm2020/table/lib/table.item.cell.component.mjs +39 -0
  24. package/esm2020/table/lib/table.item.directive.mjs +30 -0
  25. package/esm2020/table/lib/table.item.header.component.mjs +27 -0
  26. package/esm2020/table/lib/table.mjs +2 -0
  27. package/esm2020/table/lib/table.module.mjs +74 -0
  28. package/esm2020/table/lib/table.store.mjs +53 -0
  29. package/fesm2015/dereekb-dbx-web-table.mjs +746 -0
  30. package/fesm2015/dereekb-dbx-web-table.mjs.map +1 -0
  31. package/fesm2015/dereekb-dbx-web.mjs +58 -13
  32. package/fesm2015/dereekb-dbx-web.mjs.map +1 -1
  33. package/fesm2020/dereekb-dbx-web-table.mjs +739 -0
  34. package/fesm2020/dereekb-dbx-web-table.mjs.map +1 -0
  35. package/fesm2020/dereekb-dbx-web.mjs +56 -13
  36. package/fesm2020/dereekb-dbx-web.mjs.map +1 -1
  37. package/lib/extension/_extension.scss +19 -0
  38. package/lib/extension/table/_table.scss +60 -0
  39. package/lib/layout/content/_content.scss +14 -0
  40. package/lib/layout/content/content.layout.module.d.ts +3 -2
  41. package/lib/layout/content/content.pit.directive.d.ts +8 -0
  42. package/lib/layout/content/index.d.ts +1 -0
  43. package/lib/layout/list/list.wrapper.d.ts +2 -1
  44. package/lib/layout/style/_style.scss +4 -0
  45. package/lib/style/_config.scss +8 -2
  46. package/mapbox/package.json +3 -3
  47. package/package.json +14 -6
  48. package/table/README.md +6 -0
  49. package/table/esm2020/dereekb-dbx-web-table.mjs +5 -0
  50. package/table/esm2020/index.mjs +2 -0
  51. package/table/esm2020/lib/date/date.table.column.header.component.mjs +49 -0
  52. package/table/esm2020/lib/date/daterange.table.cell.input.component.mjs +166 -0
  53. package/table/esm2020/lib/date/index.mjs +4 -0
  54. package/table/esm2020/lib/date/table.date.module.mjs +68 -0
  55. package/table/esm2020/lib/index.mjs +18 -0
  56. package/table/esm2020/lib/table.cell.action.component.mjs +28 -0
  57. package/table/esm2020/lib/table.cell.input.component.mjs +31 -0
  58. package/table/esm2020/lib/table.cell.summaryend.component.mjs +28 -0
  59. package/table/esm2020/lib/table.cell.summarystart.component.mjs +31 -0
  60. package/table/esm2020/lib/table.column.directive.mjs +30 -0
  61. package/table/esm2020/lib/table.column.footer.component.mjs +35 -0
  62. package/table/esm2020/lib/table.column.header.component.mjs +35 -0
  63. package/table/esm2020/lib/table.component.mjs +59 -0
  64. package/table/esm2020/lib/table.directive.mjs +37 -0
  65. package/table/esm2020/lib/table.item.action.component.mjs +35 -0
  66. package/table/esm2020/lib/table.item.cell.component.mjs +39 -0
  67. package/table/esm2020/lib/table.item.directive.mjs +30 -0
  68. package/table/esm2020/lib/table.item.header.component.mjs +27 -0
  69. package/table/esm2020/lib/table.mjs +2 -0
  70. package/table/esm2020/lib/table.module.mjs +74 -0
  71. package/table/esm2020/lib/table.store.mjs +53 -0
  72. package/table/fesm2015/dereekb-dbx-web-table.mjs +746 -0
  73. package/table/fesm2015/dereekb-dbx-web-table.mjs.map +1 -0
  74. package/table/fesm2020/dereekb-dbx-web-table.mjs +739 -0
  75. package/table/fesm2020/dereekb-dbx-web-table.mjs.map +1 -0
  76. package/table/index.d.ts +1 -0
  77. package/table/lib/date/date.table.column.header.component.d.ts +18 -0
  78. package/table/lib/date/daterange.table.cell.input.component.d.ts +66 -0
  79. package/table/lib/date/index.d.ts +3 -0
  80. package/table/lib/date/table.date.module.d.ts +16 -0
  81. package/table/lib/index.d.ts +17 -0
  82. package/table/lib/table.cell.action.component.d.ts +9 -0
  83. package/table/lib/table.cell.input.component.d.ts +12 -0
  84. package/table/lib/table.cell.summaryend.component.d.ts +9 -0
  85. package/table/lib/table.cell.summarystart.component.d.ts +12 -0
  86. package/table/lib/table.column.directive.d.ts +18 -0
  87. package/table/lib/table.column.footer.component.d.ts +8 -0
  88. package/table/lib/table.column.header.component.d.ts +8 -0
  89. package/table/lib/table.component.d.ts +29 -0
  90. package/table/lib/table.d.ts +99 -0
  91. package/table/lib/table.directive.d.ts +16 -0
  92. package/table/lib/table.item.action.component.d.ts +8 -0
  93. package/table/lib/table.item.cell.component.d.ts +13 -0
  94. package/table/lib/table.item.directive.d.ts +17 -0
  95. package/table/lib/table.item.header.component.d.ts +8 -0
  96. package/table/lib/table.module.d.ts +22 -0
  97. package/table/lib/table.store.d.ts +38 -0
  98. package/table/package.json +35 -0
@@ -1,38 +1,57 @@
1
1
  @use '../style/config';
2
2
  @use './calendar/calendar';
3
+ @use './table/table';
3
4
 
4
5
  @mixin all-extension-core($theme-config) {
5
6
  $calendar-enabled: 1;
7
+ $table-enabled: 1;
6
8
 
7
9
  @if ($theme-config != null) {
8
10
  $calendar-enabled: config.get-dbx-extension-calendar-enabled($theme-config);
11
+ $table-enabled: config.get-dbx-extension-table-enabled($theme-config);
9
12
  }
10
13
 
11
14
  @if ($calendar-enabled == 1) {
12
15
  @include calendar.core();
13
16
  }
17
+
18
+ @if ($table-enabled == 1) {
19
+ @include table.core();
20
+ }
14
21
  }
15
22
 
16
23
  @mixin all-extension-typography($typography-config, $theme-config) {
17
24
  $calendar-enabled: 1;
25
+ $table-enabled: 1;
18
26
 
19
27
  @if ($theme-config != null) {
20
28
  $calendar-enabled: config.get-dbx-extension-calendar-enabled($theme-config);
29
+ $table-enabled: config.get-dbx-extension-table-enabled($theme-config);
21
30
  }
22
31
 
23
32
  @if ($calendar-enabled == 1) {
24
33
  @include calendar.typography($typography-config);
25
34
  }
35
+
36
+ @if ($table-enabled == 1) {
37
+ @include table.typography($typography-config);
38
+ }
26
39
  }
27
40
 
28
41
  @mixin all-extension-theme($theme-config) {
29
42
  $calendar-enabled: 1;
43
+ $table-enabled: 1;
30
44
 
31
45
  @if ($theme-config != null) {
32
46
  $calendar-enabled: config.get-dbx-extension-calendar-enabled($theme-config);
47
+ $table-enabled: config.get-dbx-extension-table-enabled($theme-config);
33
48
  }
34
49
 
35
50
  @if ($calendar-enabled == 1) {
36
51
  @include calendar.theme($theme-config);
37
52
  }
53
+
54
+ @if ($table-enabled == 1) {
55
+ @include table.theme($theme-config);
56
+ }
38
57
  }
@@ -0,0 +1,60 @@
1
+ @use 'sass:map';
2
+ @use '../../style/theming';
3
+
4
+ // MARK: Variables
5
+
6
+ // MARK: Mixin
7
+ @mixin core() {
8
+ .dbx-table-view {
9
+ height: 600px;
10
+ overflow: auto;
11
+
12
+ .dbx-table-view-table {
13
+ width: 100%;
14
+ }
15
+ }
16
+
17
+ .dbx-table-view-loading {
18
+ }
19
+
20
+ // MARK: Date
21
+ .dbx-table-date-range-distance-input-cell {
22
+ min-width: 140px;
23
+
24
+ .dbx-table-date-range-distance-input {
25
+ height: 0px;
26
+ overflow: hidden;
27
+ }
28
+ }
29
+
30
+ .dbx-table-date-column-header {
31
+ min-width: 80px;
32
+ text-align: center;
33
+
34
+ .dbx-table-date-column-header-left {
35
+ margin-right: 4px;
36
+ font-weight: 800;
37
+ }
38
+ }
39
+ }
40
+
41
+ @mixin color($theme-config) {
42
+ }
43
+
44
+ @mixin typography($typography-config) {
45
+ }
46
+
47
+ @mixin theme($theme-config) {
48
+ @include theming.private-check-duplicate-theme-styles($theme-config, 'dbx-table') {
49
+ $color: theming.get-color-config($theme-config);
50
+ $typography: theming.get-typography-config($theme-config);
51
+
52
+ @if $color !=null {
53
+ @include color($theme-config);
54
+ }
55
+
56
+ @if $typography !=null {
57
+ @include typography($typography);
58
+ }
59
+ }
60
+ }
@@ -13,6 +13,8 @@ $max-small-content-container-width: calc($content-max-width / 3);
13
13
  $max-medium-content-container-width: calc($content-max-width / 2);
14
14
  $max-content-container-width: $content-max-width;
15
15
 
16
+ $pit-padding: theming.$padding-4;
17
+
16
18
  $content-container-padding: theming.$padding-4;
17
19
  $content-container-padding-small-screen: theming.$padding-2;
18
20
 
@@ -41,6 +43,14 @@ $scroll-content-bottom-padding: 42px;
41
43
  }
42
44
  }
43
45
 
46
+ .dbx-content-pit {
47
+ padding: $pit-padding;
48
+ }
49
+
50
+ .dbx-content-pit > .dbx-label-block > .dbx-label {
51
+ opacity: 0.66; // increase opacity slightly to make it easier to read against background
52
+ }
53
+
44
54
  .dbx-content-end {
45
55
  margin-bottom: $content-end-margin;
46
56
  }
@@ -142,6 +152,10 @@ $scroll-content-bottom-padding: 42px;
142
152
  background: $content-background;
143
153
  }
144
154
 
155
+ .dbx-content-pit {
156
+ background: $content-border-background;
157
+ }
158
+
145
159
  .dbx-content-border {
146
160
  // border-radius: 6px;
147
161
  border: 3px dashed $content-border-background;
@@ -5,12 +5,13 @@ import * as i3 from "./content.border.directive";
5
5
  import * as i4 from "./content.elevate.directive";
6
6
  import * as i5 from "./content.box.directive";
7
7
  import * as i6 from "./content.page.directive";
8
- import * as i7 from "@angular/common";
8
+ import * as i7 from "./content.pit.directive";
9
+ import * as i8 from "@angular/common";
9
10
  /**
10
11
  * Module for container-type components.
11
12
  */
12
13
  export declare class DbxContentLayoutModule {
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxContentLayoutModule, never>;
14
- static ɵmod: i0.ɵɵNgModuleDeclaration<DbxContentLayoutModule, [typeof i1.DbxContentDirective, typeof i2.DbxContentContainerDirective, typeof i3.DbxContentBorderDirective, typeof i4.DbxContentElevateDirective, typeof i5.DbxContentBoxDirective, typeof i6.DbxContentPageDirective], [typeof i7.CommonModule], [typeof i1.DbxContentDirective, typeof i2.DbxContentContainerDirective, typeof i3.DbxContentBorderDirective, typeof i4.DbxContentElevateDirective, typeof i5.DbxContentBoxDirective, typeof i6.DbxContentPageDirective]>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DbxContentLayoutModule, [typeof i1.DbxContentDirective, typeof i2.DbxContentContainerDirective, typeof i3.DbxContentBorderDirective, typeof i4.DbxContentElevateDirective, typeof i5.DbxContentBoxDirective, typeof i6.DbxContentPageDirective, typeof i7.DbxContentPitDirective], [typeof i8.CommonModule], [typeof i1.DbxContentDirective, typeof i2.DbxContentContainerDirective, typeof i3.DbxContentBorderDirective, typeof i4.DbxContentElevateDirective, typeof i5.DbxContentBoxDirective, typeof i6.DbxContentPageDirective, typeof i7.DbxContentPitDirective]>;
15
16
  static ɵinj: i0.ɵɵInjectorDeclaration<DbxContentLayoutModule>;
16
17
  }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Component used to wrap content in a pit with a label.
4
+ */
5
+ export declare class DbxContentPitDirective {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<DbxContentPitDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DbxContentPitDirective, "dbx-content-pit, [dbxContentPit]", never, {}, {}, never, never, false>;
8
+ }
@@ -5,3 +5,4 @@ export * from './content.container.directive';
5
5
  export * from './content.elevate.directive';
6
6
  export * from './content.layout.module';
7
7
  export * from './content.page.directive';
8
+ export * from './content.pit.directive';
@@ -1,11 +1,12 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ListLoadingState } from '@dereekb/rxjs';
3
- import { Provider, Type } from '@angular/core';
3
+ import { EventEmitter, Provider, Type } from '@angular/core';
4
4
  import { Maybe } from '@dereekb/util';
5
5
  /**
6
6
  * Common interface for views that may wrap a DbxListView, and pass values through to it.
7
7
  */
8
8
  export declare abstract class DbxListViewWrapper<T = unknown, S extends ListLoadingState<T> = ListLoadingState<T>> {
9
9
  state$?: Maybe<Observable<S>>;
10
+ readonly loadMore?: EventEmitter<void>;
10
11
  }
11
12
  export declare function provideDbxListViewWrapper<V extends DbxListViewWrapper>(sourceType: Type<V>): Provider[];
@@ -21,6 +21,10 @@
21
21
  padding: 0 !important;
22
22
  }
23
23
 
24
+ .dbx-hide {
25
+ display: none !important;
26
+ }
27
+
24
28
  @each $i, $padding in theming.$padding-map {
25
29
  .pad-#{$i},
26
30
  .padding-#{$i} {
@@ -151,8 +151,10 @@
151
151
  // extension
152
152
  @function define-dbx-extension-config($input-dbx-theme-extension-config: null) {
153
153
  $dbx-extension-config: (
154
- // calendar
155
- 'calendar': 1 // enabled by default
154
+ // calendar enabled by default
155
+ 'calendar': 1,
156
+ // table enabled by default
157
+ 'table': 1
156
158
  );
157
159
 
158
160
  @if ($input-dbx-theme-extension-config != null) {
@@ -173,3 +175,7 @@
173
175
  @function get-dbx-extension-calendar-enabled($theme-config) {
174
176
  @return get-dbx-extension-config-var($theme-config, 'calendar');
175
177
  }
178
+
179
+ @function get-dbx-extension-table-enabled($theme-config) {
180
+ @return get-dbx-extension-config-var($theme-config, 'table');
181
+ }
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-web/mapbox",
3
- "version": "9.20.19",
3
+ "version": "9.21.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.1.0",
6
6
  "@angular/core": "^14.1.0",
7
- "@dereekb/dbx-core": "9.20.19",
8
- "@dereekb/dbx-web": "9.20.19",
7
+ "@dereekb/dbx-core": "9.21.0",
8
+ "@dereekb/dbx-web": "9.21.0",
9
9
  "ngx-mapbox-gl": "^9.1.0",
10
10
  "mapbox-gl": "^2.9.2",
11
11
  "@mapbox/geo-viewport": "git+https://git@github.com/dereekb/geo-viewport#165513972f87dca23a20c177f4d173edc51b5e2f"
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-web",
3
- "version": "9.20.19",
3
+ "version": "9.21.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0",
7
7
  "linkify-string": "4.0.0-beta.5",
8
8
  "linkifyjs": "^4.0.0-beta.5",
9
9
  "@angular/material": "^14.2.0",
10
- "@dereekb/rxjs": "9.20.19",
11
- "@dereekb/dbx-core": "9.20.19",
10
+ "@dereekb/rxjs": "9.21.0",
11
+ "@dereekb/dbx-core": "9.21.0",
12
12
  "change-case": "^4.1.2",
13
13
  "@angular/flex-layout": "^14.0.0-beta.41",
14
14
  "ng-overlay-container": "^14.0.0",
@@ -38,9 +38,6 @@
38
38
  "node": "./fesm2015/dereekb-dbx-web-mapbox.mjs",
39
39
  "default": "./fesm2020/dereekb-dbx-web-mapbox.mjs"
40
40
  },
41
- "./package.json": {
42
- "default": "./package.json"
43
- },
44
41
  "./calendar": {
45
42
  "types": "./calendar/index.d.ts",
46
43
  "esm2020": "./esm2020/calendar/dereekb-dbx-web-calendar.mjs",
@@ -48,6 +45,17 @@
48
45
  "es2015": "./fesm2015/dereekb-dbx-web-calendar.mjs",
49
46
  "node": "./fesm2015/dereekb-dbx-web-calendar.mjs",
50
47
  "default": "./fesm2020/dereekb-dbx-web-calendar.mjs"
48
+ },
49
+ "./table": {
50
+ "types": "./table/index.d.ts",
51
+ "esm2020": "./esm2020/table/dereekb-dbx-web-table.mjs",
52
+ "es2020": "./fesm2020/dereekb-dbx-web-table.mjs",
53
+ "es2015": "./fesm2015/dereekb-dbx-web-table.mjs",
54
+ "node": "./fesm2015/dereekb-dbx-web-table.mjs",
55
+ "default": "./fesm2020/dereekb-dbx-web-table.mjs"
56
+ },
57
+ "./package.json": {
58
+ "default": "./package.json"
51
59
  }
52
60
  },
53
61
  "module": "fesm2015/dereekb-dbx-web.mjs",
@@ -0,0 +1,6 @@
1
+ @dereekb/dbx-web/table
2
+ =======
3
+
4
+ The sources for this package are in the main [@dereekb/dbx-components](https://github.com/dereekb/dbx-components) repo. Please file issues and pull requests against that repo.
5
+
6
+ License: MIT
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyZWVrYi1kYngtd2ViLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvZGVyZWVrYi1kYngtd2ViLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3RhYmxlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ /**
5
+ * A table header component used for rendering date values on the header.
6
+ */
7
+ export class DbxTableDateHeaderComponent {
8
+ constructor() {
9
+ this.left = 'E';
10
+ this.right = 'MMM d';
11
+ }
12
+ get date() {
13
+ return this._date;
14
+ }
15
+ set date(date) {
16
+ this._date = date;
17
+ }
18
+ }
19
+ DbxTableDateHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ DbxTableDateHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxTableDateHeaderComponent, selector: "ng-component", ngImport: i0, template: `
21
+ <div *ngIf="date" class="dbx-table-date-column-header">
22
+ <span class="dbx-table-date-column-header-left">{{ date | date: left }}</span>
23
+ <span>{{ date | date: right }}</span>
24
+ </div>
25
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateHeaderComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ template: `
30
+ <div *ngIf="date" class="dbx-table-date-column-header">
31
+ <span class="dbx-table-date-column-header-left">{{ date | date: left }}</span>
32
+ <span>{{ date | date: right }}</span>
33
+ </div>
34
+ `,
35
+ changeDetection: ChangeDetectionStrategy.OnPush
36
+ }]
37
+ }], ctorParameters: function () { return []; } });
38
+ export function dbxTableDateHeaderInjectionFactory() {
39
+ return (column) => {
40
+ const config = {
41
+ componentClass: DbxTableDateHeaderComponent,
42
+ init: (x) => {
43
+ x.date = column.meta;
44
+ }
45
+ };
46
+ return config;
47
+ };
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS50YWJsZS5jb2x1bW4uaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi9kYXRlL2RhdGUudGFibGUuY29sdW1uLmhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBS25FOztHQUVHO0FBVUgsTUFBTSxPQUFPLDJCQUEyQjtJQU10QztRQUxBLFNBQUksR0FBVyxHQUFHLENBQUM7UUFDbkIsVUFBSyxHQUFXLE9BQU8sQ0FBQztJQUlULENBQUM7SUFFaEIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFpQjtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDOzt5SEFkVSwyQkFBMkI7NkdBQTNCLDJCQUEyQixvREFSNUI7Ozs7O0dBS1Q7NEZBR1UsMkJBQTJCO2tCQVR2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7R0FLVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7O0FBa0JELE1BQU0sVUFBVSxrQ0FBa0M7SUFDaEQsT0FBTyxDQUFDLE1BQTRCLEVBQUUsRUFBRTtRQUN0QyxNQUFNLE1BQU0sR0FBNkQ7WUFDdkUsY0FBYyxFQUFFLDJCQUEyQjtZQUMzQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVixDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnLCBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdGYWN0b3J5IH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUnO1xuXG4vKipcbiAqIEEgdGFibGUgaGVhZGVyIGNvbXBvbmVudCB1c2VkIGZvciByZW5kZXJpbmcgZGF0ZSB2YWx1ZXMgb24gdGhlIGhlYWRlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAqbmdJZj1cImRhdGVcIiBjbGFzcz1cImRieC10YWJsZS1kYXRlLWNvbHVtbi1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGJ4LXRhYmxlLWRhdGUtY29sdW1uLWhlYWRlci1sZWZ0XCI+e3sgZGF0ZSB8IGRhdGU6IGxlZnQgfX08L3NwYW4+XG4gICAgICA8c3Bhbj57eyBkYXRlIHwgZGF0ZTogcmlnaHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERieFRhYmxlRGF0ZUhlYWRlckNvbXBvbmVudCB7XG4gIGxlZnQ6IHN0cmluZyA9ICdFJztcbiAgcmlnaHQ6IHN0cmluZyA9ICdNTU0gZCc7XG5cbiAgcHJpdmF0ZSBfZGF0ZTogTWF5YmU8RGF0ZT47XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICB9XG5cbiAgc2V0IGRhdGUoZGF0ZTogTWF5YmU8RGF0ZT4pIHtcbiAgICB0aGlzLl9kYXRlID0gZGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4VGFibGVEYXRlSGVhZGVySW5qZWN0aW9uRmFjdG9yeSgpOiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdGYWN0b3J5PERieFRhYmxlQ29sdW1uPERhdGU+LCBEYnhUYWJsZURhdGVIZWFkZXJDb21wb25lbnQ+IHtcbiAgcmV0dXJuIChjb2x1bW46IERieFRhYmxlQ29sdW1uPERhdGU+KSA9PiB7XG4gICAgY29uc3QgY29uZmlnOiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc8RGJ4VGFibGVEYXRlSGVhZGVyQ29tcG9uZW50PiA9IHtcbiAgICAgIGNvbXBvbmVudENsYXNzOiBEYnhUYWJsZURhdGVIZWFkZXJDb21wb25lbnQsXG4gICAgICBpbml0OiAoeCkgPT4ge1xuICAgICAgICB4LmRhdGUgPSBjb2x1bW4ubWV0YTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,166 @@
1
+ import { ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
2
+ import { isSameDateDay } from '@dereekb/date';
3
+ import { DbxTableStore } from '../table.store';
4
+ import { DateRange, MAT_DATE_RANGE_SELECTION_STRATEGY } from '@angular/material/datepicker';
5
+ import { DateAdapter } from '@angular/material/core';
6
+ import { FormGroup, FormControl } from '@angular/forms';
7
+ import { SubscriptionObject } from '@dereekb/rxjs';
8
+ import { addDays, format as formatDate } from 'date-fns';
9
+ import { BehaviorSubject, distinctUntilChanged, filter, map, of, startWith, switchMap, throttleTime, combineLatest } from 'rxjs';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/material/core";
12
+ import * as i2 from "../table.store";
13
+ import * as i3 from "@angular/forms";
14
+ import * as i4 from "@angular/material/datepicker";
15
+ import * as i5 from "@angular/material/button";
16
+ import * as i6 from "@angular/common";
17
+ export class DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy {
18
+ constructor(_dateAdapter, dbxTableDateRangeDayDistanceInputCellInputComponent) {
19
+ this._dateAdapter = _dateAdapter;
20
+ this.dbxTableDateRangeDayDistanceInputCellInputComponent = dbxTableDateRangeDayDistanceInputCellInputComponent;
21
+ }
22
+ selectionFinished(date) {
23
+ return this._createFiveDayRange(date);
24
+ }
25
+ createPreview(activeDate) {
26
+ return this._createFiveDayRange(activeDate);
27
+ }
28
+ _createFiveDayRange(date) {
29
+ if (date) {
30
+ const start = date;
31
+ const end = this._dateAdapter.addCalendarDays(date, this.dbxTableDateRangeDayDistanceInputCellInputComponent.daysDistance);
32
+ return new DateRange(start, end);
33
+ }
34
+ return new DateRange(null, null);
35
+ }
36
+ }
37
+ DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy, deps: [{ token: i1.DateAdapter }, { token: DbxTableDateRangeDayDistanceInputCellInputComponent }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy, decorators: [{
40
+ type: Injectable
41
+ }], ctorParameters: function () { return [{ type: i1.DateAdapter }, { type: DbxTableDateRangeDayDistanceInputCellInputComponent }]; } });
42
+ export const DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG = { daysDistance: 6 };
43
+ export const DEFAULT_DBX_TABLE_DATE_RANGE_DAY_BUTTON_FORMAT = 'MMM dd';
44
+ /**
45
+ * Cell input for a DateRangeDayDistanceInput value.
46
+ */
47
+ export class DbxTableDateRangeDayDistanceInputCellInputComponent {
48
+ constructor(tableStore) {
49
+ this.tableStore = tableStore;
50
+ this._syncSub = new SubscriptionObject();
51
+ this._valueSub = new SubscriptionObject();
52
+ this._pickerOpened = new BehaviorSubject(false);
53
+ this._config = new BehaviorSubject(DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG);
54
+ this.range = new FormGroup({
55
+ start: new FormControl(null),
56
+ end: new FormControl(null)
57
+ });
58
+ this.pickerOpened$ = this._pickerOpened.asObservable();
59
+ this.minDate$ = this._config.pipe(map((x) => x.minDate));
60
+ this.maxDate$ = this._config.pipe(map((x) => x.maxDate));
61
+ this.buttonFormat$ = this._config.pipe(map((x) => x.buttonFormat ?? DEFAULT_DBX_TABLE_DATE_RANGE_DAY_BUTTON_FORMAT));
62
+ this.dateRangeString$ = combineLatest([this.buttonFormat$, this.range.valueChanges]).pipe(map(([buttonFormat, { start, end }]) => {
63
+ if (start && end) {
64
+ return `${formatDate(start, buttonFormat)} - ${formatDate(end, buttonFormat)}`;
65
+ }
66
+ else {
67
+ return `Select Date`;
68
+ }
69
+ }));
70
+ }
71
+ ngOnInit() {
72
+ this._syncSub.subscription = this.tableStore.input$.subscribe((x) => {
73
+ const start = x?.date ?? null;
74
+ const end = start ? addDays(start, this.daysDistance) : undefined;
75
+ this.range.setValue({
76
+ start,
77
+ end
78
+ });
79
+ });
80
+ this._valueSub.subscription = this._pickerOpened
81
+ .pipe(distinctUntilChanged(), switchMap((opened) => {
82
+ let obs;
83
+ if (opened) {
84
+ obs = of({});
85
+ }
86
+ else {
87
+ obs = this.range.valueChanges.pipe(startWith(this.range.value));
88
+ }
89
+ return obs;
90
+ }), filter((x) => Boolean(x.start)), distinctUntilChanged((a, b) => isSameDateDay(a.start, b.start)), throttleTime(100, undefined, { trailing: true }))
91
+ .subscribe((x) => {
92
+ if (x.start) {
93
+ this.tableStore.setInput({ date: x.start, distance: this.daysDistance });
94
+ }
95
+ });
96
+ }
97
+ ngOnDestroy() {
98
+ this._pickerOpened.complete();
99
+ this._config.complete();
100
+ this._syncSub.destroy();
101
+ this._valueSub.destroy();
102
+ }
103
+ get daysDistance() {
104
+ return this._config.value.daysDistance;
105
+ }
106
+ get config() {
107
+ return this._config.value;
108
+ }
109
+ set config(config) {
110
+ this._config.next(config || DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG);
111
+ }
112
+ pickerOpened() {
113
+ this._pickerOpened.next(true);
114
+ }
115
+ pickerClosed() {
116
+ this._pickerOpened.next(false);
117
+ }
118
+ }
119
+ DbxTableDateRangeDayDistanceInputCellInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateRangeDayDistanceInputCellInputComponent, deps: [{ token: i2.DbxTableStore }], target: i0.ɵɵFactoryTarget.Component });
120
+ DbxTableDateRangeDayDistanceInputCellInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxTableDateRangeDayDistanceInputCellInputComponent, selector: "ng-component", providers: [
121
+ {
122
+ provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
123
+ useClass: DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy
124
+ }
125
+ ], ngImport: i0, template: `
126
+ <div class="dbx-table-date-range-distance-input-cell">
127
+ <mat-date-range-input class="dbx-table-date-range-distance-input" [min]="minDate$ | async" [max]="maxDate$ | async" [formGroup]="range" [rangePicker]="picker">
128
+ <input matStartDate formControlName="start" placeholder="Start date" />
129
+ <input matEndDate formControlName="end" placeholder="End date" />
130
+ </mat-date-range-input>
131
+ <button mat-stroked-button color="primary" (click)="picker.open()">{{ dateRangeString$ | async }}</button>
132
+ <mat-date-range-picker #picker (opened)="pickerOpened()" (closed)="pickerClosed()"></mat-date-range-picker>
133
+ </div>
134
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i4.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i4.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i4.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxTableDateRangeDayDistanceInputCellInputComponent, decorators: [{
136
+ type: Component,
137
+ args: [{
138
+ template: `
139
+ <div class="dbx-table-date-range-distance-input-cell">
140
+ <mat-date-range-input class="dbx-table-date-range-distance-input" [min]="minDate$ | async" [max]="maxDate$ | async" [formGroup]="range" [rangePicker]="picker">
141
+ <input matStartDate formControlName="start" placeholder="Start date" />
142
+ <input matEndDate formControlName="end" placeholder="End date" />
143
+ </mat-date-range-input>
144
+ <button mat-stroked-button color="primary" (click)="picker.open()">{{ dateRangeString$ | async }}</button>
145
+ <mat-date-range-picker #picker (opened)="pickerOpened()" (closed)="pickerClosed()"></mat-date-range-picker>
146
+ </div>
147
+ `,
148
+ providers: [
149
+ {
150
+ provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
151
+ useClass: DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy
152
+ }
153
+ ],
154
+ changeDetection: ChangeDetectionStrategy.OnPush
155
+ }]
156
+ }], ctorParameters: function () { return [{ type: i2.DbxTableStore }]; } });
157
+ export function dbxTableDateRangeDayDistanceInputCellInput(componentConfig) {
158
+ const config = {
159
+ componentClass: DbxTableDateRangeDayDistanceInputCellInputComponent,
160
+ init: (x) => {
161
+ x.config = componentConfig;
162
+ }
163
+ };
164
+ return config;
165
+ }
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLnRhYmxlLmNlbGwuaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL2RhdGUvZGF0ZXJhbmdlLnRhYmxlLmNlbGwuaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQTBELGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFpQyxTQUFTLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQUk3SSxNQUFNLE9BQU8sZ0VBQWdFO0lBQzNFLFlBQW9CLFlBQTRCLEVBQVUsbURBQXdHO1FBQTlJLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUFVLHdEQUFtRCxHQUFuRCxtREFBbUQsQ0FBcUQ7SUFBRyxDQUFDO0lBRXRLLGlCQUFpQixDQUFDLElBQWM7UUFDOUIsT0FB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U1UsbURBQW1EO2tCQW5CL0QsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUNBQWlDOzRCQUMxQyxRQUFRLEVBQUUsZ0VBQWdFO3lCQUMzRTtxQkFDRjtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7O0FBZ0dELE1BQU0sVUFBVSwwQ0FBMEMsQ0FBQyxlQUEyRTtJQUNwSSxNQUFNLE1BQU0sR0FBcUY7UUFDL0YsY0FBYyxFQUFFLG1EQUFtRDtRQUNuRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNWLENBQUMsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDO1FBQzdCLENBQUM7S0FDRixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlQmxvY2ssIERhdGVEdXJhdGlvblNwYW4sIERhdGVSYW5nZURheURpc3RhbmNlSW5wdXQsIGlzU2FtZURhdGVEYXkgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IERieFRhYmxlU3RvcmUgfSBmcm9tICcuLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSwgRGF0ZVJhbmdlLCBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1kgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEYXlzLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgYWRkRGF5cywgZm9ybWF0IGFzIGZvcm1hdERhdGUgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZywgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnRmFjdG9yeSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieFRhYmxlRGF0ZVJhbmdlRGF5RGlzdGFuY2VJbnB1dENlbGxJbnB1dFJhbmdlU2VsZWN0aW9uU3RyYXRlZ3k8RD4gaW1wbGVtZW50cyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneTxEPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEPiwgcHJpdmF0ZSBkYnhUYWJsZURhdGVSYW5nZURheURpc3RhbmNlSW5wdXRDZWxsSW5wdXRDb21wb25lbnQ6IERieFRhYmxlRGF0ZVJhbmdlRGF5RGlzdGFuY2VJbnB1dENlbGxJbnB1dENvbXBvbmVudCkge31cblxuICBzZWxlY3Rpb25GaW5pc2hlZChkYXRlOiBEIHwgbnVsbCk6IERhdGVSYW5nZTxEPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZpdmVEYXlSYW5nZShkYXRlKTtcbiAgfVxuXG4gIGNyZWF0ZVByZXZpZXcoYWN0aXZlRGF0ZTogRCB8IG51bGwpOiBEYXRlUmFuZ2U8RD4ge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVGaXZlRGF5UmFuZ2UoYWN0aXZlRGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVGaXZlRGF5UmFuZ2UoZGF0ZTogRCB8IG51bGwpOiBEYXRlUmFuZ2U8RD4ge1xuICAgIGlmIChkYXRlKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGRhdGU7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoZGF0ZSwgdGhpcy5kYnhUYWJsZURhdGVSYW5nZURheURpc3RhbmNlSW5wdXRDZWxsSW5wdXRDb21wb25lbnQuZGF5c0Rpc3RhbmNlKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlPEQ+KHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlPEQ+KG51bGwsIG51bGwpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4VGFibGVEYXRlUmFuZ2VEYXlEaXN0YW5jZUlucHV0Q2VsbElucHV0Q29tcG9uZW50Q29uZmlnIHtcbiAgLyoqXG4gICAqIEJ1dHRvbiBmb3JtYXQgZm9yIHRoZSBkYXRlc1xuICAgKi9cbiAgYnV0dG9uRm9ybWF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogRGlzdGFuY2UgZnJvbSB0aGUgc3RhcnQgdG8gc3Bhbi5cbiAgICovXG4gIGRheXNEaXN0YW5jZTogRGF5cztcbiAgbWluRGF0ZT86IE1heWJlPERhdGU+O1xuICBtYXhEYXRlPzogTWF5YmU8RGF0ZT47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RCWF9UQUJMRV9EQVRFX1JBTkdFX0RBWV9ESVNUSUFOQ0VfSU5QVVRfQ0VMTF9DT01QT05FTlRfQ09ORklHID0geyBkYXlzRGlzdGFuY2U6IDYgfTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfREJYX1RBQkxFX0RBVEVfUkFOR0VfREFZX0JVVFRPTl9GT1JNQVQgPSAnTU1NIGRkJztcblxuLyoqXG4gKiBDZWxsIGlucHV0IGZvciBhIERhdGVSYW5nZURheURpc3RhbmNlSW5wdXQgdmFsdWUuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYngtdGFibGUtZGF0ZS1yYW5nZS1kaXN0YW5jZS1pbnB1dC1jZWxsXCI+XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXQgY2xhc3M9XCJkYngtdGFibGUtZGF0ZS1yYW5nZS1kaXN0YW5jZS1pbnB1dFwiIFttaW5dPVwibWluRGF0ZSQgfCBhc3luY1wiIFttYXhdPVwibWF4RGF0ZSQgfCBhc3luY1wiIFtmb3JtR3JvdXBdPVwicmFuZ2VcIiBbcmFuZ2VQaWNrZXJdPVwicGlja2VyXCI+XG4gICAgICAgIDxpbnB1dCBtYXRTdGFydERhdGUgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIiBwbGFjZWhvbGRlcj1cIlN0YXJ0IGRhdGVcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIiBwbGFjZWhvbGRlcj1cIkVuZCBkYXRlXCIgLz5cbiAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiPnt7IGRhdGVSYW5nZVN0cmluZyQgfCBhc3luYyB9fTwvYnV0dG9uPlxuICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlciAjcGlja2VyIChvcGVuZWQpPVwicGlja2VyT3BlbmVkKClcIiAoY2xvc2VkKT1cInBpY2tlckNsb3NlZCgpXCI+PC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBEYnhUYWJsZURhdGVSYW5nZURheURpc3RhbmNlSW5wdXRDZWxsSW5wdXRSYW5nZVNlbGVjdGlvblN0cmF0ZWd5XG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYnhUYWJsZURhdGVSYW5nZURheURpc3RhbmNlSW5wdXRDZWxsSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N5bmNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX3BpY2tlck9wZW5lZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9jb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERieFRhYmxlRGF0ZVJhbmdlRGF5RGlzdGFuY2VJbnB1dENlbGxJbnB1dENvbXBvbmVudENvbmZpZz4oREVGQVVMVF9EQlhfVEFCTEVfREFURV9SQU5HRV9EQVlfRElTVElBTkNFX0lOUFVUX0NFTExfQ09NUE9ORU5UX0NPTkZJRyk7XG5cbiAgcmVhZG9ubHkgcmFuZ2UgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKSxcbiAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbClcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGlja2VyT3BlbmVkJCA9IHRoaXMuX3BpY2tlck9wZW5lZC5hc09ic2VydmFibGUoKTtcblxuICByZWFkb25seSBtaW5EYXRlJCA9IHRoaXMuX2NvbmZpZy5waXBlKG1hcCgoeCkgPT4geC5taW5EYXRlKSk7XG4gIHJlYWRvbmx5IG1heERhdGUkID0gdGhpcy5fY29uZmlnLnBpcGUobWFwKCh4KSA9PiB4Lm1heERhdGUpKTtcblxuICByZWFkb25seSBidXR0b25Gb3JtYXQkID0gdGhpcy5fY29uZmlnLnBpcGUobWFwKCh4KSA9PiB4LmJ1dHRvbkZvcm1hdCA/PyBERUZBVUxUX0RCWF9UQUJMRV9EQVRFX1JBTkdFX0RBWV9CVVRUT05fRk9STUFUKSk7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlU3RyaW5nJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuYnV0dG9uRm9ybWF0JCwgdGhpcy5yYW5nZS52YWx1ZUNoYW5nZXNdKS5waXBlKFxuICAgIG1hcCgoW2J1dHRvbkZvcm1hdCwgeyBzdGFydCwgZW5kIH1dKSA9PiB7XG4gICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgIHJldHVybiBgJHtmb3JtYXREYXRlKHN0YXJ0LCBidXR0b25Gb3JtYXQpfSAtICR7Zm9ybWF0RGF0ZShlbmQsIGJ1dHRvbkZvcm1hdCl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgU2VsZWN0IERhdGVgO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgdGFibGVTdG9yZTogRGJ4VGFibGVTdG9yZTxEYXRlUmFuZ2VEYXlEaXN0YW5jZUlucHV0Pikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zeW5jU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMudGFibGVTdG9yZS5pbnB1dCQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IHg/LmRhdGUgPz8gbnVsbDtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ID8gYWRkRGF5cyhzdGFydCwgdGhpcy5kYXlzRGlzdGFuY2UpIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnJhbmdlLnNldFZhbHVlKHtcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIGVuZFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl92YWx1ZVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9waWNrZXJPcGVuZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKG9wZW5lZCkgPT4ge1xuICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8eyBzdGFydD86IE1heWJlPERhdGU+IH0+O1xuXG4gICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgb2JzID0gb2Yoe30pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnMgPSB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLnJhbmdlLnZhbHVlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9icztcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoeCkgPT4gQm9vbGVhbih4LnN0YXJ0KSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBpc1NhbWVEYXRlRGF5KGEuc3RhcnQsIGIuc3RhcnQpKSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCwgdW5kZWZpbmVkLCB7IHRyYWlsaW5nOiB0cnVlIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh4LnN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldElucHV0KHsgZGF0ZTogeC5zdGFydCwgZGlzdGFuY2U6IHRoaXMuZGF5c0Rpc3RhbmNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3BpY2tlck9wZW5lZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NvbmZpZy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N5bmNTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlU3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIGdldCBkYXlzRGlzdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy52YWx1ZS5kYXlzRGlzdGFuY2U7XG4gIH1cblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcudmFsdWU7XG4gIH1cblxuICBzZXQgY29uZmlnKGNvbmZpZzogTWF5YmU8RGJ4VGFibGVEYXRlUmFuZ2VEYXlEaXN0YW5jZUlucHV0Q2VsbElucHV0Q29tcG9uZW50Q29uZmlnPikge1xuICAgIHRoaXMuX2NvbmZpZy5uZXh0KGNvbmZpZyB8fCBERUZBVUxUX0RCWF9UQUJMRV9EQVRFX1JBTkdFX0RBWV9ESVNUSUFOQ0VfSU5QVVRfQ0VMTF9DT01QT05FTlRfQ09ORklHKTtcbiAgfVxuXG4gIHBpY2tlck9wZW5lZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHBpY2tlckNsb3NlZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieFRhYmxlRGF0ZVJhbmdlRGF5RGlzdGFuY2VJbnB1dENlbGxJbnB1dChjb21wb25lbnRDb25maWc/OiBEYnhUYWJsZURhdGVSYW5nZURheURpc3RhbmNlSW5wdXRDZWxsSW5wdXRDb21wb25lbnRDb25maWcpOiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc8RGJ4VGFibGVEYXRlUmFuZ2VEYXlEaXN0YW5jZUlucHV0Q2VsbElucHV0Q29tcG9uZW50PiB7XG4gIGNvbnN0IGNvbmZpZzogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPERieFRhYmxlRGF0ZVJhbmdlRGF5RGlzdGFuY2VJbnB1dENlbGxJbnB1dENvbXBvbmVudD4gPSB7XG4gICAgY29tcG9uZW50Q2xhc3M6IERieFRhYmxlRGF0ZVJhbmdlRGF5RGlzdGFuY2VJbnB1dENlbGxJbnB1dENvbXBvbmVudCxcbiAgICBpbml0OiAoeCkgPT4ge1xuICAgICAgeC5jb25maWcgPSBjb21wb25lbnRDb25maWc7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjb25maWc7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './date.table.column.header.component';
2
+ export * from './daterange.table.cell.input.component';
3
+ export * from './table.date.module';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3RhYmxlL3NyYy9saWIvZGF0ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZS50YWJsZS5jb2x1bW4uaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVyYW5nZS50YWJsZS5jZWxsLmlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmRhdGUubW9kdWxlJztcbiJdfQ==