@ni/nimble-components 29.3.7 → 29.4.1

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.
@@ -13,6 +13,7 @@ declare const supportedLabels: {
13
13
  readonly popupIconInformation: import("@microsoft/fast-foundation").DesignToken<string>;
14
14
  readonly filterSearch: import("@microsoft/fast-foundation").DesignToken<string>;
15
15
  readonly filterNoResults: import("@microsoft/fast-foundation").DesignToken<string>;
16
+ readonly loading: import("@microsoft/fast-foundation").DesignToken<string>;
16
17
  };
17
18
  /**
18
19
  * Core label provider for Nimble
@@ -26,6 +27,7 @@ export declare class LabelProviderCore extends LabelProviderBase<typeof supporte
26
27
  popupIconInformation: string | undefined;
27
28
  filterSearch: string | undefined;
28
29
  filterNoResults: string | undefined;
30
+ loading: string | undefined;
29
31
  protected readonly supportedLabels: {
30
32
  readonly popupDismiss: import("@microsoft/fast-foundation").DesignToken<string>;
31
33
  readonly numericDecrement: import("@microsoft/fast-foundation").DesignToken<string>;
@@ -35,6 +37,7 @@ export declare class LabelProviderCore extends LabelProviderBase<typeof supporte
35
37
  readonly popupIconInformation: import("@microsoft/fast-foundation").DesignToken<string>;
36
38
  readonly filterSearch: import("@microsoft/fast-foundation").DesignToken<string>;
37
39
  readonly filterNoResults: import("@microsoft/fast-foundation").DesignToken<string>;
40
+ readonly loading: import("@microsoft/fast-foundation").DesignToken<string>;
38
41
  };
39
42
  }
40
43
  export declare const labelProviderCoreTag = "nimble-label-provider-core";
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { attr } from '@microsoft/fast-element';
3
3
  import { DesignSystem } from '@microsoft/fast-foundation';
4
4
  import { LabelProviderBase } from '../base';
5
- import { popupDismissLabel, numericDecrementLabel, numericIncrementLabel, popupIconErrorLabel, popupIconWarningLabel, popupIconInformationLabel, filterSearchLabel, filterNoResultsLabel } from './label-tokens';
5
+ import { popupDismissLabel, numericDecrementLabel, numericIncrementLabel, popupIconErrorLabel, popupIconWarningLabel, popupIconInformationLabel, filterSearchLabel, filterNoResultsLabel, loadingLabel } from './label-tokens';
6
6
  import { styles } from '../base/styles';
7
7
  const supportedLabels = {
8
8
  popupDismiss: popupDismissLabel,
@@ -12,7 +12,8 @@ const supportedLabels = {
12
12
  popupIconWarning: popupIconWarningLabel,
13
13
  popupIconInformation: popupIconInformationLabel,
14
14
  filterSearch: filterSearchLabel,
15
- filterNoResults: filterNoResultsLabel
15
+ filterNoResults: filterNoResultsLabel,
16
+ loading: loadingLabel
16
17
  };
17
18
  /**
18
19
  * Core label provider for Nimble
@@ -47,6 +48,9 @@ __decorate([
47
48
  __decorate([
48
49
  attr({ attribute: 'filter-no-results' })
49
50
  ], LabelProviderCore.prototype, "filterNoResults", void 0);
51
+ __decorate([
52
+ attr({ attribute: 'loading' })
53
+ ], LabelProviderCore.prototype, "loading", void 0);
50
54
  const nimbleLabelProviderCore = LabelProviderCore.compose({
51
55
  baseName: 'label-provider-core',
52
56
  styles
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/label-provider/core/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAmB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQxC,MAAM,eAAe,GAAG;IACpB,YAAY,EAAE,iBAAiB;IAC/B,gBAAgB,EAAE,qBAAqB;IACvC,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,mBAAmB;IACnC,gBAAgB,EAAE,qBAAqB;IACvC,oBAAoB,EAAE,yBAAyB;IAC/C,YAAY,EAAE,iBAAiB;IAC/B,eAAe,EAAE,oBAAoB;CAC/B,CAAC;AAEX;;GAEG;AACH,MAAM,OAAO,iBACT,SAAQ,iBAAyC;IADrD;;QA2BgC,oBAAe,GAAG,eAAe,CAAC;IAClE,CAAC;CAAA;AAxBU;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;uDACG;AAGjC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;2DACG;AAGrC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;2DACG;AAGrC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;yDACE;AAGnC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;2DACE;AAGrC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;+DACE;AAGzC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;uDACG;AAGjC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;0DACE;AAK/C,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,OAAO,CAAC;IACtD,QAAQ,EAAE,qBAAqB;IAC/B,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC","sourcesContent":["import { attr } from '@microsoft/fast-element';\nimport { DesignSystem } from '@microsoft/fast-foundation';\nimport { DesignTokensFor, LabelProviderBase } from '../base';\nimport {\n popupDismissLabel,\n numericDecrementLabel,\n numericIncrementLabel,\n popupIconErrorLabel,\n popupIconWarningLabel,\n popupIconInformationLabel,\n filterSearchLabel,\n filterNoResultsLabel\n} from './label-tokens';\nimport { styles } from '../base/styles';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-label-provider-core': LabelProviderCore;\n }\n}\n\nconst supportedLabels = {\n popupDismiss: popupDismissLabel,\n numericDecrement: numericDecrementLabel,\n numericIncrement: numericIncrementLabel,\n popupIconError: popupIconErrorLabel,\n popupIconWarning: popupIconWarningLabel,\n popupIconInformation: popupIconInformationLabel,\n filterSearch: filterSearchLabel,\n filterNoResults: filterNoResultsLabel\n} as const;\n\n/**\n * Core label provider for Nimble\n */\nexport class LabelProviderCore\n extends LabelProviderBase<typeof supportedLabels>\n implements DesignTokensFor<typeof supportedLabels> {\n @attr({ attribute: 'popup-dismiss' })\n public popupDismiss: string | undefined;\n\n @attr({ attribute: 'numeric-decrement' })\n public numericDecrement: string | undefined;\n\n @attr({ attribute: 'numeric-increment' })\n public numericIncrement: string | undefined;\n\n @attr({ attribute: 'popup-icon-error' })\n public popupIconError: string | undefined;\n\n @attr({ attribute: 'popup-icon-warning' })\n public popupIconWarning: string | undefined;\n\n @attr({ attribute: 'popup-icon-information' })\n public popupIconInformation: string | undefined;\n\n @attr({ attribute: 'filter-search' })\n public filterSearch: string | undefined;\n\n @attr({ attribute: 'filter-no-results' })\n public filterNoResults: string | undefined;\n\n protected override readonly supportedLabels = supportedLabels;\n}\n\nconst nimbleLabelProviderCore = LabelProviderCore.compose({\n baseName: 'label-provider-core',\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleLabelProviderCore());\nexport const labelProviderCoreTag = 'nimble-label-provider-core';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/label-provider/core/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAmB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EACH,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQxC,MAAM,eAAe,GAAG;IACpB,YAAY,EAAE,iBAAiB;IAC/B,gBAAgB,EAAE,qBAAqB;IACvC,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,mBAAmB;IACnC,gBAAgB,EAAE,qBAAqB;IACvC,oBAAoB,EAAE,yBAAyB;IAC/C,YAAY,EAAE,iBAAiB;IAC/B,eAAe,EAAE,oBAAoB;IACrC,OAAO,EAAE,YAAY;CACf,CAAC;AAEX;;GAEG;AACH,MAAM,OAAO,iBACT,SAAQ,iBAAyC;IADrD;;QA8BgC,oBAAe,GAAG,eAAe,CAAC;IAClE,CAAC;CAAA;AA3BU;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;uDACG;AAGjC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;2DACG;AAGrC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;2DACG;AAGrC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;yDACE;AAGnC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;2DACE;AAGrC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC;+DACE;AAGzC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;uDACG;AAGjC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;0DACE;AAGpC;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;kDACI;AAKvC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,OAAO,CAAC;IACtD,QAAQ,EAAE,qBAAqB;IAC/B,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,4BAA4B,CAAC","sourcesContent":["import { attr } from '@microsoft/fast-element';\nimport { DesignSystem } from '@microsoft/fast-foundation';\nimport { DesignTokensFor, LabelProviderBase } from '../base';\nimport {\n popupDismissLabel,\n numericDecrementLabel,\n numericIncrementLabel,\n popupIconErrorLabel,\n popupIconWarningLabel,\n popupIconInformationLabel,\n filterSearchLabel,\n filterNoResultsLabel,\n loadingLabel\n} from './label-tokens';\nimport { styles } from '../base/styles';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-label-provider-core': LabelProviderCore;\n }\n}\n\nconst supportedLabels = {\n popupDismiss: popupDismissLabel,\n numericDecrement: numericDecrementLabel,\n numericIncrement: numericIncrementLabel,\n popupIconError: popupIconErrorLabel,\n popupIconWarning: popupIconWarningLabel,\n popupIconInformation: popupIconInformationLabel,\n filterSearch: filterSearchLabel,\n filterNoResults: filterNoResultsLabel,\n loading: loadingLabel\n} as const;\n\n/**\n * Core label provider for Nimble\n */\nexport class LabelProviderCore\n extends LabelProviderBase<typeof supportedLabels>\n implements DesignTokensFor<typeof supportedLabels> {\n @attr({ attribute: 'popup-dismiss' })\n public popupDismiss: string | undefined;\n\n @attr({ attribute: 'numeric-decrement' })\n public numericDecrement: string | undefined;\n\n @attr({ attribute: 'numeric-increment' })\n public numericIncrement: string | undefined;\n\n @attr({ attribute: 'popup-icon-error' })\n public popupIconError: string | undefined;\n\n @attr({ attribute: 'popup-icon-warning' })\n public popupIconWarning: string | undefined;\n\n @attr({ attribute: 'popup-icon-information' })\n public popupIconInformation: string | undefined;\n\n @attr({ attribute: 'filter-search' })\n public filterSearch: string | undefined;\n\n @attr({ attribute: 'filter-no-results' })\n public filterNoResults: string | undefined;\n\n @attr({ attribute: 'loading' })\n public loading: string | undefined;\n\n protected override readonly supportedLabels = supportedLabels;\n}\n\nconst nimbleLabelProviderCore = LabelProviderCore.compose({\n baseName: 'label-provider-core',\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleLabelProviderCore());\nexport const labelProviderCoreTag = 'nimble-label-provider-core';\n"]}
@@ -6,6 +6,7 @@ export const coreLabelDefaults = {
6
6
  popupIconWarningLabel: 'Warning',
7
7
  popupIconInformationLabel: 'Information',
8
8
  filterSearchLabel: 'Search',
9
- filterNoResultsLabel: 'No items found'
9
+ filterNoResultsLabel: 'No items found',
10
+ loadingLabel: 'Loading…'
10
11
  };
11
12
  //# sourceMappingURL=label-token-defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"label-token-defaults.js","sourceRoot":"","sources":["../../../../src/label-provider/core/label-token-defaults.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACtE,iBAAiB,EAAE,OAAO;IAC1B,qBAAqB,EAAE,WAAW;IAClC,qBAAqB,EAAE,WAAW;IAClC,mBAAmB,EAAE,OAAO;IAC5B,qBAAqB,EAAE,SAAS;IAChC,yBAAyB,EAAE,aAAa;IACxC,iBAAiB,EAAE,QAAQ;IAC3B,oBAAoB,EAAE,gBAAgB;CACzC,CAAC","sourcesContent":["import type * as TokensNamespace from './label-tokens';\n\ntype TokenName = keyof typeof TokensNamespace;\n\nexport const coreLabelDefaults: { readonly [key in TokenName]: string } = {\n popupDismissLabel: 'Close',\n numericIncrementLabel: 'Increment',\n numericDecrementLabel: 'Decrement',\n popupIconErrorLabel: 'Error',\n popupIconWarningLabel: 'Warning',\n popupIconInformationLabel: 'Information',\n filterSearchLabel: 'Search',\n filterNoResultsLabel: 'No items found'\n};\n"]}
1
+ {"version":3,"file":"label-token-defaults.js","sourceRoot":"","sources":["../../../../src/label-provider/core/label-token-defaults.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACtE,iBAAiB,EAAE,OAAO;IAC1B,qBAAqB,EAAE,WAAW;IAClC,qBAAqB,EAAE,WAAW;IAClC,mBAAmB,EAAE,OAAO;IAC5B,qBAAqB,EAAE,SAAS;IAChC,yBAAyB,EAAE,aAAa;IACxC,iBAAiB,EAAE,QAAQ;IAC3B,oBAAoB,EAAE,gBAAgB;IACtC,YAAY,EAAE,UAAU;CAC3B,CAAC","sourcesContent":["import type * as TokensNamespace from './label-tokens';\n\ntype TokenName = keyof typeof TokensNamespace;\n\nexport const coreLabelDefaults: { readonly [key in TokenName]: string } = {\n popupDismissLabel: 'Close',\n numericIncrementLabel: 'Increment',\n numericDecrementLabel: 'Decrement',\n popupIconErrorLabel: 'Error',\n popupIconWarningLabel: 'Warning',\n popupIconInformationLabel: 'Information',\n filterSearchLabel: 'Search',\n filterNoResultsLabel: 'No items found',\n loadingLabel: 'Loading…'\n};\n"]}
@@ -7,3 +7,4 @@ export declare const popupIconWarningLabel: DesignToken<string>;
7
7
  export declare const popupIconInformationLabel: DesignToken<string>;
8
8
  export declare const filterSearchLabel: DesignToken<string>;
9
9
  export declare const filterNoResultsLabel: DesignToken<string>;
10
+ export declare const loadingLabel: DesignToken<string>;
@@ -32,4 +32,8 @@ export const filterNoResultsLabel = DesignToken.create({
32
32
  name: 'filter-no-results-label',
33
33
  cssCustomPropertyName: null
34
34
  }).withDefault(coreLabelDefaults.filterNoResultsLabel);
35
+ export const loadingLabel = DesignToken.create({
36
+ name: 'loading-label',
37
+ cssCustomPropertyName: null
38
+ }).withDefault(coreLabelDefaults.loadingLabel);
35
39
  //# sourceMappingURL=label-tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"label-tokens.js","sourceRoot":"","sources":["../../../../src/label-provider/core/label-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAS;IACxD,IAAI,EAAE,qBAAqB;IAC3B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC5D,IAAI,EAAE,yBAAyB;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC5D,IAAI,EAAE,yBAAyB;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC1D,IAAI,EAAE,wBAAwB;IAC9B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC5D,IAAI,EAAE,0BAA0B;IAChC,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC,MAAM,CAAS;IAChE,IAAI,EAAE,8BAA8B;IACpC,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAS;IACxD,IAAI,EAAE,qBAAqB;IAC3B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC3D,IAAI,EAAE,yBAAyB;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["import { DesignToken } from '@microsoft/fast-foundation';\nimport { coreLabelDefaults } from './label-token-defaults';\n\nexport const popupDismissLabel = DesignToken.create<string>({\n name: 'popup-dismiss-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupDismissLabel);\n\nexport const numericDecrementLabel = DesignToken.create<string>({\n name: 'numeric-decrement-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.numericDecrementLabel);\n\nexport const numericIncrementLabel = DesignToken.create<string>({\n name: 'numeric-increment-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.numericIncrementLabel);\n\nexport const popupIconErrorLabel = DesignToken.create<string>({\n name: 'popup-icon-error-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupIconErrorLabel);\n\nexport const popupIconWarningLabel = DesignToken.create<string>({\n name: 'popup-icon-warning-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupIconWarningLabel);\n\nexport const popupIconInformationLabel = DesignToken.create<string>({\n name: 'popup-icon-information-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupIconInformationLabel);\n\nexport const filterSearchLabel = DesignToken.create<string>({\n name: 'filter-search-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.filterSearchLabel);\n\nexport const filterNoResultsLabel = DesignToken.create<string>({\n name: 'filter-no-results-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.filterNoResultsLabel);\n"]}
1
+ {"version":3,"file":"label-tokens.js","sourceRoot":"","sources":["../../../../src/label-provider/core/label-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAS;IACxD,IAAI,EAAE,qBAAqB;IAC3B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC5D,IAAI,EAAE,yBAAyB;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC5D,IAAI,EAAE,yBAAyB;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC1D,IAAI,EAAE,wBAAwB;IAC9B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC5D,IAAI,EAAE,0BAA0B;IAChC,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC,MAAM,CAAS;IAChE,IAAI,EAAE,8BAA8B;IACpC,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAS;IACxD,IAAI,EAAE,qBAAqB;IAC3B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAS;IAC3D,IAAI,EAAE,yBAAyB;IAC/B,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAS;IACnD,IAAI,EAAE,eAAe;IACrB,qBAAqB,EAAE,IAAI;CAC9B,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC","sourcesContent":["import { DesignToken } from '@microsoft/fast-foundation';\nimport { coreLabelDefaults } from './label-token-defaults';\n\nexport const popupDismissLabel = DesignToken.create<string>({\n name: 'popup-dismiss-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupDismissLabel);\n\nexport const numericDecrementLabel = DesignToken.create<string>({\n name: 'numeric-decrement-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.numericDecrementLabel);\n\nexport const numericIncrementLabel = DesignToken.create<string>({\n name: 'numeric-increment-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.numericIncrementLabel);\n\nexport const popupIconErrorLabel = DesignToken.create<string>({\n name: 'popup-icon-error-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupIconErrorLabel);\n\nexport const popupIconWarningLabel = DesignToken.create<string>({\n name: 'popup-icon-warning-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupIconWarningLabel);\n\nexport const popupIconInformationLabel = DesignToken.create<string>({\n name: 'popup-icon-information-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.popupIconInformationLabel);\n\nexport const filterSearchLabel = DesignToken.create<string>({\n name: 'filter-search-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.filterSearchLabel);\n\nexport const filterNoResultsLabel = DesignToken.create<string>({\n name: 'filter-no-results-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.filterNoResultsLabel);\n\nexport const loadingLabel = DesignToken.create<string>({\n name: 'loading-label',\n cssCustomPropertyName: null\n}).withDefault(coreLabelDefaults.loadingLabel);\n"]}
@@ -41,6 +41,7 @@ export declare class ListOption extends FoundationListboxOption {
41
41
  /** @internal */
42
42
  get elementTextContent(): string;
43
43
  connectedCallback(): void;
44
+ private getListOptionOwner;
44
45
  private isListOptionOwner;
45
46
  }
46
47
  export declare const listOptionTag = "nimble-list-option";
@@ -47,9 +47,18 @@ export class ListOption extends FoundationListboxOption {
47
47
  }
48
48
  connectedCallback() {
49
49
  super.connectedCallback();
50
- if (this.isListOptionOwner(this.parentElement)) {
51
- this.parentElement.registerOption(this);
50
+ const owner = this.getListOptionOwner();
51
+ owner?.registerOption(this);
52
+ }
53
+ getListOptionOwner() {
54
+ let parent = this.parentElement;
55
+ while (parent) {
56
+ if (this.isListOptionOwner(parent)) {
57
+ return parent;
58
+ }
59
+ parent = parent.parentElement;
52
60
  }
61
+ return undefined;
53
62
  }
54
63
  isListOptionOwner(parent) {
55
64
  if (!parent) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/list-option/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,YAAY,EACZ,aAAa,IAAI,uBAAuB,EAC3C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,uBAAuB;IAAvD;;QAII;;;;;;;WAOG;QAEa,WAAM,GAAG,KAAK,CAAC;QAE/B;;;;;;WAMG;QAEI,mBAAc,GAAG,KAAK,CAAC;QAE9B;;;;;;;WAOG;QAEI,iBAAY,GAAG,KAAK,CAAC;QAE5B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IA0B/B,CAAC;IAxBG,gBAAgB;IAChB,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,WAAW;aAClB,aAAa,EAAE;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;aACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEe,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC3C;IACL,CAAC;IAEO,iBAAiB,CACrB,MAA0B;QAE1B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,OAAQ,MAA0B,CAAC,cAAc,KAAK,UAAU,CAAC;IAC5E,CAAC;CACJ;AAnDmB;IADf,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;0CACK;AAUxB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;kDAC1B;AAWvB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gDAC1B;AAIrB;IADN,UAAU;+CACgB;AA4B/B,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC;IACxC,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,uBAAuB;IAClC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC","sourcesContent":["import {\n DesignSystem,\n ListboxOption as FoundationListboxOption\n} from '@microsoft/fast-foundation';\nimport { observable, attr } from '@microsoft/fast-element';\nimport { styles } from './styles';\nimport { template } from './template';\nimport type { ListOptionOwner } from '../patterns/dropdown/types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-list-option': ListOption;\n }\n}\n\n/**\n * A nimble-styled HTML listbox option\n */\nexport class ListOption extends FoundationListboxOption {\n /** @internal */\n public contentSlot!: HTMLSlotElement;\n\n /**\n * The hidden state of the element.\n *\n * @public\n * @defaultValue - false\n * @remarks\n * HTML Attribute: hidden\n */\n @attr({ mode: 'boolean' })\n public override hidden = false;\n\n /**\n * @internal\n * This attribute is required to allow use-cases that offer dynamic filtering\n * (like the Select) to visually hide options that are filtered out, but still\n * allow users to use the native 'hidden' attribute without it being affected\n * by the filtering process.\n */\n @attr({ attribute: 'visually-hidden', mode: 'boolean' })\n public visuallyHidden = false;\n\n /**\n * @internal\n * This attribute is used to control the visual selected state of an option. This\n * is handled independently of the public 'selected' attribute, as 'selected' is\n * representative of the current value of the container control. However, while\n * a dropdown is open users can navigate through the options (requiring visual\n * updates) without changing the value of the container control.\n */\n @attr({ attribute: 'active-option', mode: 'boolean' })\n public activeOption = false;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /** @internal */\n public get elementTextContent(): string {\n return this.contentSlot\n .assignedNodes()\n .map(node => node.textContent?.trim())\n .join(' ');\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n if (this.isListOptionOwner(this.parentElement)) {\n this.parentElement.registerOption(this);\n }\n }\n\n private isListOptionOwner(\n parent: HTMLElement | null\n ): parent is ListOptionOwner {\n if (!parent) {\n return false;\n }\n\n return typeof (parent as ListOptionOwner).registerOption === 'function';\n }\n}\n\nconst nimbleListOption = ListOption.compose({\n baseName: 'list-option',\n baseClass: FoundationListboxOption,\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('nimble').register(nimbleListOption());\nexport const listOptionTag = 'nimble-list-option';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/list-option/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,YAAY,EACZ,aAAa,IAAI,uBAAuB,EAC3C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,uBAAuB;IAAvD;;QAII;;;;;;;WAOG;QAEa,WAAM,GAAG,KAAK,CAAC;QAE/B;;;;;;WAMG;QAEI,mBAAc,GAAG,KAAK,CAAC;QAE9B;;;;;;;WAOG;QAEI,iBAAY,GAAG,KAAK,CAAC;QAE5B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IAuC/B,CAAC;IArCG,gBAAgB;IAChB,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,WAAW;aAClB,aAAa,EAAE;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;aACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEe,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,kBAAkB;QACtB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAEhC,OAAO,MAAM,EAAE;YACX,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;gBAChC,OAAO,MAAM,CAAC;aACjB;YAED,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;SACjC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,iBAAiB,CACrB,MAA0B;QAE1B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,OAAQ,MAA0B,CAAC,cAAc,KAAK,UAAU,CAAC;IAC5E,CAAC;CACJ;AAhEmB;IADf,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;0CACK;AAUxB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;kDAC1B;AAWvB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gDAC1B;AAIrB;IADN,UAAU;+CACgB;AAyC/B,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC;IACxC,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,uBAAuB;IAClC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC","sourcesContent":["import {\n DesignSystem,\n ListboxOption as FoundationListboxOption\n} from '@microsoft/fast-foundation';\nimport { observable, attr } from '@microsoft/fast-element';\nimport { styles } from './styles';\nimport { template } from './template';\nimport type { ListOptionOwner } from '../patterns/dropdown/types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-list-option': ListOption;\n }\n}\n\n/**\n * A nimble-styled HTML listbox option\n */\nexport class ListOption extends FoundationListboxOption {\n /** @internal */\n public contentSlot!: HTMLSlotElement;\n\n /**\n * The hidden state of the element.\n *\n * @public\n * @defaultValue - false\n * @remarks\n * HTML Attribute: hidden\n */\n @attr({ mode: 'boolean' })\n public override hidden = false;\n\n /**\n * @internal\n * This attribute is required to allow use-cases that offer dynamic filtering\n * (like the Select) to visually hide options that are filtered out, but still\n * allow users to use the native 'hidden' attribute without it being affected\n * by the filtering process.\n */\n @attr({ attribute: 'visually-hidden', mode: 'boolean' })\n public visuallyHidden = false;\n\n /**\n * @internal\n * This attribute is used to control the visual selected state of an option. This\n * is handled independently of the public 'selected' attribute, as 'selected' is\n * representative of the current value of the container control. However, while\n * a dropdown is open users can navigate through the options (requiring visual\n * updates) without changing the value of the container control.\n */\n @attr({ attribute: 'active-option', mode: 'boolean' })\n public activeOption = false;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /** @internal */\n public get elementTextContent(): string {\n return this.contentSlot\n .assignedNodes()\n .map(node => node.textContent?.trim())\n .join(' ');\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n const owner = this.getListOptionOwner();\n owner?.registerOption(this);\n }\n\n private getListOptionOwner(): ListOptionOwner | undefined {\n let parent = this.parentElement;\n\n while (parent) {\n if (this.isListOptionOwner(parent)) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return undefined;\n }\n\n private isListOptionOwner(\n parent: HTMLElement | null\n ): parent is ListOptionOwner {\n if (!parent) {\n return false;\n }\n\n return typeof (parent as ListOptionOwner).registerOption === 'function';\n }\n}\n\nconst nimbleListOption = ListOption.compose({\n baseName: 'list-option',\n baseClass: FoundationListboxOption,\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('nimble').register(nimbleListOption());\nexport const listOptionTag = 'nimble-list-option';\n"]}
@@ -32,6 +32,7 @@ export declare class Select extends FormAssociatedSelect implements ErrorPattern
32
32
  errorVisible: boolean;
33
33
  filterMode: FilterMode;
34
34
  clearable: boolean;
35
+ loadingVisible: boolean;
35
36
  /**
36
37
  * @internal
37
38
  */
@@ -160,7 +161,7 @@ export declare class Select extends FormAssociatedSelect implements ErrorPattern
160
161
  /**
161
162
  * @internal
162
163
  */
163
- inputClickHandler(e: MouseEvent): void;
164
+ ignoreClickHandler(e: MouseEvent): void;
164
165
  /**
165
166
  * @internal
166
167
  */
@@ -302,6 +303,7 @@ export declare class Select extends FormAssociatedSelect implements ErrorPattern
302
303
  */
303
304
  private setProxyOptions;
304
305
  private filterChanged;
306
+ private emitFilterInputEvent;
305
307
  private maxHeightChanged;
306
308
  private initializeOpenState;
307
309
  private updateListboxMaxHeightCssVariable;
@@ -31,6 +31,7 @@ export class Select extends FormAssociatedSelect {
31
31
  this.errorVisible = false;
32
32
  this.filterMode = FilterMode.none;
33
33
  this.clearable = false;
34
+ this.loadingVisible = false;
34
35
  /**
35
36
  * @internal
36
37
  */
@@ -292,8 +293,8 @@ export class Select extends FormAssociatedSelect {
292
293
  /**
293
294
  * @internal
294
295
  */
295
- inputClickHandler(e) {
296
- e.stopPropagation(); // clicking in filter input shouldn't close dropdown
296
+ ignoreClickHandler(e) {
297
+ e.stopPropagation();
297
298
  }
298
299
  /**
299
300
  * @internal
@@ -326,19 +327,24 @@ export class Select extends FormAssociatedSelect {
326
327
  */
327
328
  inputHandler(e) {
328
329
  this.filter = this.filterInput?.value ?? '';
329
- this.filterOptions();
330
- const enabledOptions = this.filteredOptions.filter(o => !o.disabled);
331
- let activeOptionIndex = this.filter !== ''
332
- ? this.openActiveIndex ?? this.selectedIndex
333
- : this.selectedIndex;
334
- if (enabledOptions.length > 0
335
- && !enabledOptions.find(o => o === this.options[activeOptionIndex])) {
336
- activeOptionIndex = this.options.indexOf(enabledOptions[0]);
337
- }
338
- else if (enabledOptions.length === 0) {
339
- activeOptionIndex = -1;
340
- }
341
- this.setActiveOption(activeOptionIndex);
330
+ if (this.filterMode === FilterMode.standard) {
331
+ this.filterOptions();
332
+ const enabledOptions = this.filteredOptions.filter(o => !o.disabled);
333
+ let activeOptionIndex = this.filter !== ''
334
+ ? this.openActiveIndex ?? this.selectedIndex
335
+ : this.selectedIndex;
336
+ if (enabledOptions.length > 0
337
+ && !enabledOptions.find(o => o === this.options[activeOptionIndex])) {
338
+ activeOptionIndex = this.options.indexOf(enabledOptions[0]);
339
+ }
340
+ else if (enabledOptions.length === 0) {
341
+ activeOptionIndex = -1;
342
+ }
343
+ this.setActiveOption(activeOptionIndex);
344
+ }
345
+ if (this.filterMode !== FilterMode.none) {
346
+ this.emitFilterInputEvent();
347
+ }
342
348
  if (e.inputType.includes('deleteContent') || !this.filter.length) {
343
349
  return true;
344
350
  }
@@ -614,6 +620,9 @@ export class Select extends FormAssociatedSelect {
614
620
  if (this.filterInput) {
615
621
  this.filterInput.value = '';
616
622
  }
623
+ if (this.filterMode !== FilterMode.none) {
624
+ this.emitFilterInputEvent();
625
+ }
617
626
  this.ariaControls = '';
618
627
  this.ariaExpanded = 'false';
619
628
  }
@@ -812,7 +821,9 @@ export class Select extends FormAssociatedSelect {
812
821
  if (option.hidden) {
813
822
  return true;
814
823
  }
815
- return !this.filterMatchesText(option.text);
824
+ return this.filterMode === FilterMode.standard
825
+ ? !this.filterMatchesText(option.text)
826
+ : false;
816
827
  }
817
828
  filterMatchesText(text) {
818
829
  const filter = this.filter.toLowerCase();
@@ -911,6 +922,12 @@ export class Select extends FormAssociatedSelect {
911
922
  filterChanged() {
912
923
  this.filterOptions();
913
924
  }
925
+ emitFilterInputEvent() {
926
+ const eventDetail = {
927
+ filterText: this.filter
928
+ };
929
+ this.$emit('filter-input', eventDetail, { bubbles: true });
930
+ }
914
931
  maxHeightChanged() {
915
932
  this.updateListboxMaxHeightCssVariable();
916
933
  }
@@ -945,6 +962,9 @@ __decorate([
945
962
  __decorate([
946
963
  attr({ attribute: 'clearable', mode: 'boolean' })
947
964
  ], Select.prototype, "clearable", void 0);
965
+ __decorate([
966
+ attr({ attribute: 'loading-visible', mode: 'boolean' })
967
+ ], Select.prototype, "loadingVisible", void 0);
948
968
  __decorate([
949
969
  observable
950
970
  ], Select.prototype, "displayPlaceholder", void 0);