@wcardinal/wcardinal-ui 0.449.0 → 0.450.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.
Files changed (37) hide show
  1. package/dist/types/wcardinal/ui/d-dropdown-base.d.ts +2 -0
  2. package/dist/types/wcardinal/ui/d-menu-items.d.ts +6 -0
  3. package/dist/types/wcardinal/ui/d-select-multiple.d.ts +1 -1
  4. package/dist/types/wcardinal/ui/d-select.d.ts +1 -1
  5. package/dist/types/wcardinal/ui/index.d.ts +1 -0
  6. package/dist/types/wcardinal/ui/util/dynamic-atlas.d.ts +1 -0
  7. package/dist/wcardinal/ui/d-dropdown-base.js +30 -24
  8. package/dist/wcardinal/ui/d-dropdown-base.js.map +1 -1
  9. package/dist/wcardinal/ui/d-menu-items.js +36 -0
  10. package/dist/wcardinal/ui/d-menu-items.js.map +1 -0
  11. package/dist/wcardinal/ui/d-select-multiple.js +2 -2
  12. package/dist/wcardinal/ui/d-select-multiple.js.map +1 -1
  13. package/dist/wcardinal/ui/d-select.js +9 -21
  14. package/dist/wcardinal/ui/d-select.js.map +1 -1
  15. package/dist/wcardinal/ui/index.js +1 -0
  16. package/dist/wcardinal/ui/index.js.map +1 -1
  17. package/dist/wcardinal/ui/util/dynamic-atlas.js +3 -0
  18. package/dist/wcardinal/ui/util/dynamic-atlas.js.map +1 -1
  19. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js +6 -1
  20. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlases.js.map +1 -1
  21. package/dist/wcardinal-ui-theme-dark-en-us.js +1 -1
  22. package/dist/wcardinal-ui-theme-dark-en-us.min.js +1 -1
  23. package/dist/wcardinal-ui-theme-dark-ja-jp.js +1 -1
  24. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +1 -1
  25. package/dist/wcardinal-ui-theme-dark.js +1 -1
  26. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  27. package/dist/wcardinal-ui-theme-white-en-us.js +1 -1
  28. package/dist/wcardinal-ui-theme-white-en-us.min.js +1 -1
  29. package/dist/wcardinal-ui-theme-white-ja-jp.js +1 -1
  30. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +1 -1
  31. package/dist/wcardinal-ui-theme-white.js +1 -1
  32. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  33. package/dist/wcardinal-ui.cjs.js +84 -47
  34. package/dist/wcardinal-ui.js +84 -47
  35. package/dist/wcardinal-ui.min.js +2 -2
  36. package/dist/wcardinal-ui.min.js.map +1 -1
  37. package/package.json +1 -1
@@ -59,5 +59,7 @@ export declare class DDropdownBase<VALUE = unknown, TEXT_VALUE = string, THEME e
59
59
  protected onKeyDownArrowDown(e: KeyboardEvent): boolean;
60
60
  protected onActivate(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void;
61
61
  open(): void;
62
+ protected onMenuOpening(menu: DMenu<VALUE>): void;
63
+ protected onMenuOpened(menu: DMenu<VALUE>): void;
62
64
  close(): void;
63
65
  }
@@ -0,0 +1,6 @@
1
+ import { DMenu } from "./d-menu";
2
+ import { DMenuItem } from "./d-menu-item";
3
+ export declare class DMenuItems {
4
+ static each<VALUE>(menu: DMenu<VALUE>, iteratee: (item: DMenuItem<VALUE>) => boolean | void): DMenuItem<VALUE> | null;
5
+ static find<VALUE>(menu: DMenu<VALUE>, value: VALUE | null): DMenuItem<VALUE> | null;
6
+ }
@@ -45,7 +45,7 @@ export declare class DSelectMultiple<VALUE = unknown, THEME extends DThemeSelect
45
45
  protected onMenuSelect(value: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void;
46
46
  protected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void;
47
47
  protected onValueChange(newValues: VALUE[], oldValues: VALUE[], items: Array<DMenuItem<VALUE>>): void;
48
- open(): void;
48
+ protected onMenuOpening(menu: DMenu<VALUE>): void;
49
49
  /**
50
50
  * Returns a selected value or null.
51
51
  */
@@ -45,7 +45,7 @@ export declare class DSelect<VALUE = unknown, THEME extends DThemeSelect<VALUE>
45
45
  protected onMenuSelect(newValue: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void;
46
46
  protected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void;
47
47
  protected onValueChange(newValue: VALUE | null, oldValue: VALUE | null, item: DMenuItem<VALUE> | null): void;
48
- protected findMenuItem(menu: DMenu<VALUE>, value: VALUE | null): DMenuItem<VALUE> | null;
48
+ protected onMenuOpening(menu: DMenu<VALUE>): void;
49
49
  /**
50
50
  * Returns a selected value or null.
51
51
  */
@@ -440,6 +440,7 @@ export * from "./d-menu-item-space-is-compatible";
440
440
  export * from "./d-menu-item-space";
441
441
  export * from "./d-menu-item-text";
442
442
  export * from "./d-menu-item";
443
+ export * from "./d-menu-items";
443
444
  export * from "./d-menu-opener";
444
445
  export * from "./d-menu-sided-content";
445
446
  export * from "./d-menu-sided-item-check";
@@ -18,6 +18,7 @@ export declare class DynamicAtlas {
18
18
  end(): void;
19
19
  repack(forcibly?: boolean): void;
20
20
  get(id: string): DynamicAtlasItem | null;
21
+ contains(id: string): boolean;
21
22
  set(id: string, item: DynamicAtlasItem): DynamicAtlasItem | undefined;
22
23
  toDirty(): void;
23
24
  getDefaultTexture(): Texture;
@@ -92,35 +92,41 @@ var DDropdownBase = /** @class */ (function (_super) {
92
92
  this.open();
93
93
  };
94
94
  DDropdownBase.prototype.open = function () {
95
- var _this = this;
96
95
  var menu = this.menu;
97
96
  if (menu.isHidden()) {
98
- // In the case that the menu is created elsewhere,
99
- // the menu might be opened by other UI elements
100
- // and the `select` event might be triggered. In
101
- // that case, we are not supposed to catct that
102
- // `select` event. This is why the `select` event
103
- // handler is registered here. Instead of the
104
- // initialization time.
105
- var onMenuSelectBound = this._onMenuSelectBound;
106
- if (onMenuSelectBound == null) {
107
- onMenuSelectBound = function (value, item, m) {
108
- _this.onMenuSelect(value, item, m);
109
- };
110
- this._onMenuSelectBound = onMenuSelectBound;
111
- }
112
- var onMenuCloseBound = this._onMenuCloseBound;
113
- if (onMenuCloseBound == null) {
114
- onMenuCloseBound = function () {
115
- _this.onMenuClose(_this._menu);
116
- };
117
- }
118
- menu.on("select", onMenuSelectBound);
119
- menu.on("close", onMenuCloseBound);
97
+ this.onMenuOpening(menu);
120
98
  menu.open(this);
121
- this.emit("open", menu, this);
99
+ this.onMenuOpened(menu);
122
100
  }
123
101
  };
102
+ DDropdownBase.prototype.onMenuOpening = function (menu) {
103
+ var _this = this;
104
+ // In the case that the menu is created elsewhere,
105
+ // the menu might be opened by other UI elements
106
+ // and the `select` event might be triggered. In
107
+ // that case, we are not supposed to catch that
108
+ // `select` event. This is why the `select` event
109
+ // handler is registered here. Instead of the
110
+ // initialization time.
111
+ var onMenuSelectBound = this._onMenuSelectBound;
112
+ if (onMenuSelectBound == null) {
113
+ onMenuSelectBound = function (value, item, m) {
114
+ _this.onMenuSelect(value, item, m);
115
+ };
116
+ this._onMenuSelectBound = onMenuSelectBound;
117
+ }
118
+ var onMenuCloseBound = this._onMenuCloseBound;
119
+ if (onMenuCloseBound == null) {
120
+ onMenuCloseBound = function () {
121
+ _this.onMenuClose(_this._menu);
122
+ };
123
+ }
124
+ menu.on("select", onMenuSelectBound);
125
+ menu.on("close", onMenuCloseBound);
126
+ };
127
+ DDropdownBase.prototype.onMenuOpened = function (menu) {
128
+ this.emit("open", menu, this);
129
+ };
124
130
  DDropdownBase.prototype.close = function () {
125
131
  this.menu.close();
126
132
  };
@@ -1 +1 @@
1
- {"version":3,"file":"d-dropdown-base.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dropdown-base.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { InteractionEvent } from \"pixi.js\";\nimport {\n\tDButtonBase,\n\tDButtonBaseEvents,\n\tDButtonBaseOptions,\n\tDThemeButtonBase\n} from \"./d-button-base\";\nimport { DMenu, DMenuOptions, DThemeMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DOnOptions } from \"./d-on-options\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\n\n/**\n * {@link DDropdownBase} events.\n */\nexport interface DDropdownBaseEvents<VALUE, TEXT_VALUE, EMITTER>\n\textends DButtonBaseEvents<VALUE, EMITTER> {\n\t/**\n\t * Triggered when a menu item is selected.\n\t *\n\t * @param value a value of a selected menu item\n\t * @param item a selected menu item\n\t * @param emitter an emitter\n\t */\n\tselect(value: VALUE, item: DMenuItem<VALUE>, emitter: EMITTER): void;\n\n\t/**\n\t * Triggered when a menu is opened.\n\t */\n\topen(menu: DMenu<VALUE>, emitter: EMITTER): void;\n}\n\n/**\n * {@link DDropdownBase} \"on\" options.\n */\nexport interface DDropdownBaseOnOptions<VALUE, TEXT_VALUE, EMITTER>\n\textends Partial<DDropdownBaseEvents<VALUE, TEXT_VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DDropdownBase} options.\n */\nexport interface DDropdownBaseOptions<\n\tVALUE = unknown,\n\tTEXT_VALUE = string,\n\tTHEME extends DThemeDropdownBase<TEXT_VALUE> = DThemeDropdownBase<TEXT_VALUE>,\n\tEMITTER = any\n> extends DButtonBaseOptions<TEXT_VALUE, THEME, EMITTER> {\n\t/**\n\t * Menu options.\n\t */\n\tmenu?: DMenuOptions<VALUE> | DMenu<VALUE>;\n\n\ton?: DDropdownBaseOnOptions<VALUE, TEXT_VALUE, EMITTER>;\n}\n\n/**\n * {@link DDropdownBase} theme.\n */\nexport interface DThemeDropdownBase<TEXT_VALUE = unknown> extends DThemeButtonBase<TEXT_VALUE> {}\n\n/**\n * A dropdown base class.\n */\nexport class DDropdownBase<\n\tVALUE = unknown,\n\tTEXT_VALUE = string,\n\tTHEME extends DThemeDropdownBase<TEXT_VALUE> = DThemeDropdownBase<TEXT_VALUE>,\n\tOPTIONS extends DDropdownBaseOptions<VALUE, TEXT_VALUE, THEME> = DDropdownBaseOptions<\n\t\tVALUE,\n\t\tTEXT_VALUE,\n\t\tTHEME\n\t>\n> extends DButtonBase<TEXT_VALUE, THEME, OPTIONS> {\n\tprotected _menu?: DMenu<VALUE>;\n\tprotected _onMenuSelectBound?: (\n\t\tselected: VALUE,\n\t\titem: DMenuItem<VALUE>,\n\t\tmenu: DMenu<VALUE>\n\t) => void;\n\tprotected _onMenuCloseBound?: () => void;\n\n\tprotected onMenuSelect(value: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void {\n\t\tthis.emit(\"select\", value, item, this);\n\t}\n\n\tprotected onMenuClose(menu?: DMenu<VALUE>): void {\n\t\tif (menu) {\n\t\t\tconst onMenuSelectBound = this._onMenuSelectBound;\n\t\t\tif (onMenuSelectBound) {\n\t\t\t\tmenu.off(\"select\", onMenuSelectBound);\n\t\t\t}\n\t\t\tconst onMenuCloseBound = this._onMenuCloseBound;\n\t\t\tif (onMenuCloseBound) {\n\t\t\t\tmenu.off(\"close\", onMenuCloseBound);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected toMenu(theme: THEME, options?: OPTIONS): DMenu<VALUE> {\n\t\tconst menu = options?.menu;\n\t\tif (menu instanceof DMenu) {\n\t\t\treturn menu;\n\t\t}\n\t\treturn new DMenu<VALUE>(this.toMenuOptions(theme, menu));\n\t}\n\n\tprotected toMenuOptions(\n\t\ttheme: THEME,\n\t\toptions?: DMenuOptions<VALUE>\n\t): DMenuOptions<VALUE, DThemeMenu> {\n\t\tif (options) {\n\t\t\tif (options.fit == null) {\n\t\t\t\toptions.fit = true;\n\t\t\t}\n\t\t\treturn options;\n\t\t}\n\t\treturn {\n\t\t\tfit: true\n\t\t};\n\t}\n\n\tget menu(): DMenu<VALUE> {\n\t\tlet result = this._menu;\n\t\tif (result == null) {\n\t\t\tresult = this.toMenu(this.theme, this._options);\n\t\t\tthis._menu = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tset menu(newMenu: DMenu<VALUE>) {\n\t\tconst oldMenu = this._menu;\n\t\tif (oldMenu != newMenu) {\n\t\t\tthis._menu = newMenu;\n\t\t\tthis.onMenuReplaced(newMenu, oldMenu);\n\t\t}\n\t}\n\n\tprotected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void {\n\t\tif (oldMenu != null) {\n\t\t\tthis.onMenuClose(oldMenu);\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DDropdownBase\";\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tif (UtilKeyboardEvent.isArrowDownKey(e)) {\n\t\t\tthis.onKeyDownArrowDown(e);\n\t\t}\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected onKeyDownArrowDown(e: KeyboardEvent): boolean {\n\t\tif (this.state.isActionable && this.state.isFocused) {\n\t\t\tthis.activate(e);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected onActivate(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void {\n\t\tsuper.onActivate(e);\n\t\tthis.open();\n\t}\n\n\topen(): void {\n\t\tconst menu = this.menu;\n\t\tif (menu.isHidden()) {\n\t\t\t// In the case that the menu is created elsewhere,\n\t\t\t// the menu might be opened by other UI elements\n\t\t\t// and the `select` event might be triggered. In\n\t\t\t// that case, we are not supposed to catct that\n\t\t\t// `select` event. This is why the `select` event\n\t\t\t// handler is registered here. Instead of the\n\t\t\t// initialization time.\n\t\t\tlet onMenuSelectBound = this._onMenuSelectBound;\n\t\t\tif (onMenuSelectBound == null) {\n\t\t\t\tonMenuSelectBound = (\n\t\t\t\t\tvalue: VALUE,\n\t\t\t\t\titem: DMenuItem<VALUE>,\n\t\t\t\t\tm: DMenu<VALUE>\n\t\t\t\t): void => {\n\t\t\t\t\tthis.onMenuSelect(value, item, m);\n\t\t\t\t};\n\t\t\t\tthis._onMenuSelectBound = onMenuSelectBound;\n\t\t\t}\n\t\t\tlet onMenuCloseBound = this._onMenuCloseBound;\n\t\t\tif (onMenuCloseBound == null) {\n\t\t\t\tonMenuCloseBound = (): void => {\n\t\t\t\t\tthis.onMenuClose(this._menu);\n\t\t\t\t};\n\t\t\t}\n\t\t\tmenu.on(\"select\", onMenuSelectBound);\n\t\t\tmenu.on(\"close\", onMenuCloseBound);\n\t\t\tmenu.open(this);\n\t\t\tthis.emit(\"open\", menu, this);\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tthis.menu.close();\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dropdown-base.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dropdown-base.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { InteractionEvent } from \"pixi.js\";\nimport {\n\tDButtonBase,\n\tDButtonBaseEvents,\n\tDButtonBaseOptions,\n\tDThemeButtonBase\n} from \"./d-button-base\";\nimport { DMenu, DMenuOptions, DThemeMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DOnOptions } from \"./d-on-options\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\n\n/**\n * {@link DDropdownBase} events.\n */\nexport interface DDropdownBaseEvents<VALUE, TEXT_VALUE, EMITTER>\n\textends DButtonBaseEvents<VALUE, EMITTER> {\n\t/**\n\t * Triggered when a menu item is selected.\n\t *\n\t * @param value a value of a selected menu item\n\t * @param item a selected menu item\n\t * @param emitter an emitter\n\t */\n\tselect(value: VALUE, item: DMenuItem<VALUE>, emitter: EMITTER): void;\n\n\t/**\n\t * Triggered when a menu is opened.\n\t */\n\topen(menu: DMenu<VALUE>, emitter: EMITTER): void;\n}\n\n/**\n * {@link DDropdownBase} \"on\" options.\n */\nexport interface DDropdownBaseOnOptions<VALUE, TEXT_VALUE, EMITTER>\n\textends Partial<DDropdownBaseEvents<VALUE, TEXT_VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DDropdownBase} options.\n */\nexport interface DDropdownBaseOptions<\n\tVALUE = unknown,\n\tTEXT_VALUE = string,\n\tTHEME extends DThemeDropdownBase<TEXT_VALUE> = DThemeDropdownBase<TEXT_VALUE>,\n\tEMITTER = any\n> extends DButtonBaseOptions<TEXT_VALUE, THEME, EMITTER> {\n\t/**\n\t * Menu options.\n\t */\n\tmenu?: DMenuOptions<VALUE> | DMenu<VALUE>;\n\n\ton?: DDropdownBaseOnOptions<VALUE, TEXT_VALUE, EMITTER>;\n}\n\n/**\n * {@link DDropdownBase} theme.\n */\nexport interface DThemeDropdownBase<TEXT_VALUE = unknown> extends DThemeButtonBase<TEXT_VALUE> {}\n\n/**\n * A dropdown base class.\n */\nexport class DDropdownBase<\n\tVALUE = unknown,\n\tTEXT_VALUE = string,\n\tTHEME extends DThemeDropdownBase<TEXT_VALUE> = DThemeDropdownBase<TEXT_VALUE>,\n\tOPTIONS extends DDropdownBaseOptions<VALUE, TEXT_VALUE, THEME> = DDropdownBaseOptions<\n\t\tVALUE,\n\t\tTEXT_VALUE,\n\t\tTHEME\n\t>\n> extends DButtonBase<TEXT_VALUE, THEME, OPTIONS> {\n\tprotected _menu?: DMenu<VALUE>;\n\tprotected _onMenuSelectBound?: (\n\t\tselected: VALUE,\n\t\titem: DMenuItem<VALUE>,\n\t\tmenu: DMenu<VALUE>\n\t) => void;\n\tprotected _onMenuCloseBound?: () => void;\n\n\tprotected onMenuSelect(value: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void {\n\t\tthis.emit(\"select\", value, item, this);\n\t}\n\n\tprotected onMenuClose(menu?: DMenu<VALUE>): void {\n\t\tif (menu) {\n\t\t\tconst onMenuSelectBound = this._onMenuSelectBound;\n\t\t\tif (onMenuSelectBound) {\n\t\t\t\tmenu.off(\"select\", onMenuSelectBound);\n\t\t\t}\n\t\t\tconst onMenuCloseBound = this._onMenuCloseBound;\n\t\t\tif (onMenuCloseBound) {\n\t\t\t\tmenu.off(\"close\", onMenuCloseBound);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected toMenu(theme: THEME, options?: OPTIONS): DMenu<VALUE> {\n\t\tconst menu = options?.menu;\n\t\tif (menu instanceof DMenu) {\n\t\t\treturn menu;\n\t\t}\n\t\treturn new DMenu<VALUE>(this.toMenuOptions(theme, menu));\n\t}\n\n\tprotected toMenuOptions(\n\t\ttheme: THEME,\n\t\toptions?: DMenuOptions<VALUE>\n\t): DMenuOptions<VALUE, DThemeMenu> {\n\t\tif (options) {\n\t\t\tif (options.fit == null) {\n\t\t\t\toptions.fit = true;\n\t\t\t}\n\t\t\treturn options;\n\t\t}\n\t\treturn {\n\t\t\tfit: true\n\t\t};\n\t}\n\n\tget menu(): DMenu<VALUE> {\n\t\tlet result = this._menu;\n\t\tif (result == null) {\n\t\t\tresult = this.toMenu(this.theme, this._options);\n\t\t\tthis._menu = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tset menu(newMenu: DMenu<VALUE>) {\n\t\tconst oldMenu = this._menu;\n\t\tif (oldMenu != newMenu) {\n\t\t\tthis._menu = newMenu;\n\t\t\tthis.onMenuReplaced(newMenu, oldMenu);\n\t\t}\n\t}\n\n\tprotected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void {\n\t\tif (oldMenu != null) {\n\t\t\tthis.onMenuClose(oldMenu);\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DDropdownBase\";\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tif (UtilKeyboardEvent.isArrowDownKey(e)) {\n\t\t\tthis.onKeyDownArrowDown(e);\n\t\t}\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected onKeyDownArrowDown(e: KeyboardEvent): boolean {\n\t\tif (this.state.isActionable && this.state.isFocused) {\n\t\t\tthis.activate(e);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected onActivate(e?: InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent): void {\n\t\tsuper.onActivate(e);\n\t\tthis.open();\n\t}\n\n\topen(): void {\n\t\tconst menu = this.menu;\n\t\tif (menu.isHidden()) {\n\t\t\tthis.onMenuOpening(menu);\n\t\t\tmenu.open(this);\n\t\t\tthis.onMenuOpened(menu);\n\t\t}\n\t}\n\n\tprotected onMenuOpening(menu: DMenu<VALUE>): void {\n\t\t// In the case that the menu is created elsewhere,\n\t\t// the menu might be opened by other UI elements\n\t\t// and the `select` event might be triggered. In\n\t\t// that case, we are not supposed to catch that\n\t\t// `select` event. This is why the `select` event\n\t\t// handler is registered here. Instead of the\n\t\t// initialization time.\n\t\tlet onMenuSelectBound = this._onMenuSelectBound;\n\t\tif (onMenuSelectBound == null) {\n\t\t\tonMenuSelectBound = (value: VALUE, item: DMenuItem<VALUE>, m: DMenu<VALUE>): void => {\n\t\t\t\tthis.onMenuSelect(value, item, m);\n\t\t\t};\n\t\t\tthis._onMenuSelectBound = onMenuSelectBound;\n\t\t}\n\t\tlet onMenuCloseBound = this._onMenuCloseBound;\n\t\tif (onMenuCloseBound == null) {\n\t\t\tonMenuCloseBound = (): void => {\n\t\t\t\tthis.onMenuClose(this._menu);\n\t\t\t};\n\t\t}\n\t\tmenu.on(\"select\", onMenuSelectBound);\n\t\tmenu.on(\"close\", onMenuCloseBound);\n\t}\n\n\tprotected onMenuOpened(menu: DMenu<VALUE>): void {\n\t\tthis.emit(\"open\", menu, this);\n\t}\n\n\tclose(): void {\n\t\tthis.menu.close();\n\t}\n}\n"]}
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Copyright (C) 2019 Toshiba Corporation
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { DMenuItem } from "./d-menu-item";
6
+ import { DMenuItemMenu } from "./d-menu-item-menu";
7
+ var DMenuItems = /** @class */ (function () {
8
+ function DMenuItems() {
9
+ }
10
+ DMenuItems.each = function (menu, iteratee) {
11
+ var children = menu.children;
12
+ for (var i = 0, imax = children.length; i < imax; ++i) {
13
+ var child = children[i];
14
+ if (child instanceof DMenuItemMenu) {
15
+ var result = this.each(child.menu, iteratee);
16
+ if (result != null) {
17
+ return result;
18
+ }
19
+ }
20
+ else if (child instanceof DMenuItem) {
21
+ if (iteratee(child)) {
22
+ return child;
23
+ }
24
+ }
25
+ }
26
+ return null;
27
+ };
28
+ DMenuItems.find = function (menu, value) {
29
+ return this.each(menu, function (item) {
30
+ return item.value === value;
31
+ });
32
+ };
33
+ return DMenuItems;
34
+ }());
35
+ export { DMenuItems };
36
+ //# sourceMappingURL=d-menu-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d-menu-items.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-items.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;IAAA;IA2BA,CAAC;IA1BO,eAAI,GAAX,UACC,IAAkB,EAClB,QAAoD;QAEpD,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YACtD,IAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,YAAY,aAAa,EAAE;gBACnC,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC/C,IAAI,MAAM,IAAI,IAAI,EAAE;oBACnB,OAAO,MAAM,CAAC;iBACd;aACD;iBAAM,IAAI,KAAK,YAAY,SAAS,EAAE;gBACtC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;oBACpB,OAAO,KAAK,CAAC;iBACb;aACD;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,eAAI,GAAX,UAAmB,IAAkB,EAAE,KAAmB;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAC,IAAsB;YAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC;IACF,iBAAC;AAAD,CAAC,AA3BD,IA2BC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItemMenu } from \"./d-menu-item-menu\";\n\nexport class DMenuItems {\n\tstatic each<VALUE>(\n\t\tmenu: DMenu<VALUE>,\n\t\titeratee: (item: DMenuItem<VALUE>) => boolean | void\n\t): DMenuItem<VALUE> | null {\n\t\tconst children = menu.children;\n\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tif (child instanceof DMenuItemMenu) {\n\t\t\t\tconst result = this.each(child.menu, iteratee);\n\t\t\t\tif (result != null) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t} else if (child instanceof DMenuItem) {\n\t\t\t\tif (iteratee(child)) {\n\t\t\t\t\treturn child;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tstatic find<VALUE>(menu: DMenu<VALUE>, value: VALUE | null): DMenuItem<VALUE> | null {\n\t\treturn this.each(menu, (item: DMenuItem<VALUE>): boolean => {\n\t\t\treturn item.value === value;\n\t\t});\n\t}\n}\n"]}
@@ -51,9 +51,9 @@ var DSelectMultiple = /** @class */ (function (_super) {
51
51
  DSelectMultiple.prototype.onValueChange = function (newValues, oldValues, items) {
52
52
  this.emit("change", newValues, oldValues, items, this);
53
53
  };
54
- DSelectMultiple.prototype.open = function () {
54
+ DSelectMultiple.prototype.onMenuOpening = function (menu) {
55
+ _super.prototype.onMenuOpening.call(this, menu);
55
56
  this.updateMenuItems(this.menu, this._values);
56
- _super.prototype.open.call(this);
57
57
  };
58
58
  Object.defineProperty(DSelectMultiple.prototype, "values", {
59
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"d-select-multiple.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-select-multiple.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EACN,aAAa,EAIb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAqDnD;;GAEG;AACH;IAIU,mCAA6D;IAGtE,yBAAY,OAAiB;QAA7B,YACC,kBAAM,OAAO,CAAC,SAQd;QANA,iBAAiB;QACjB,KAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC;QAC/B,IAAI,MAAM,EAAE;YACX,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACrB;;IACF,CAAC;IAES,sCAAY,GAAtB,UAAuB,KAAY,EAAE,IAAsB,EAAE,IAAkB;QAC9E,iBAAM,YAAY,YAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,YAAY,cAAc,EAAE;YACnC,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;YAC/B,IAAM,SAAS,GAAY,EAAE,CAAC;YAC9B,IAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;aAC7E;iBAAM;gBACN,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;aAC7E;YACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;SACnD;IACF,CAAC;IAES,wCAAc,GAAxB,UAAyB,OAAqB,EAAE,OAAsB;QACrE,iBAAM,cAAc,YAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvC,oBAAoB;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAM,SAAS,GAAY,EAAE,CAAC;QAC9B,IAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACtB,CAAC;IAES,uCAAa,GAAvB,UACC,SAAkB,EAClB,SAAkB,EAClB,KAA8B;QAE9B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAEQ,8BAAI,GAAb;QACC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,iBAAM,IAAI,WAAE,CAAC;IACd,CAAC;IAKD,sBAAI,mCAAM;QAHV;;WAEG;aACH;YACC,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QAED;;WAEG;aACH,UAAW,MAAe;YACzB,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;gBAC1C,IAAM,SAAS,GAAY,EAAE,CAAC;gBAC9B,IAAM,QAAQ,GAA4B,EAAE,CAAC;gBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACnF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;aACrB;QACF,CAAC;;;OAdA;IAgBS,sCAAY,GAAtB,UAAuB,CAAU,EAAE,CAAU;QAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;gBAC/C,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;oBACxB,OAAO,KAAK,CAAC;iBACb;aACD;SACD;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAES,yCAAe,GAAzB,UACC,IAAkB,EAClB,SAAkB,EAClB,UAAkB,EAClB,YAAoB,EACpB,SAAmB,EACnB,QAAkC;QAElC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;YACtD,IAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,YAAY,aAAa,EAAE;gBACnC,IAAI,CAAC,eAAe,CACnB,KAAK,CAAC,IAAI,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,CACR,CAAC;aACF;iBAAM,IAAI,KAAK,YAAY,cAAc,EAAE;gBAC3C,IAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC/B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,UAAU,EAAE;oBAC9D,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;iBAC7B;qBAAM,IACN,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC;oBACxD,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAClC;oBACD,IAAI,SAAS,EAAE;wBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC5B;oBACD,IAAI,QAAQ,EAAE;wBACb,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACrB;oBACD,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAC5B;qBAAM;oBACN,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;iBAC7B;aACD;SACD;IACF,CAAC;IAES,iCAAO,GAAjB;QACC,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IACF,sBAAC;AAAD,CAAC,AAzID,CAIU,aAAa,GAqItB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n\tDDropdownBase,\n\tDDropdownBaseEvents,\n\tDDropdownBaseOptions,\n\tDThemeDropdownBase\n} from \"./d-dropdown-base\";\nimport { DMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItemCheck } from \"./d-menu-item-check\";\nimport { DMenuItemMenu } from \"./d-menu-item-menu\";\nimport { DOnOptions } from \"./d-on-options\";\n\n/**\n * {@link DSelectMultiple} events.\n */\nexport interface DSelectMultipleEvents<VALUE, EMITTER>\n\textends DDropdownBaseEvents<VALUE, Array<DMenuItem<VALUE>>, EMITTER> {\n\t/**\n\t * Triggered when the selection is changed.\n\t *\n\t * @param newValues new selected values\n\t * @param oldValues old selected values\n\t * @param items selected items\n\t * @param emitter an emitter\n\t */\n\tchange(\n\t\tnewValues: VALUE[],\n\t\toldValues: VALUE[],\n\t\titems: Array<DMenuItem<VALUE>>,\n\t\temitter: EMITTER\n\t): void;\n}\n\n/**\n * {@link DSelectMultiple} \"on\" options.\n */\nexport interface DSelectMultipleOnOptions<VALUE, EMITTER>\n\textends Partial<DSelectMultipleEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DSelectMultiple} options.\n */\nexport interface DSelectMultipleOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelectMultiple<VALUE> = DThemeSelectMultiple<VALUE>,\n\tEMITTER = any\n> extends DDropdownBaseOptions<VALUE, Array<DMenuItem<VALUE>>, THEME, EMITTER> {\n\t/**\n\t * A default values.\n\t */\n\tvalues?: VALUE[];\n\n\ton?: DSelectMultipleOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DSelectMultiple} theme.\n */\nexport interface DThemeSelectMultiple<VALUE = unknown>\n\textends DThemeDropdownBase<Array<DMenuItem<VALUE>>> {}\n\n/**\n * A multi-value selector class.\n */\nexport class DSelectMultiple<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelectMultiple<VALUE> = DThemeSelectMultiple<VALUE>,\n\tOPTIONS extends DSelectMultipleOptions<VALUE, THEME> = DSelectMultipleOptions<VALUE, THEME>\n> extends DDropdownBase<VALUE, Array<DMenuItem<VALUE>>, THEME, OPTIONS> {\n\tprotected _values: VALUE[];\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Default values\n\t\tthis._values = [];\n\t\tconst values = options?.values;\n\t\tif (values) {\n\t\t\tthis.values = values;\n\t\t}\n\t}\n\n\tprotected onMenuSelect(value: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void {\n\t\tsuper.onMenuSelect(value, item, menu);\n\t\tif (item instanceof DMenuItemCheck) {\n\t\t\tconst oldValues = this._values;\n\t\t\tconst newValues: VALUE[] = [];\n\t\t\tconst newItems: Array<DMenuItem<VALUE>> = [];\n\t\t\tif (item.state.isActive) {\n\t\t\t\tthis.updateMenuItems(menu, oldValues, value, undefined, newValues, newItems);\n\t\t\t} else {\n\t\t\t\tthis.updateMenuItems(menu, oldValues, undefined, value, newValues, newItems);\n\t\t\t}\n\t\t\tthis._values = newValues;\n\t\t\tthis.text = newItems;\n\t\t\tthis.onValueChange(newValues, oldValues, newItems);\n\t\t}\n\t}\n\n\tprotected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void {\n\t\tsuper.onMenuReplaced(newMenu, oldMenu);\n\n\t\t// Update the values\n\t\tconst values = this._values;\n\t\tconst newValues: VALUE[] = [];\n\t\tconst newItems: Array<DMenuItem<VALUE>> = [];\n\t\tthis.updateMenuItems(newMenu, values, undefined, undefined, newValues, newItems);\n\t\tthis._values = newValues;\n\t\tthis.text = newItems;\n\t}\n\n\tprotected onValueChange(\n\t\tnewValues: VALUE[],\n\t\toldValues: VALUE[],\n\t\titems: Array<DMenuItem<VALUE>>\n\t): void {\n\t\tthis.emit(\"change\", newValues, oldValues, items, this);\n\t}\n\n\toverride open(): void {\n\t\tthis.updateMenuItems(this.menu, this._values);\n\t\tsuper.open();\n\t}\n\n\t/**\n\t * Returns a selected value or null.\n\t */\n\tget values(): VALUE[] {\n\t\treturn this._values;\n\t}\n\n\t/**\n\t * Sets to the specified value.\n\t */\n\tset values(values: VALUE[]) {\n\t\tconst oldValues = this._values;\n\t\tif (!this.isSameValues(values, oldValues)) {\n\t\t\tconst newValues: VALUE[] = [];\n\t\t\tconst newItems: Array<DMenuItem<VALUE>> = [];\n\t\t\tthis.updateMenuItems(this.menu, values, undefined, undefined, newValues, newItems);\n\t\t\tthis._values = newValues;\n\t\t\tthis.text = newItems;\n\t\t}\n\t}\n\n\tprotected isSameValues(a: VALUE[], b: VALUE[]): boolean {\n\t\tif (a.length === b.length) {\n\t\t\tfor (let i = 0, imax = a.length; i < imax; ++i) {\n\t\t\t\tif (b.indexOf(a[i]) < 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected updateMenuItems(\n\t\tmenu: DMenu<VALUE>,\n\t\toldValues: VALUE[],\n\t\taddedValue?: VALUE,\n\t\tremovedValue?: VALUE,\n\t\tnewValues?: VALUE[],\n\t\tnewItems?: Array<DMenuItem<VALUE>>\n\t): void {\n\t\tconst children = menu.children;\n\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tif (child instanceof DMenuItemMenu) {\n\t\t\t\tthis.updateMenuItems(\n\t\t\t\t\tchild.menu,\n\t\t\t\t\toldValues,\n\t\t\t\t\taddedValue,\n\t\t\t\t\tremovedValue,\n\t\t\t\t\tnewValues,\n\t\t\t\t\tnewItems\n\t\t\t\t);\n\t\t\t} else if (child instanceof DMenuItemCheck) {\n\t\t\t\tconst childValue = child.value;\n\t\t\t\tif (removedValue !== undefined && removedValue === childValue) {\n\t\t\t\t\tchild.state.isActive = false;\n\t\t\t\t} else if (\n\t\t\t\t\t(addedValue !== undefined && child.value === addedValue) ||\n\t\t\t\t\t0 <= oldValues.indexOf(child.value)\n\t\t\t\t) {\n\t\t\t\t\tif (newValues) {\n\t\t\t\t\t\tnewValues.push(child.value);\n\t\t\t\t\t}\n\t\t\t\t\tif (newItems) {\n\t\t\t\t\t\tnewItems.push(child);\n\t\t\t\t\t}\n\t\t\t\t\tchild.state.isActive = true;\n\t\t\t\t} else {\n\t\t\t\t\tchild.state.isActive = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DSelectMultiple\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-select-multiple.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-select-multiple.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n\tDDropdownBase,\n\tDDropdownBaseEvents,\n\tDDropdownBaseOptions,\n\tDThemeDropdownBase\n} from \"./d-dropdown-base\";\nimport { DMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItemCheck } from \"./d-menu-item-check\";\nimport { DMenuItemMenu } from \"./d-menu-item-menu\";\nimport { DOnOptions } from \"./d-on-options\";\n\n/**\n * {@link DSelectMultiple} events.\n */\nexport interface DSelectMultipleEvents<VALUE, EMITTER>\n\textends DDropdownBaseEvents<VALUE, Array<DMenuItem<VALUE>>, EMITTER> {\n\t/**\n\t * Triggered when the selection is changed.\n\t *\n\t * @param newValues new selected values\n\t * @param oldValues old selected values\n\t * @param items selected items\n\t * @param emitter an emitter\n\t */\n\tchange(\n\t\tnewValues: VALUE[],\n\t\toldValues: VALUE[],\n\t\titems: Array<DMenuItem<VALUE>>,\n\t\temitter: EMITTER\n\t): void;\n}\n\n/**\n * {@link DSelectMultiple} \"on\" options.\n */\nexport interface DSelectMultipleOnOptions<VALUE, EMITTER>\n\textends Partial<DSelectMultipleEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DSelectMultiple} options.\n */\nexport interface DSelectMultipleOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelectMultiple<VALUE> = DThemeSelectMultiple<VALUE>,\n\tEMITTER = any\n> extends DDropdownBaseOptions<VALUE, Array<DMenuItem<VALUE>>, THEME, EMITTER> {\n\t/**\n\t * A default values.\n\t */\n\tvalues?: VALUE[];\n\n\ton?: DSelectMultipleOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DSelectMultiple} theme.\n */\nexport interface DThemeSelectMultiple<VALUE = unknown>\n\textends DThemeDropdownBase<Array<DMenuItem<VALUE>>> {}\n\n/**\n * A multi-value selector class.\n */\nexport class DSelectMultiple<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelectMultiple<VALUE> = DThemeSelectMultiple<VALUE>,\n\tOPTIONS extends DSelectMultipleOptions<VALUE, THEME> = DSelectMultipleOptions<VALUE, THEME>\n> extends DDropdownBase<VALUE, Array<DMenuItem<VALUE>>, THEME, OPTIONS> {\n\tprotected _values: VALUE[];\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Default values\n\t\tthis._values = [];\n\t\tconst values = options?.values;\n\t\tif (values) {\n\t\t\tthis.values = values;\n\t\t}\n\t}\n\n\tprotected onMenuSelect(value: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void {\n\t\tsuper.onMenuSelect(value, item, menu);\n\t\tif (item instanceof DMenuItemCheck) {\n\t\t\tconst oldValues = this._values;\n\t\t\tconst newValues: VALUE[] = [];\n\t\t\tconst newItems: Array<DMenuItem<VALUE>> = [];\n\t\t\tif (item.state.isActive) {\n\t\t\t\tthis.updateMenuItems(menu, oldValues, value, undefined, newValues, newItems);\n\t\t\t} else {\n\t\t\t\tthis.updateMenuItems(menu, oldValues, undefined, value, newValues, newItems);\n\t\t\t}\n\t\t\tthis._values = newValues;\n\t\t\tthis.text = newItems;\n\t\t\tthis.onValueChange(newValues, oldValues, newItems);\n\t\t}\n\t}\n\n\tprotected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void {\n\t\tsuper.onMenuReplaced(newMenu, oldMenu);\n\n\t\t// Update the values\n\t\tconst values = this._values;\n\t\tconst newValues: VALUE[] = [];\n\t\tconst newItems: Array<DMenuItem<VALUE>> = [];\n\t\tthis.updateMenuItems(newMenu, values, undefined, undefined, newValues, newItems);\n\t\tthis._values = newValues;\n\t\tthis.text = newItems;\n\t}\n\n\tprotected onValueChange(\n\t\tnewValues: VALUE[],\n\t\toldValues: VALUE[],\n\t\titems: Array<DMenuItem<VALUE>>\n\t): void {\n\t\tthis.emit(\"change\", newValues, oldValues, items, this);\n\t}\n\n\tprotected override onMenuOpening(menu: DMenu<VALUE>): void {\n\t\tsuper.onMenuOpening(menu);\n\t\tthis.updateMenuItems(this.menu, this._values);\n\t}\n\n\t/**\n\t * Returns a selected value or null.\n\t */\n\tget values(): VALUE[] {\n\t\treturn this._values;\n\t}\n\n\t/**\n\t * Sets to the specified value.\n\t */\n\tset values(values: VALUE[]) {\n\t\tconst oldValues = this._values;\n\t\tif (!this.isSameValues(values, oldValues)) {\n\t\t\tconst newValues: VALUE[] = [];\n\t\t\tconst newItems: Array<DMenuItem<VALUE>> = [];\n\t\t\tthis.updateMenuItems(this.menu, values, undefined, undefined, newValues, newItems);\n\t\t\tthis._values = newValues;\n\t\t\tthis.text = newItems;\n\t\t}\n\t}\n\n\tprotected isSameValues(a: VALUE[], b: VALUE[]): boolean {\n\t\tif (a.length === b.length) {\n\t\t\tfor (let i = 0, imax = a.length; i < imax; ++i) {\n\t\t\t\tif (b.indexOf(a[i]) < 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected updateMenuItems(\n\t\tmenu: DMenu<VALUE>,\n\t\toldValues: VALUE[],\n\t\taddedValue?: VALUE,\n\t\tremovedValue?: VALUE,\n\t\tnewValues?: VALUE[],\n\t\tnewItems?: Array<DMenuItem<VALUE>>\n\t): void {\n\t\tconst children = menu.children;\n\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tif (child instanceof DMenuItemMenu) {\n\t\t\t\tthis.updateMenuItems(\n\t\t\t\t\tchild.menu,\n\t\t\t\t\toldValues,\n\t\t\t\t\taddedValue,\n\t\t\t\t\tremovedValue,\n\t\t\t\t\tnewValues,\n\t\t\t\t\tnewItems\n\t\t\t\t);\n\t\t\t} else if (child instanceof DMenuItemCheck) {\n\t\t\t\tconst childValue = child.value;\n\t\t\t\tif (removedValue !== undefined && removedValue === childValue) {\n\t\t\t\t\tchild.state.isActive = false;\n\t\t\t\t} else if (\n\t\t\t\t\t(addedValue !== undefined && child.value === addedValue) ||\n\t\t\t\t\t0 <= oldValues.indexOf(child.value)\n\t\t\t\t) {\n\t\t\t\t\tif (newValues) {\n\t\t\t\t\t\tnewValues.push(child.value);\n\t\t\t\t\t}\n\t\t\t\t\tif (newItems) {\n\t\t\t\t\t\tnewItems.push(child);\n\t\t\t\t\t}\n\t\t\t\t\tchild.state.isActive = true;\n\t\t\t\t} else {\n\t\t\t\t\tchild.state.isActive = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DSelectMultiple\";\n\t}\n}\n"]}
@@ -4,8 +4,7 @@
4
4
  */
5
5
  import { __extends } from "tslib";
6
6
  import { DDropdownBase } from "./d-dropdown-base";
7
- import { DMenuItem } from "./d-menu-item";
8
- import { DMenuItemMenu } from "./d-menu-item-menu";
7
+ import { DMenuItems } from "./d-menu-items";
9
8
  /**
10
9
  * A selector class.
11
10
  */
@@ -34,7 +33,7 @@ var DSelect = /** @class */ (function (_super) {
34
33
  _super.prototype.onMenuReplaced.call(this, newMenu, oldMenu);
35
34
  // Update the value
36
35
  var value = this._value;
37
- var item = this.findMenuItem(newMenu, value);
36
+ var item = DMenuItems.find(newMenu, value);
38
37
  if (item != null) {
39
38
  this._value = value;
40
39
  this.text = item;
@@ -47,23 +46,12 @@ var DSelect = /** @class */ (function (_super) {
47
46
  DSelect.prototype.onValueChange = function (newValue, oldValue, item) {
48
47
  this.emit("change", newValue, oldValue, item, this);
49
48
  };
50
- DSelect.prototype.findMenuItem = function (menu, value) {
51
- var children = menu.children;
52
- for (var i = 0, imax = children.length; i < imax; ++i) {
53
- var child = children[i];
54
- if (child instanceof DMenuItemMenu) {
55
- var result = this.findMenuItem(child.menu, value);
56
- if (result != null) {
57
- return result;
58
- }
59
- }
60
- else if (child instanceof DMenuItem) {
61
- if (child.value === value) {
62
- return child;
63
- }
64
- }
65
- }
66
- return null;
49
+ DSelect.prototype.onMenuOpening = function (menu) {
50
+ _super.prototype.onMenuOpening.call(this, menu);
51
+ var value = this._value;
52
+ DMenuItems.each(menu, function (item) {
53
+ item.state.isActive = item.value === value;
54
+ });
67
55
  };
68
56
  Object.defineProperty(DSelect.prototype, "value", {
69
57
  /**
@@ -77,7 +65,7 @@ var DSelect = /** @class */ (function (_super) {
77
65
  */
78
66
  set: function (value) {
79
67
  if (this._value !== value) {
80
- var item = this.findMenuItem(this.menu, value);
68
+ var item = DMenuItems.find(this.menu, value);
81
69
  if (item != null) {
82
70
  this._value = value;
83
71
  this.text = item;
@@ -1 +1 @@
1
- {"version":3,"file":"d-select.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-select.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n\tDDropdownBase,\n\tDDropdownBaseEvents,\n\tDDropdownBaseOptions,\n\tDThemeDropdownBase\n} from \"./d-dropdown-base\";\nimport { DMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItemMenu } from \"./d-menu-item-menu\";\nimport { DOnOptions } from \"./d-on-options\";\n\n/**\n * {@link DSelect} events.\n */\nexport interface DSelectEvents<VALUE, EMITTER>\n\textends DDropdownBaseEvents<VALUE, DMenuItem<VALUE> | null, EMITTER> {\n\t/**\n\t * Triggered when a selection is changed.\n\t *\n\t * @param newValue a newly-selected value\n\t * @param oldValue a previously-selected value\n\t * @param item a newly-selected item\n\t * @param emitter an emitter\n\t */\n\tchange(\n\t\tnewValue: VALUE | null,\n\t\toldValue: VALUE | null,\n\t\titem: DMenuItem<VALUE> | null,\n\t\temitter: EMITTER\n\t): void;\n}\n\n/**\n * {@link DSelect} \"on\" options.\n */\nexport interface DSelectOnOptions<VALUE, EMITTER>\n\textends Partial<DSelectEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DSelect} options.\n */\nexport interface DSelectOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelect<VALUE> = DThemeSelect<VALUE>,\n\tEMITTER = any\n> extends DDropdownBaseOptions<VALUE, DMenuItem<VALUE> | null, THEME, EMITTER> {\n\t/**\n\t * A default value.\n\t */\n\tvalue?: VALUE | null;\n\n\ton?: DSelectOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DSelect} theme.\n */\nexport interface DThemeSelect<VALUE = unknown>\n\textends DThemeDropdownBase<DMenuItem<VALUE> | null> {}\n\n/**\n * A selector class.\n */\nexport class DSelect<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelect<VALUE> = DThemeSelect<VALUE>,\n\tOPTIONS extends DSelectOptions<VALUE, THEME> = DSelectOptions<VALUE, THEME>\n> extends DDropdownBase<VALUE, DMenuItem<VALUE> | null, THEME, OPTIONS> {\n\tprotected _value: VALUE | null;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Default value\n\t\tthis._value = null;\n\t\tconst value = options?.value;\n\t\tif (value != null) {\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\n\tprotected onMenuSelect(newValue: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void {\n\t\tsuper.onMenuSelect(newValue, item, menu);\n\t\tconst oldValue = this._value;\n\t\tif (oldValue !== newValue) {\n\t\t\tthis._value = newValue;\n\t\t\tthis.text = item;\n\t\t\tthis.onValueChange(newValue, oldValue, item);\n\t\t}\n\t}\n\n\tprotected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void {\n\t\tsuper.onMenuReplaced(newMenu, oldMenu);\n\n\t\t// Update the value\n\t\tconst value = this._value;\n\t\tconst item = this.findMenuItem(newMenu, value);\n\t\tif (item != null) {\n\t\t\tthis._value = value;\n\t\t\tthis.text = item;\n\t\t} else {\n\t\t\tthis._value = null;\n\t\t\tthis.text = null;\n\t\t}\n\t}\n\n\tprotected onValueChange(\n\t\tnewValue: VALUE | null,\n\t\toldValue: VALUE | null,\n\t\titem: DMenuItem<VALUE> | null\n\t): void {\n\t\tthis.emit(\"change\", newValue, oldValue, item, this);\n\t}\n\n\tprotected findMenuItem(menu: DMenu<VALUE>, value: VALUE | null): DMenuItem<VALUE> | null {\n\t\tconst children = menu.children;\n\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tif (child instanceof DMenuItemMenu) {\n\t\t\t\tconst result = this.findMenuItem(child.menu, value);\n\t\t\t\tif (result != null) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t} else if (child instanceof DMenuItem) {\n\t\t\t\tif (child.value === value) {\n\t\t\t\t\treturn child;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns a selected value or null.\n\t */\n\tget value(): VALUE | null {\n\t\treturn this._value;\n\t}\n\n\t/**\n\t * Sets to the specified value.\n\t */\n\tset value(value: VALUE | null) {\n\t\tif (this._value !== value) {\n\t\t\tconst item = this.findMenuItem(this.menu, value);\n\t\t\tif (item != null) {\n\t\t\t\tthis._value = value;\n\t\t\t\tthis.text = item;\n\t\t\t} else {\n\t\t\t\tthis._value = null;\n\t\t\t\tthis.text = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DSelect\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-select.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-select.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EACN,aAAa,EAIb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqD5C;;GAEG;AACH;IAIU,2BAA6D;IAGtE,iBAAY,OAAiB;QAA7B,YACC,kBAAM,OAAO,CAAC,SAQd;QANA,gBAAgB;QAChB,KAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;QAC7B,IAAI,KAAK,IAAI,IAAI,EAAE;YAClB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACnB;;IACF,CAAC;IAES,8BAAY,GAAtB,UAAuB,QAAe,EAAE,IAAsB,EAAE,IAAkB;QACjF,iBAAM,YAAY,YAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,QAAQ,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC7C;IACF,CAAC;IAES,gCAAc,GAAxB,UAAyB,OAAqB,EAAE,OAAsB;QACrE,iBAAM,cAAc,YAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvC,mBAAmB;QACnB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,IAAI,IAAI,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACjB;aAAM;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACjB;IACF,CAAC;IAES,+BAAa,GAAvB,UACC,QAAsB,EACtB,QAAsB,EACtB,IAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEkB,+BAAa,GAAhC,UAAiC,IAAkB;QAClD,iBAAM,aAAa,YAAC,IAAI,CAAC,CAAC;QAE1B,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAC,IAAI;YAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC5C,CAAC,CAAC,CAAC;IACJ,CAAC;IAKD,sBAAI,0BAAK;QAHT;;WAEG;aACH;YACC,OAAO,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;QAED;;WAEG;aACH,UAAU,KAAmB;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBAC1B,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,IAAI,IAAI,IAAI,EAAE;oBACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBACjB;qBAAM;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBACjB;aACD;QACF,CAAC;;;OAhBA;IAkBS,yBAAO,GAAjB;QACC,OAAO,SAAS,CAAC;IAClB,CAAC;IACF,cAAC;AAAD,CAAC,AAtFD,CAIU,aAAa,GAkFtB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n\tDDropdownBase,\n\tDDropdownBaseEvents,\n\tDDropdownBaseOptions,\n\tDThemeDropdownBase\n} from \"./d-dropdown-base\";\nimport { DMenu } from \"./d-menu\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItems } from \"./d-menu-items\";\nimport { DOnOptions } from \"./d-on-options\";\n\n/**\n * {@link DSelect} events.\n */\nexport interface DSelectEvents<VALUE, EMITTER>\n\textends DDropdownBaseEvents<VALUE, DMenuItem<VALUE> | null, EMITTER> {\n\t/**\n\t * Triggered when a selection is changed.\n\t *\n\t * @param newValue a newly-selected value\n\t * @param oldValue a previously-selected value\n\t * @param item a newly-selected item\n\t * @param emitter an emitter\n\t */\n\tchange(\n\t\tnewValue: VALUE | null,\n\t\toldValue: VALUE | null,\n\t\titem: DMenuItem<VALUE> | null,\n\t\temitter: EMITTER\n\t): void;\n}\n\n/**\n * {@link DSelect} \"on\" options.\n */\nexport interface DSelectOnOptions<VALUE, EMITTER>\n\textends Partial<DSelectEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DSelect} options.\n */\nexport interface DSelectOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelect<VALUE> = DThemeSelect<VALUE>,\n\tEMITTER = any\n> extends DDropdownBaseOptions<VALUE, DMenuItem<VALUE> | null, THEME, EMITTER> {\n\t/**\n\t * A default value.\n\t */\n\tvalue?: VALUE | null;\n\n\ton?: DSelectOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DSelect} theme.\n */\nexport interface DThemeSelect<VALUE = unknown>\n\textends DThemeDropdownBase<DMenuItem<VALUE> | null> {}\n\n/**\n * A selector class.\n */\nexport class DSelect<\n\tVALUE = unknown,\n\tTHEME extends DThemeSelect<VALUE> = DThemeSelect<VALUE>,\n\tOPTIONS extends DSelectOptions<VALUE, THEME> = DSelectOptions<VALUE, THEME>\n> extends DDropdownBase<VALUE, DMenuItem<VALUE> | null, THEME, OPTIONS> {\n\tprotected _value: VALUE | null;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Default value\n\t\tthis._value = null;\n\t\tconst value = options?.value;\n\t\tif (value != null) {\n\t\t\tthis.value = value;\n\t\t}\n\t}\n\n\tprotected onMenuSelect(newValue: VALUE, item: DMenuItem<VALUE>, menu: DMenu<VALUE>): void {\n\t\tsuper.onMenuSelect(newValue, item, menu);\n\t\tconst oldValue = this._value;\n\t\tif (oldValue !== newValue) {\n\t\t\tthis._value = newValue;\n\t\t\tthis.text = item;\n\t\t\tthis.onValueChange(newValue, oldValue, item);\n\t\t}\n\t}\n\n\tprotected onMenuReplaced(newMenu: DMenu<VALUE>, oldMenu?: DMenu<VALUE>): void {\n\t\tsuper.onMenuReplaced(newMenu, oldMenu);\n\n\t\t// Update the value\n\t\tconst value = this._value;\n\t\tconst item = DMenuItems.find(newMenu, value);\n\t\tif (item != null) {\n\t\t\tthis._value = value;\n\t\t\tthis.text = item;\n\t\t} else {\n\t\t\tthis._value = null;\n\t\t\tthis.text = null;\n\t\t}\n\t}\n\n\tprotected onValueChange(\n\t\tnewValue: VALUE | null,\n\t\toldValue: VALUE | null,\n\t\titem: DMenuItem<VALUE> | null\n\t): void {\n\t\tthis.emit(\"change\", newValue, oldValue, item, this);\n\t}\n\n\tprotected override onMenuOpening(menu: DMenu<VALUE>): void {\n\t\tsuper.onMenuOpening(menu);\n\n\t\tconst value = this._value;\n\t\tDMenuItems.each(menu, (item) => {\n\t\t\titem.state.isActive = item.value === value;\n\t\t});\n\t}\n\n\t/**\n\t * Returns a selected value or null.\n\t */\n\tget value(): VALUE | null {\n\t\treturn this._value;\n\t}\n\n\t/**\n\t * Sets to the specified value.\n\t */\n\tset value(value: VALUE | null) {\n\t\tif (this._value !== value) {\n\t\t\tconst item = DMenuItems.find(this.menu, value);\n\t\t\tif (item != null) {\n\t\t\t\tthis._value = value;\n\t\t\t\tthis.text = item;\n\t\t\t} else {\n\t\t\t\tthis._value = null;\n\t\t\t\tthis.text = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DSelect\";\n\t}\n}\n"]}
@@ -444,6 +444,7 @@ export * from "./d-menu-item-space-is-compatible";
444
444
  export * from "./d-menu-item-space";
445
445
  export * from "./d-menu-item-text";
446
446
  export * from "./d-menu-item";
447
+ export * from "./d-menu-items";
447
448
  export * from "./d-menu-opener";
448
449
  export * from "./d-menu-sided-content";
449
450
  export * from "./d-menu-sided-item-check";