@ngbase/adk 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/a11y/accessibility-group.d.ts +2 -5
  2. package/accordion/accordion-item.d.ts +3 -1
  3. package/autocomplete/autocomplete-input.d.ts +2 -4
  4. package/autocomplete/autocomplete.d.ts +12 -3
  5. package/carousel/carousel.d.ts +2 -2
  6. package/checkbox/checkbox.d.ts +11 -3
  7. package/checkbox/public-api.d.ts +1 -1
  8. package/datepicker/datepicker-trigger.d.ts +22 -5
  9. package/datepicker/datepicker.d.ts +2 -1
  10. package/drag/drag.d.ts +1 -2
  11. package/fesm2022/ngbase-adk-a11y.mjs +29 -26
  12. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  13. package/fesm2022/ngbase-adk-accordion.mjs +12 -2
  14. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-autocomplete.mjs +18 -18
  16. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-carousel.mjs +5 -5
  18. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
  20. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-datepicker.mjs +76 -25
  22. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-dialog.mjs +3 -3
  24. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  25. package/fesm2022/ngbase-adk-drag.mjs +1 -2
  26. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  27. package/fesm2022/ngbase-adk-list.mjs +2 -2
  28. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  29. package/fesm2022/ngbase-adk-mask.mjs +5 -3
  30. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  31. package/fesm2022/ngbase-adk-menu.mjs +22 -7
  32. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  33. package/fesm2022/ngbase-adk-pagination.mjs +3 -3
  34. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  35. package/fesm2022/ngbase-adk-popover.mjs +25 -22
  36. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  37. package/fesm2022/ngbase-adk-portal.mjs +5 -9
  38. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  39. package/fesm2022/ngbase-adk-radio.mjs +6 -3
  40. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  41. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-select.mjs +21 -13
  43. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-slider.mjs +4 -1
  45. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-table.mjs +8 -6
  48. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  50. package/fesm2022/ngbase-adk-test.mjs +11 -1
  51. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  52. package/fesm2022/ngbase-adk-tour.mjs +2 -2
  53. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  54. package/fesm2022/ngbase-adk-utils.mjs +12 -9
  55. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  56. package/mask/mask.d.ts +1 -2
  57. package/menu/menu-trigger.d.ts +1 -1
  58. package/menu/menu.d.ts +8 -2
  59. package/package.json +8 -8
  60. package/pagination/pagination.d.ts +3 -3
  61. package/popover/base-popover.service.d.ts +1 -1
  62. package/popover/popover.d.ts +5 -4
  63. package/portal/portal-base.service.d.ts +3 -3
  64. package/portal/portal-close.directive.d.ts +3 -2
  65. package/radio/radio.d.ts +5 -1
  66. package/schematics/components/files/accordion/accordion.ts.template +2 -2
  67. package/schematics/components/files/alert/alert.ts.template +1 -1
  68. package/schematics/components/files/autocomplete/autocomplete.ts.template +1 -1
  69. package/schematics/components/files/avatar/avatar.ts.template +1 -1
  70. package/schematics/components/files/badge/badge.ts.template +1 -1
  71. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +6 -2
  72. package/schematics/components/files/button/button.ts.template +5 -5
  73. package/schematics/components/files/card/card.ts.template +1 -1
  74. package/schematics/components/files/checkbox/checkbox.ts.template +9 -19
  75. package/schematics/components/files/checkbox/focus-style.directive.ts.template +1 -1
  76. package/schematics/components/files/chip/chip.ts.template +4 -2
  77. package/schematics/components/files/color-picker/color-picker.ts.template +1 -1
  78. package/schematics/components/files/command/command.ts.template +1 -1
  79. package/schematics/components/files/datepicker/calendar.ts.template +10 -10
  80. package/schematics/components/files/datepicker/datepicker.ts.template +19 -18
  81. package/schematics/components/files/datepicker/time.ts.template +3 -3
  82. package/schematics/components/files/dialog/dialog.ts.template +1 -1
  83. package/schematics/components/files/drawer/drawer.ts.template +2 -2
  84. package/schematics/components/files/form-field/form-field.ts.template +8 -8
  85. package/schematics/components/files/form-field/input-style.directive.ts.template +1 -1
  86. package/schematics/components/files/keys/key.ts.template +1 -1
  87. package/schematics/components/files/list/list.ts.template +1 -1
  88. package/schematics/components/files/otp/otp.ts.template +1 -1
  89. package/schematics/components/files/pagination/pagination.ts.template +6 -2
  90. package/schematics/components/files/popover/popover.ts.template +2 -2
  91. package/schematics/components/files/progress/progress.ts.template +1 -1
  92. package/schematics/components/files/radio/radio.ts.template +7 -5
  93. package/schematics/components/files/resizable/resizable.ts.template +6 -3
  94. package/schematics/components/files/select/option.ts.template +2 -2
  95. package/schematics/components/files/select/select.ts.template +3 -3
  96. package/schematics/components/files/selectable/selectable.ts.template +5 -5
  97. package/schematics/components/files/sheet/sheet.ts.template +1 -1
  98. package/schematics/components/files/sidenav/sidenav.ts.template +1 -1
  99. package/schematics/components/files/skeleton/skeleton.ts.template +1 -1
  100. package/schematics/components/files/slider/slider.ts.template +3 -3
  101. package/schematics/components/files/sonner/sonner.ts.template +3 -3
  102. package/schematics/components/files/spinner/spinner.ts.template +1 -1
  103. package/schematics/components/files/stepper/stepper.ts.template +1 -1
  104. package/schematics/components/files/switch/switch.ts.template +2 -2
  105. package/schematics/components/files/table/index.ts.template +12 -11
  106. package/schematics/components/files/table/table.ts.template +107 -5
  107. package/schematics/components/files/tabs/tab.ts.template +4 -4
  108. package/schematics/components/files/toggle/toggle.ts.template +1 -1
  109. package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
  110. package/schematics/components/files/tooltip/tooltip.ts.template +1 -1
  111. package/schematics/components/index.js +32 -8
  112. package/schematics/components/index.js.map +1 -1
  113. package/schematics/components/index.ts +41 -11
  114. package/schematics/components/schema.d.ts +1 -1
  115. package/schematics/components/schema.json +2 -2
  116. package/schematics/components/schema.ts +1 -1
  117. package/select/option.d.ts +1 -1
  118. package/select/select-base.d.ts +8 -6
  119. package/select/select.d.ts +5 -2
  120. package/slider/slider.d.ts +1 -0
  121. package/table/table.d.ts +2 -2
  122. package/test/utils.d.ts +19 -3
  123. package/utils/utils.d.ts +5 -4
  124. package/schematics/components/files/table/body-cell.ts.template +0 -19
  125. package/schematics/components/files/table/body-row.ts.template +0 -21
  126. package/schematics/components/files/table/column.ts.template +0 -8
  127. package/schematics/components/files/table/head-cell.ts.template +0 -19
  128. package/schematics/components/files/table/head-row.ts.template +0 -27
@@ -27,7 +27,7 @@ import {
27
27
  <div class="relative flex overflow-hidden">
28
28
  <button
29
29
  ngbTabScroll="left"
30
- class="absolute left-0 z-10 h-full place-items-center bg-foreground px-2"
30
+ class="absolute left-0 z-10 h-full place-items-center bg-background px-2"
31
31
  >
32
32
  <<%= name %>-icon name="lucideChevronLeft" />
33
33
  </button>
@@ -36,14 +36,14 @@ import {
36
36
  @for (tab of tabs(); track tab.id) {
37
37
  <button
38
38
  [ngbTabButton]="tab"
39
- class="whitespace-nowrap border-b-2 border-transparent px-4 py-3 font-medium text-muted aria-[disabled=true]:cursor-not-allowed aria-[selected=true]:!border-primary aria-[disabled=true]:text-muted aria-[selected=true]:!text-primary aria-[disabled=true]:opacity-50"
39
+ class="text-muted-foreground aria-[disabled=true]:text-muted-foreground whitespace-nowrap border-b-2 border-transparent px-4 py-3 font-medium aria-[disabled=true]:cursor-not-allowed aria-[selected=true]:!border-primary aria-[selected=true]:!text-primary aria-[disabled=true]:opacity-50"
40
40
  ></button>
41
41
  }
42
42
  </div>
43
43
  </nav>
44
44
  <button
45
45
  ngbTabScroll="right"
46
- class="absolute right-0 z-10 h-full place-items-center bg-foreground px-2"
46
+ class="absolute right-0 z-10 h-full place-items-center bg-background px-2"
47
47
  >
48
48
  <<%= name %>-icon name="lucideChevronRight" />
49
49
  </button>
@@ -52,7 +52,7 @@ import {
52
52
  </div>
53
53
  <ng-content /> `,
54
54
  host: {
55
- class: 'bg-foreground flex flex-col',
55
+ class: 'bg-background flex flex-col',
56
56
  },
57
57
  })
58
58
  export class Tabs extends NgbTabs<Tab> {}
@@ -7,7 +7,7 @@ import { NgbToggle } from '@ngbase/adk/toggle';
7
7
  hostDirectives: [{ directive: NgbToggle, inputs: ['value'], outputs: ['valueChange'] }],
8
8
  template: `<ng-content />`,
9
9
  host: {
10
- class: 'block w-9 h-9 rounded relative aria-[pressed=true]:bg-background',
10
+ class: 'block w-9 h-9 rounded relative aria-[pressed=true]:bg-foreground',
11
11
  },
12
12
  })
13
13
  export class Toggle {}
@@ -19,7 +19,7 @@ export class ToggleGroup<T> {}
19
19
  hostDirectives: [{ directive: NgbToggleItem, inputs: ['disabled', 'value'] }],
20
20
  host: {
21
21
  class:
22
- 'inline-block rounded h-9 px-3 hover:bg-opacity-80 active:bg-opacity-70 aria-[selected=true]:bg-background',
22
+ 'inline-block rounded h-9 px-3 hover:bg-opacity-80 active:bg-opacity-70 aria-[selected=true]:bg-foreground',
23
23
  },
24
24
  })
25
25
  export class ToggleItem<T> {}
@@ -32,7 +32,7 @@ export class Tooltip {}
32
32
  template: `<div ngbPopoverArrow>{{ content() }}</div>`,
33
33
  host: {
34
34
  class:
35
- 'fixed inline-block rounded-lg bg-foreground px-3 py-1 border shadow-md z-p whitespace-pre-line max-w-[15rem] text-text',
35
+ 'fixed inline-block rounded-lg bg-background px-3 py-1 border shadow-md z-p whitespace-pre-line max-w-[15rem] text-text',
36
36
  '[class]': `theme.mode() === 'dark' ? 'light' : 'dark'`,
37
37
  },
38
38
  animations: [tooltipAnimation],
@@ -3,15 +3,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.myGenerator = myGenerator;
4
4
  const schematics_1 = require("@angular-devkit/schematics");
5
5
  const core_1 = require("@angular-devkit/core");
6
+ function readConfigFile(tree) {
7
+ const configPath = 'ngbase.config.json';
8
+ if (tree.exists(configPath)) {
9
+ const buffer = tree.read(configPath);
10
+ if (buffer) {
11
+ try {
12
+ const content = JSON.parse(buffer.toString());
13
+ return content;
14
+ }
15
+ catch (error) {
16
+ console.warn(`⚠️ Failed to parse ${configPath}:`, error);
17
+ }
18
+ }
19
+ }
20
+ return {};
21
+ }
6
22
  function myGenerator(options) {
7
- return () => {
8
- const sourceTemplates = (0, schematics_1.url)(`./files/${options.component}`);
9
- const targetPath = options.path || '';
10
- const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
11
- (0, schematics_1.applyTemplates)(Object.assign(Object.assign({}, core_1.strings), options)),
12
- (0, schematics_1.move)((0, core_1.normalize)(`/${targetPath}/${options.component}`)),
13
- ]);
14
- return (0, schematics_1.chain)([(0, schematics_1.mergeWith)(sourceParametrizedTemplates)]);
23
+ return (tree) => {
24
+ const config = readConfigFile(tree);
25
+ const finalOptions = Object.assign(Object.assign({}, config), options);
26
+ if (!options.component || options.component.length === 0) {
27
+ return (0, schematics_1.noop)();
28
+ }
29
+ const rules = options.component.map(comp => {
30
+ const sourceTemplates = (0, schematics_1.url)(`./files/${comp}`);
31
+ const targetPath = options.path || '';
32
+ const sourceParametrizedTemplates = (0, schematics_1.apply)(sourceTemplates, [
33
+ (0, schematics_1.applyTemplates)(Object.assign(Object.assign(Object.assign({}, core_1.strings), finalOptions), { component: comp })),
34
+ (0, schematics_1.move)((0, core_1.normalize)(`/${targetPath}/${comp}`)),
35
+ ]);
36
+ return (0, schematics_1.mergeWith)(sourceParametrizedTemplates);
37
+ });
38
+ return (0, schematics_1.chain)(rules);
15
39
  };
16
40
  }
17
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/adk/schematics/components/index.ts"],"names":[],"mappings":";;AAYA,kCAgBC;AA5BD,2DAQoC;AACpC,+CAA0D;AAG1D,SAAgB,WAAW,CAAC,OAA0B;IACpD,OAAO,GAAG,EAAE;QACV,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,WAAW,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAEtC,MAAM,2BAA2B,GAAG,IAAA,kBAAK,EAAC,eAAe,EAAE;YACzD,IAAA,2BAAc,kCACT,cAAO,GACP,OAAO,EACV;YACF,IAAA,iBAAI,EAAC,IAAA,gBAAS,EAAC,IAAI,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC;QAEH,OAAO,IAAA,kBAAK,EAAC,CAAC,IAAA,sBAAS,EAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/adk/schematics/components/index.ts"],"names":[],"mappings":";;AA8BA,kCA4BC;AA1DD,2DAUoC;AACpC,+CAA0D;AAG1D,SAAS,cAAc,CAAC,IAAU;IAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9C,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,WAAW,CAAC,OAA0B;IACpD,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,YAAY,mCAAQ,MAAM,GAAK,OAAO,CAAE,CAAC;QAE/C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,IAAA,iBAAI,GAAE,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAW,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACjD,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAE/C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YAEtC,MAAM,2BAA2B,GAAG,IAAA,kBAAK,EAAC,eAAe,EAAE;gBACzD,IAAA,2BAAc,gDACT,cAAO,GACP,YAAY,KACf,SAAS,EAAE,IAAI,IACf;gBACF,IAAA,iBAAI,EAAC,IAAA,gBAAS,EAAC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC;aAC1C,CAAC,CAAC;YAEH,OAAO,IAAA,sBAAS,EAAC,2BAA2B,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,IAAA,kBAAK,EAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
@@ -6,24 +6,54 @@ import {
6
6
  applyTemplates,
7
7
  url,
8
8
  chain,
9
+ noop,
10
+ Tree,
9
11
  } from '@angular-devkit/schematics';
10
12
  import { strings, normalize } from '@angular-devkit/core';
11
13
  import { MyGeneratorSchema } from './schema';
12
14
 
15
+ function readConfigFile(tree: Tree): Partial<MyGeneratorSchema> {
16
+ const configPath = 'ngbase.config.json';
17
+ if (tree.exists(configPath)) {
18
+ const buffer = tree.read(configPath);
19
+ if (buffer) {
20
+ try {
21
+ const content = JSON.parse(buffer.toString());
22
+ return content;
23
+ } catch (error) {
24
+ console.warn(`⚠️ Failed to parse ${configPath}:`, error);
25
+ }
26
+ }
27
+ }
28
+ return {};
29
+ }
30
+
13
31
  export function myGenerator(options: MyGeneratorSchema): Rule {
14
- return () => {
15
- const sourceTemplates = url(`./files/${options.component}`);
32
+ return (tree: Tree) => {
33
+ const config = readConfigFile(tree);
34
+ const finalOptions = { ...config, ...options };
35
+
36
+ if (!options.component || options.component.length === 0) {
37
+ return noop();
38
+ }
39
+
40
+ const rules: Rule[] = options.component.map(comp => {
41
+ const sourceTemplates = url(`./files/${comp}`);
42
+
43
+ const targetPath = options.path || '';
16
44
 
17
- const targetPath = options.path || '';
45
+ const sourceParametrizedTemplates = apply(sourceTemplates, [
46
+ applyTemplates({
47
+ ...strings,
48
+ ...finalOptions,
49
+ component: comp,
50
+ }),
51
+ move(normalize(`/${targetPath}/${comp}`)),
52
+ ]);
18
53
 
19
- const sourceParametrizedTemplates = apply(sourceTemplates, [
20
- applyTemplates({
21
- ...strings,
22
- ...options,
23
- }),
24
- move(normalize(`/${targetPath}/${options.component}`)),
25
- ]);
54
+ return mergeWith(sourceParametrizedTemplates);
55
+ });
26
56
 
27
- return chain([mergeWith(sourceParametrizedTemplates)]);
57
+ return chain(rules);
28
58
  };
29
59
  }
@@ -2,5 +2,5 @@ export interface MyGeneratorSchema {
2
2
  name: string;
3
3
  path?: string;
4
4
  project?: string;
5
- component: string;
5
+ component: string[];
6
6
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
3
  "$id": "SchematicsAccordion",
4
4
  "title": "Accordion Schema",
5
5
  "type": "object",
@@ -80,7 +80,7 @@
80
80
  ],
81
81
  "x-prompt": {
82
82
  "message": "Which component would you like to create?",
83
- "type": "list",
83
+ "type": "checkbox",
84
84
  "items": [
85
85
  { "value": "accordion", "label": "Accordion" },
86
86
  { "value": "alert", "label": "Alert" },
@@ -2,5 +2,5 @@ export interface MyGeneratorSchema {
2
2
  name: string;
3
3
  path?: string;
4
4
  project?: string;
5
- component: string;
5
+ component: string[];
6
6
  }
@@ -19,7 +19,7 @@ export declare class NgbOption<T> {
19
19
  label(): string;
20
20
  focus(): void;
21
21
  unselect(): void;
22
- getValue(): string | NonNullable<T>;
22
+ getValue(): string | T | undefined;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbOption<any>, never>;
24
24
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbOption<any>, "[ngbOption]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ayId": { "alias": "ayId"; "required": false; "isSignal": true; }; }, { "onSelectionChange": "onSelectionChange"; }, never, never, true, [{ directive: typeof i1.AccessibleItem; inputs: {}; outputs: {}; }]>;
25
25
  }
@@ -1,6 +1,7 @@
1
1
  import { EffectRef, ElementRef, OnDestroy, TemplateRef } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { Directionality } from '@ngbase/adk/bidi';
4
+ import { PopoverOptions } from '@ngbase/adk/popover';
4
5
  import { Subject } from 'rxjs';
5
6
  import { NgbOption } from './option';
6
7
  import * as i0 from "@angular/core";
@@ -16,21 +17,22 @@ export declare abstract class SelectBase<T> implements ControlValueAccessor, OnD
16
17
  readonly target: NgbSelectTarget | null;
17
18
  readonly list: import("@angular/core").Signal<readonly NgbOption<any>[]>;
18
19
  readonly popover: {
19
- open: <T_1>(component: import("@ngbase/adk/portal").DialogInput<T_1>, options: import("@ngbase/adk/popover").PopoverOptions) => import("@ngbase/adk/popover").PopoverOpen<T_1>;
20
+ open: <T_1>(component: import("@ngbase/adk/portal").DialogInput<T_1>, options: PopoverOptions) => import("@ngbase/adk/popover").PopoverOpen<T_1>;
20
21
  closeAll: () => void;
21
22
  };
22
23
  readonly optionsTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
23
24
  readonly container: import("@angular/core").Signal<ElementRef<any> | undefined>;
24
25
  readonly optionsGroup: import("@angular/core").Signal<ElementRef<any> | undefined>;
25
- readonly options: import("@angular/core").InputSignal<T[]>;
26
26
  readonly value: import("@angular/core").ModelSignal<any>;
27
+ readonly disabled: import("@angular/core").ModelSignal<boolean>;
27
28
  readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
29
+ readonly noAutoClose: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
30
+ readonly options: import("@angular/core").InputSignal<T[]>;
28
31
  readonly placeholder: import("@angular/core").InputSignal<string>;
29
- readonly disabled: import("@angular/core").ModelSignal<boolean>;
30
32
  readonly size: import("@angular/core").InputSignal<"target" | "free">;
31
33
  readonly opened: import("@angular/core").OutputEmitterRef<boolean>;
32
34
  readonly closed: import("@angular/core").OutputEmitterRef<boolean>;
33
- sideOffset: number;
35
+ defaultOptions: Partial<PopoverOptions>;
34
36
  readonly panelOpen: import("@angular/core").WritableSignal<boolean>;
35
37
  readonly values: import("@angular/core").WritableSignal<T[]>;
36
38
  readonly status: import("@angular/core").WritableSignal<"opening" | "opened" | "closed">;
@@ -43,7 +45,7 @@ export declare abstract class SelectBase<T> implements ControlValueAccessor, OnD
43
45
  readonly cValue: import("@angular/core").Signal<string>;
44
46
  private withInPopup;
45
47
  valueRef: EffectRef;
46
- constructor(isSelect: boolean);
48
+ protected constructor(isSelect: boolean);
47
49
  open(): void;
48
50
  popValue(): void;
49
51
  close(): void;
@@ -60,5 +62,5 @@ export declare abstract class SelectBase<T> implements ControlValueAccessor, OnD
60
62
  setDisabledState(isDisabled: boolean): void;
61
63
  ngOnDestroy(): void;
62
64
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectBase<any>, never>;
63
- static ɵdir: i0.ɵɵDirectiveDeclaration<SelectBase<any>, never, never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; "opened": "opened"; "closed": "closed"; }, ["list"], never, true, never>;
65
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SelectBase<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "noAutoClose": { "alias": "noAutoClose"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; "opened": "opened"; "closed": "closed"; }, ["list"], never, true, never>;
64
66
  }
@@ -1,5 +1,6 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import { AccessibleGroup } from '@ngbase/adk/a11y';
3
+ import { FilterOptions } from '@ngbase/adk/utils';
3
4
  import { SelectBase } from './select-base';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@ngbase/adk/a11y";
@@ -27,7 +28,9 @@ export declare class NgbSelectOptionGroup {
27
28
  export declare class NgbSelect<T> extends SelectBase<T> {
28
29
  readonly search: import("@angular/core").ModelSignal<string>;
29
30
  readonly optionTemplate: import("@angular/core").Signal<NgbSelectOption<any> | undefined>;
30
- readonly defaultFilter: (option: string) => string;
31
+ readonly filterFn: import("@angular/core").InputSignal<(option: string) => string>;
32
+ readonly queryFn: import("@angular/core").InputSignal<((query: string, option: any) => boolean) | undefined>;
33
+ readonly filterOptions: import("@angular/core").InputSignal<FilterOptions<T> | undefined>;
31
34
  readonly optionsFilter: {
32
35
  search: import("@angular/core").WritableSignal<string>;
33
36
  list: import("@angular/core").WritableSignal<T[]>;
@@ -35,7 +38,7 @@ export declare class NgbSelect<T> extends SelectBase<T> {
35
38
  };
36
39
  constructor();
37
40
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbSelect<any>, never>;
38
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbSelect<any>, "[ngbSelect]", never, { "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; }, ["optionTemplate"], never, true, never>;
41
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbSelect<any>, "[ngbSelect]", never, { "search": { "alias": "search"; "required": false; "isSignal": true; }; "filterFn": { "alias": "filterFn"; "required": false; "isSignal": true; }; "queryFn": { "alias": "queryFn"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; }, ["optionTemplate"], never, true, never>;
39
42
  }
40
43
  export declare function aliasSelect(select: typeof NgbSelect): (({
41
44
  provide: import("@angular/core").InjectionToken<readonly import("@angular/forms").ControlValueAccessor[]>;
@@ -43,6 +43,7 @@ export declare class NgbSlider implements ControlValueAccessor {
43
43
  private activeIndex;
44
44
  private totalWidth;
45
45
  private totalSliderWidth;
46
+ private cdr;
46
47
  constructor();
47
48
  private handleValueUpdate;
48
49
  private updateElement;
package/table/table.d.ts CHANGED
@@ -3,6 +3,8 @@ import { NgbColumn } from './column';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare const ROW_TOKEN: InjectionToken<any>;
5
5
  export declare class NgbTable<T> {
6
+ private readonly injector;
7
+ private readonly differs;
6
8
  private readonly thead;
7
9
  private readonly tbody;
8
10
  private readonly bodyRowDef;
@@ -10,8 +12,6 @@ export declare class NgbTable<T> {
10
12
  readonly columns: import("@angular/core").Signal<readonly NgbColumn[]>;
11
13
  readonly data: import("@angular/core").InputSignal<T[]>;
12
14
  readonly trackBy: import("@angular/core").InputSignal<(index: number, item: T) => any>;
13
- private readonly injector;
14
- private readonly differs;
15
15
  private _dataDiffers?;
16
16
  private readonly _values;
17
17
  private readonly valuesTracker;
package/test/utils.d.ts CHANGED
@@ -43,11 +43,27 @@ export declare class RenderResult<T> extends ElementHelper<HTMLElement> {
43
43
  queryRoot<U extends HTMLElement>(selector: string): ElementHelper<U>;
44
44
  setInput(name: string, value: any): void;
45
45
  }
46
- export declare function fakeService<T extends Type<any>>(service: T, impl: Partial<InstanceType<T>> | (() => Partial<InstanceType<T>>)): {
46
+ export interface FakeServiceResult<T extends Type<any>, C = any> {
47
47
  provide: T;
48
- useFactory: () => Partial<InstanceType<T>>;
48
+ useFactory: () => any;
49
+ v: InstanceType<T>;
50
+ _: C;
51
+ }
52
+ export declare function fakeService<T extends Type<any>, I extends Partial<InstanceType<T>> | (() => Partial<InstanceType<T>> & {
53
+ __?: any;
54
+ })>(service: T, impl: I): {
55
+ provide: T;
56
+ useFactory: () => any;
57
+ readonly v: InstanceType<T>;
58
+ readonly _: I extends () => Partial<InstanceType<T>> & {
59
+ __: infer C;
60
+ } ? C : never;
49
61
  };
50
- type FakeService<T extends Type<any>> = ReturnType<typeof fakeService<T>>;
62
+ export type FakeService<T extends Type<any>, I extends Partial<InstanceType<T>> | (() => Partial<InstanceType<T>> & {
63
+ __?: any;
64
+ }) = any> = FakeServiceResult<T, I extends () => Partial<InstanceType<T>> & {
65
+ __: infer C;
66
+ } ? C : never>;
51
67
  type RenderProvider = Provider | EnvironmentProviders | FakeService<any>;
52
68
  export declare function render<T>(component: Type<T>, providers?: RenderProvider[], options?: {
53
69
  inputs?: [string, any][];
package/utils/utils.d.ts CHANGED
@@ -15,12 +15,13 @@ export declare function documentListener<T extends Event>(ev: string, fn: (e: T)
15
15
  skip?: number;
16
16
  element?: HTMLElement | Document | Window;
17
17
  }>): ListenerOut;
18
- export declare function filterFunction<T, V = T>(data: Signal<T[]> | T[], options: {
19
- filter?: (v: V) => string;
18
+ export type FilterOptions<T, V = any> = {
19
+ filter: (v: V) => string;
20
+ query?: (query: string, option: V) => boolean;
20
21
  key?: keyof T;
21
22
  childrenFilter?: (v: T) => V[];
22
- query?: (v: V, search: string) => boolean;
23
- }): {
23
+ };
24
+ export declare function filterFunction<T, V = T>(data: Signal<T[]> | T[], ops: () => FilterOptions<T, V>): {
24
25
  search: import("@angular/core").WritableSignal<string>;
25
26
  list: import("@angular/core").WritableSignal<T[]>;
26
27
  filteredList: Signal<T[]>;
@@ -1,19 +0,0 @@
1
- import { Component, Directive, ChangeDetectionStrategy } from '@angular/core';
2
- import { NgbCell, NgbCellDef } from '@ngbase/adk/table';
3
-
4
- @Component({
5
- selector: '[<%= name %>Cell]',
6
- changeDetection: ChangeDetectionStrategy.OnPush,
7
- hostDirectives: [NgbCell],
8
- host: {
9
- class: 'px-4 py-2 align-middle bg-foreground',
10
- },
11
- template: `<ng-content />`,
12
- })
13
- export class Cell {}
14
-
15
- @Directive({
16
- selector: '[<%= name %>CellDef]',
17
- hostDirectives: [NgbCellDef],
18
- })
19
- export class CellDef {}
@@ -1,21 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
- import { NgbBodyRow, NgbBodyRowDef } from '@ngbase/adk/table';
3
-
4
- @Directive({
5
- selector: '[<%= name %>BodyRowDef]',
6
- hostDirectives: [
7
- { directive: NgbBodyRowDef, inputs: ['ngbBodyRowDefColumns: <%= name %>BodyRowDefColumns'] },
8
- ],
9
- })
10
- export class BodyRowDef {}
11
-
12
- @Component({
13
- selector: '[<%= name %>BodyRow]',
14
- changeDetection: ChangeDetectionStrategy.OnPush,
15
- providers: [{ provide: NgbBodyRow, useExisting: BodyRow }],
16
- template: `<ng-container #container />`,
17
- host: {
18
- class: '[&:not(:last-child)]:border-b hover:bg-muted-background h-12',
19
- },
20
- })
21
- export class BodyRow extends NgbBodyRow {}
@@ -1,8 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { NgbColumn } from '@ngbase/adk/table';
3
-
4
- @Directive({
5
- selector: '[<%= name %>Column]',
6
- hostDirectives: [{ directive: NgbColumn, inputs: ['ngbColumn: <%= name %>Column', 'sticky'] }],
7
- })
8
- export class Column {}
@@ -1,19 +0,0 @@
1
- import { Component, Directive, ChangeDetectionStrategy } from '@angular/core';
2
- import { NgbHead, NgbHeadDef } from '@ngbase/adk/table';
3
-
4
- @Component({
5
- selector: '[<%= name %>Head]',
6
- changeDetection: ChangeDetectionStrategy.OnPush,
7
- host: {
8
- class: 'px-4 py-2 text-left align-middle font-medium text-muted border-b bg-foreground',
9
- },
10
- hostDirectives: [NgbHead],
11
- template: `<ng-content />`,
12
- })
13
- export class Head {}
14
-
15
- @Directive({
16
- selector: '[<%= name %>HeadDef]',
17
- hostDirectives: [NgbHeadDef],
18
- })
19
- export class HeadDef {}
@@ -1,27 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
- import { NgbHeadRow, NgbHeadRowDef } from '@ngbase/adk/table';
3
-
4
- @Component({
5
- selector: '[<%= name %>HeadRow]',
6
- changeDetection: ChangeDetectionStrategy.OnPush,
7
- host: {
8
- class: `h-10 [&[data-sticky=true]]:sticky [&[data-sticky=true]]:top-0 [&[data-sticky=true]]:bg-foreground`,
9
- },
10
- providers: [{ provide: NgbHeadRow, useExisting: HeadRow }],
11
- template: `<ng-container #container />`,
12
- })
13
- export class HeadRow extends NgbHeadRow {}
14
-
15
- @Directive({
16
- selector: '[<%= name %>HeadRowDef]',
17
- hostDirectives: [
18
- {
19
- directive: NgbHeadRowDef,
20
- inputs: [
21
- 'ngbHeadRowDef: <%= name %>HeadRowDef',
22
- 'ngbHeadRowDefSticky: <%= name %>HeadRowDefSticky',
23
- ],
24
- },
25
- ],
26
- })
27
- export class HeadRowDef {}