igniteui-angular 19.2.21 → 19.2.23

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 (33) hide show
  1. package/fesm2022/igniteui-angular.mjs.map +1 -1
  2. package/lib/core/styles/components/combo/_combo-theme.scss +0 -14
  3. package/lib/core/styles/components/input/_input-group-theme.scss +18 -0
  4. package/lib/core/styles/components/select/_select-theme.scss +0 -16
  5. package/lib/date-picker/public_api.d.ts +1 -0
  6. package/migrations/update-19_2_15/index.js +40 -34
  7. package/package.json +1 -1
  8. package/styles/igniteui-angular-dark.css +1 -1
  9. package/styles/igniteui-angular.css +1 -1
  10. package/styles/igniteui-bootstrap-dark.css +1 -1
  11. package/styles/igniteui-bootstrap-light.css +1 -1
  12. package/styles/igniteui-dark-green.css +1 -1
  13. package/styles/igniteui-fluent-dark-excel.css +1 -1
  14. package/styles/igniteui-fluent-dark-word.css +1 -1
  15. package/styles/igniteui-fluent-dark.css +1 -1
  16. package/styles/igniteui-fluent-light-excel.css +1 -1
  17. package/styles/igniteui-fluent-light-word.css +1 -1
  18. package/styles/igniteui-fluent-light.css +1 -1
  19. package/styles/igniteui-indigo-dark.css +1 -1
  20. package/styles/igniteui-indigo-light.css +1 -1
  21. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  22. package/styles/maps/igniteui-angular.css.map +1 -1
  23. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  24. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  25. package/styles/maps/igniteui-dark-green.css.map +1 -1
  26. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  27. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  28. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  29. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  32. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  33. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -222,20 +222,6 @@
222
222
  }
223
223
 
224
224
  @if $variant == 'bootstrap' {
225
- .igx-input-group--disabled {
226
- %igx-combo__toggle-button {
227
- border-inline-start-width: rem(1px);
228
- border-inline-start-style: solid;
229
- border-inline-start-color: inherit;
230
- }
231
- }
232
-
233
- igx-suffix:not(.igx-combo__clear-button) + %igx-combo__toggle-button {
234
- border-inline-start-width: rem(1px);
235
- border-inline-start-style: solid;
236
- border-inline-start-color: inherit;
237
- }
238
-
239
225
  .igx-input-group__bundle::after {
240
226
  height: rem(1px) !important;
241
227
  }
@@ -2248,6 +2248,24 @@
2248
2248
  min-height: 0;
2249
2249
  height: calc(100% - #{rem(8px)});
2250
2250
  }
2251
+ }
2252
+
2253
+ %form-group-prefix--disabled-bootstrap:not(:first-child) {
2254
+ border-inline-start-color: var-get($theme, 'disabled-border-color');
2255
+ }
2256
+
2257
+ %form-group-suffix--disabled-bootstrap:not(:last-child) {
2258
+ border-inline-end-color: var-get($theme, 'disabled-border-color');
2259
+ }
2260
+
2261
+ @if $variant == 'bootstrap' {
2262
+ %form-group-prefix:not(:first-child) {
2263
+ border-inline-start: rem(1px) solid var-get($theme, 'border-color');
2264
+ }
2265
+
2266
+ %form-group-suffix:not(:last-child) {
2267
+ border-inline-end: rem(1px) solid var-get($theme, 'border-color');
2268
+ }
2251
2269
  }
2252
2270
  }
2253
2271
 
@@ -78,22 +78,6 @@
78
78
  display: block;
79
79
  }
80
80
 
81
- @if $variant == 'bootstrap' {
82
- .igx-input-group--disabled {
83
- %igx-select__toggle-button {
84
- border-inline-start-width: rem(1px);
85
- border-inline-start-style: solid;
86
- border-inline-start-color: inherit;
87
- }
88
- }
89
-
90
- igx-suffix + %igx-select__toggle-button {
91
- border-inline-start-width: rem(1px);
92
- border-inline-start-style: solid;
93
- border-inline-start-color: inherit;
94
- }
95
- }
96
-
97
81
  .igx-input-group {
98
82
  %igx-select__toggle-button {
99
83
  background: var-get($theme, 'toggle-button-background');
@@ -4,5 +4,6 @@ import { IgxLabelDirective } from '../directives/label/label.directive';
4
4
  import { IgxPrefixDirective } from '../directives/prefix/prefix.directive';
5
5
  import { IgxSuffixDirective } from '../directives/suffix/suffix.directive';
6
6
  import { IgxDatePickerComponent } from './date-picker.component';
7
+ export * from './date-picker.common';
7
8
  export * from './date-picker.component';
8
9
  export declare const IGX_DATE_PICKER_DIRECTIVES: readonly [typeof IgxDatePickerComponent, typeof IgxPickerToggleComponent, typeof IgxPickerClearComponent, typeof IgxPickerActionsDirective, typeof IgxLabelDirective, typeof IgxPrefixDirective, typeof IgxSuffixDirective, typeof IgxHintDirective];
@@ -16,16 +16,18 @@ const import_helper_js_1 = require("igniteui-angular/migrations/common/import-he
16
16
  const version = '19.2.15';
17
17
  exports.default = () => (host, context) => __awaiter(void 0, void 0, void 0, function* () {
18
18
  context.logger.info(`Applying migration for Ignite UI for Angular to version ${version}`);
19
- const { HtmlParser } = yield (0, import_helper_js_1.nativeImport)('@angular/compiler');
19
+ const { HtmlParser } = (yield (0, import_helper_js_1.nativeImport)('@angular/compiler'));
20
20
  const update = new UpdateChanges_1.UpdateChanges(__dirname, host, context);
21
21
  const changes = new Map();
22
22
  const parser = new HtmlParser();
23
- const warnMsg = "Manual migration needed: please use 'disableFiltering' instead of filteringOptions.filterable." +
24
- "Since it has been deprecated.'";
23
+ const warnMsg = "Manual migration needed: please use 'disableFiltering' instead of filteringOptions.filterable. " +
24
+ "Since it has been deprecated.";
25
25
  const applyChanges = () => {
26
26
  for (const [path, fileChanges] of changes.entries()) {
27
27
  let content = host.read(path).toString();
28
- fileChanges.sort((a, b) => b.position - a.position).forEach(c => {
28
+ fileChanges
29
+ .sort((a, b) => b.position - a.position)
30
+ .forEach((c) => {
29
31
  content = c.apply(content);
30
32
  });
31
33
  host.overwrite(path, content);
@@ -39,7 +41,8 @@ exports.default = () => (host, context) => __awaiter(void 0, void 0, void 0, fun
39
41
  };
40
42
  const COMBO_TAGS = ['igx-simple-combo', 'igx-combo'];
41
43
  for (const path of update.templateFiles) {
42
- const nodes = (0, util_1.findElementNodes)((0, util_1.parseFile)(parser, host, path), COMBO_TAGS);
44
+ const root = (0, util_1.parseFile)(parser, host, path);
45
+ const nodes = (0, util_1.findElementNodes)(root, COMBO_TAGS);
43
46
  for (const node of nodes) {
44
47
  if (!(node instanceof compiler_1.Element))
45
48
  continue;
@@ -47,37 +50,37 @@ exports.default = () => (host, context) => __awaiter(void 0, void 0, void 0, fun
47
50
  const attr = node.attrs.find(a => a.name === '[filteringOptions]');
48
51
  if (!attr)
49
52
  continue;
50
- const attrVal = attr.value.trim();
51
53
  const offset = (0, util_1.getSourceOffset)(node);
52
54
  const file = offset.file;
53
- let replacementText = '';
54
- if (attrVal.startsWith('{')) {
55
- // inline object literal
56
- const normalized = attrVal
57
- .replace(/'/g, '"')
58
- .replace(/([{,]\s*)(\w+)\s*:/g, '$1"$2":');
59
- const parsed = JSON.parse(normalized);
60
- const filterable = parsed.filterable;
61
- if (filterable === false && !hasDisableFiltering) {
55
+ const attrVal = (attr.value || '').trim();
56
+ // Handle inline object literals like [filteringOptions]="{...}"
57
+ if (attrVal.startsWith('{') && attrVal.endsWith('}')) {
58
+ const inner = attrVal.slice(1, -1);
59
+ let willDisableFiltering = false;
60
+ let remainingInner = inner.replace(/(^|,)\s*filterable\s*:\s*(true|false)\s*(?=,|$)/i, (_m, leading, val) => {
61
+ if (/^false$/i.test(val) && !hasDisableFiltering) {
62
+ willDisableFiltering = true;
63
+ }
64
+ return leading ? leading : '';
65
+ });
66
+ remainingInner = remainingInner
67
+ .replace(/\s*,\s*,\s*/g, ',')
68
+ .replace(/^\s*,\s*|\s*,\s*$/g, '')
69
+ .trim();
70
+ let replacementText = '';
71
+ if (willDisableFiltering) {
62
72
  replacementText += `[disableFiltering]="true"`;
63
73
  }
64
- const remaining = Object.assign({}, parsed);
65
- delete remaining.filterable;
66
- const remainingProps = Object.entries(remaining)
67
- .map(([k, v]) => `${k}: ${JSON.stringify(v)}`)
68
- .join(', ');
69
- if (remainingProps.length > 0) {
70
- replacementText += ` [filteringOptions]="{ ${remainingProps} }"`;
71
- }
72
- // Replace whole [filteringOptions] attribute
73
- const match = node.sourceSpan.toString().match(/\[filteringOptions\]="([^"]+)"/);
74
- if (match) {
75
- const attrText = match[0];
76
- const attrPos = file.content.indexOf(attrText, offset.startTag.start);
77
- addChange(file.url, new util_1.FileChange(attrPos, replacementText, attrText, 'replace'));
74
+ if (remainingInner.length > 0) {
75
+ replacementText += ` [filteringOptions]="{ ${remainingInner} }"`;
78
76
  }
77
+ replacementText = replacementText.trim();
78
+ const attrStart = attr.sourceSpan.start.offset;
79
+ const attrEnd = attr.sourceSpan.end.offset;
80
+ const original = file.content.slice(attrStart, attrEnd);
81
+ addChange(file.url, new util_1.FileChange(attrStart, replacementText, original, 'replace'));
79
82
  }
80
- else {
83
+ else if (attrVal.length > 0) {
81
84
  // log for manual TS edit
82
85
  const comment = `\n<!-- ${warnMsg} -->\n`;
83
86
  addChange(file.url, new util_1.FileChange(offset.startTag.end, comment));
@@ -86,14 +89,17 @@ exports.default = () => (host, context) => __awaiter(void 0, void 0, void 0, fun
86
89
  }
87
90
  applyChanges();
88
91
  for (const path of update.tsFiles) {
89
- const content = host.read(path).toString();
92
+ const buf = host.read(path);
93
+ if (!buf)
94
+ continue;
95
+ const content = buf.toString();
90
96
  const lines = content.split('\n');
91
97
  const newLines = [];
92
98
  let modified = false;
93
99
  for (const line of lines) {
94
- if (/\.filteringOptions\.filterable\s*=/.test(line) ||
95
- /\.filteringOptions\s*=/.test(line)) {
96
- newLines.push('// ' + warnMsg);
100
+ if (/\.\s*filteringOptions\s*\.\s*filterable\s*=/.test(line) ||
101
+ /\.\s*filteringOptions\s*=\s*{/.test(line)) {
102
+ newLines.push(`// ${warnMsg}`);
97
103
  modified = true;
98
104
  }
99
105
  newLines.push(line);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-angular",
3
- "version": "19.2.21",
3
+ "version": "19.2.23",
4
4
  "description": "Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps",
5
5
  "author": "Infragistics",
6
6
  "license": "SEE LICENSE IN LICENSE",