@type-dom/ui 0.0.7 → 0.0.9

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 (225) hide show
  1. package/package.json +1 -2
  2. package/src/aria.d.ts +0 -17
  3. package/src/aria.js +0 -18
  4. package/src/components/basic/td-button/td-button.abstract.d.ts +2 -3
  5. package/src/components/basic/td-button/td-button.abstract.js +30 -26
  6. package/src/components/basic/td-button/td-button.interface.d.ts +0 -1
  7. package/src/components/basic/td-button-group/td-button-group.class.d.ts +2 -3
  8. package/src/components/basic/td-button-group/td-button-group.class.js +14 -16
  9. package/src/components/basic/td-container/td-aside/td-aside.class.js +2 -2
  10. package/src/components/basic/td-container/td-container.class.js +5 -5
  11. package/src/components/basic/td-container/td-container.js +1 -1
  12. package/src/components/basic/td-container/td-footer/td-footer.class.js +2 -2
  13. package/src/components/basic/td-container/td-header/td-header.class.js +3 -4
  14. package/src/components/basic/td-container/td-main/td-main.class.js +2 -2
  15. package/src/components/basic/td-icon/td-icon.class.js +9 -9
  16. package/src/components/basic/td-layout/td-col/td-col.class.d.ts +5 -2
  17. package/src/components/basic/td-layout/td-col/td-col.class.js +80 -80
  18. package/src/components/basic/td-layout/td-row/td-row.class.js +13 -13
  19. package/src/components/basic/td-link/td-link.class.d.ts +0 -1
  20. package/src/components/basic/td-link/td-link.class.js +17 -19
  21. package/src/components/basic/td-scrollbar/bar/bar.class.js +3 -3
  22. package/src/components/basic/td-scrollbar/td-scrollbar.class.js +5 -5
  23. package/src/components/basic/td-scrollbar/thumb/thumb.class.js +3 -3
  24. package/src/components/basic/td-space/td-space.class.js +10 -10
  25. package/src/components/basic/td-text/td-text.class.js +12 -9
  26. package/src/components/data/td-avatar/td-avatar.class.js +12 -13
  27. package/src/components/data/td-badge/td-badge.class.d.ts +1 -0
  28. package/src/components/data/td-badge/td-badge.class.js +15 -11
  29. package/src/components/data/td-card/td-card.class.js +7 -7
  30. package/src/components/data/td-check-tag/td-check-tag.class.d.ts +0 -1
  31. package/src/components/data/td-check-tag/td-check-tag.class.js +9 -11
  32. package/src/components/data/td-collapse/td-collapse.class.js +2 -3
  33. package/src/components/data/td-collapse/td-collapse.interface.d.ts +1 -0
  34. package/src/components/data/td-collapse-item/td-collapse-item.class.js +8 -8
  35. package/src/components/data/td-collapse-transition/td-collapse-transition.util.js +14 -14
  36. package/src/components/data/td-count-down/td-count-down.class.js +1 -1
  37. package/src/components/data/td-descriptions/td-descriptions-row.js +2 -2
  38. package/src/components/data/td-descriptions/td-descriptions.class.js +8 -8
  39. package/src/components/data/td-descriptions/td-descritions-cell.js +14 -14
  40. package/src/components/data/td-descriptions-item/td-descriptions-item.class.js +1 -1
  41. package/src/components/data/td-empty/img-empty.class.js +3 -3
  42. package/src/components/data/td-empty/td-empty.class.js +4 -4
  43. package/src/components/data/td-image/td-image.class.js +6 -6
  44. package/src/components/data/td-image-viewer/td-image-viewer.class.d.ts +2 -1
  45. package/src/components/data/td-image-viewer/td-image-viewer.class.js +14 -10
  46. package/src/components/data/td-result/td-result.class.js +3 -3
  47. package/src/components/data/td-segmented/td-segmented.class.js +26 -30
  48. package/src/components/data/td-statistic/td-statistic.abstract.js +2 -2
  49. package/src/components/data/td-tag/td-tag.class.js +10 -10
  50. package/src/components/feedback/index.d.ts +0 -2
  51. package/src/components/feedback/index.js +3 -5
  52. package/src/components/feedback/td-alert/td-alert.class.js +9 -9
  53. package/src/components/feedback/td-dialog/td-dialog.class.js +4 -4
  54. package/src/components/feedback/td-dialog-content/td-dialog-content.class.js +4 -4
  55. package/src/components/feedback/td-drawer/td-drawer.class.js +1 -1
  56. package/src/components/feedback/td-focus-trap/td-focus-trap.class.d.ts +19 -1
  57. package/src/components/feedback/td-focus-trap/td-focus-trap.class.js +223 -48
  58. package/src/components/feedback/td-focus-trap/tokens.d.ts +2 -1
  59. package/src/components/feedback/td-focus-trap/utils.d.ts +1 -1
  60. package/src/components/feedback/td-focus-trap/utils.js +9 -11
  61. package/src/components/feedback/td-loading/td-loading.class.js +1 -1
  62. package/src/components/feedback/td-message/td-message.class.d.ts +4 -2
  63. package/src/components/feedback/td-message/td-message.class.js +34 -27
  64. package/src/components/feedback/td-message/td-message.style.js +2 -1
  65. package/src/components/feedback/td-message-box/td-message-box.class.d.ts +3 -1
  66. package/src/components/feedback/td-message-box/td-message-box.class.js +79 -75
  67. package/src/components/feedback/td-message-box/td-message-box.interface.d.ts +2 -1
  68. package/src/components/feedback/td-notification/td-notification.class.d.ts +3 -2
  69. package/src/components/feedback/td-notification/td-notification.class.js +29 -29
  70. package/src/components/feedback/td-only-child/td-only-child.class.d.ts +7 -0
  71. package/src/components/feedback/td-only-child/td-only-child.class.js +74 -0
  72. package/src/components/feedback/td-overlay/td-overlay.class.d.ts +1 -1
  73. package/src/components/feedback/td-overlay/td-overlay.class.js +5 -5
  74. package/src/components/feedback/td-popper/arrow/arrow.class.d.ts +6 -0
  75. package/src/components/feedback/td-popper/arrow/arrow.class.js +22 -3
  76. package/src/components/feedback/td-popper/composable/use-focus-trap.d.ts +0 -0
  77. package/src/components/feedback/td-popper/composable/use-focus-trap.js +1 -0
  78. package/src/components/feedback/td-popper/content/content.class.d.ts +1 -0
  79. package/src/components/feedback/td-popper/content/content.class.js +25 -4
  80. package/src/components/feedback/td-popper/content/content.const.d.ts +3 -0
  81. package/src/components/feedback/td-popper/content/content.const.js +29 -0
  82. package/src/components/feedback/td-popper/content/content.interface.d.ts +9 -0
  83. package/src/components/feedback/td-popper/td-popper.class.d.ts +1 -1
  84. package/src/components/feedback/td-popper/td-popper.class.js +35 -2
  85. package/src/components/feedback/td-popper/td-popper.const.d.ts +21 -0
  86. package/src/components/feedback/td-popper/td-popper.const.js +5 -0
  87. package/src/components/feedback/td-popper/trigger/trigger.class.d.ts +11 -0
  88. package/src/components/feedback/td-popper/trigger/trigger.class.js +96 -1
  89. package/src/components/feedback/td-popper/trigger/trigger.const.d.ts +1 -0
  90. package/src/components/feedback/td-popper/trigger/trigger.const.js +12 -0
  91. package/src/components/feedback/td-popper/trigger/trigger.interface.d.ts +1 -0
  92. package/src/components/feedback/td-tooltip/content/content.class.js +1 -1
  93. package/src/components/feedback/td-tooltip/td-tooltip.class.js +1 -1
  94. package/src/components/feedback/td-tooltip/trigger/trigger.class.js +1 -1
  95. package/src/components/form/checkbox-group/checkbox-group.class.js +6 -7
  96. package/src/components/form/checkbox-group/checkbox-option/checkbox-option.class.d.ts +1 -1
  97. package/src/components/form/checkbox-group/checkbox-option/checkbox-option.class.js +21 -20
  98. package/src/components/form/field-item/cascade/field-cascade.abstract.d.ts +1 -1
  99. package/src/components/form/field-item/cascade/field-cascade.abstract.js +48 -43
  100. package/src/components/form/field-item/field-item.abstract.js +3 -3
  101. package/src/components/form/field-item/input/field-input.abstract.d.ts +1 -1
  102. package/src/components/form/field-item/input/field-input.abstract.js +15 -14
  103. package/src/components/form/field-item/options/field-options.abstract.d.ts +1 -3
  104. package/src/components/form/field-item/options/field-options.abstract.js +49 -46
  105. package/src/components/form/field-item/radio/field-radio.abstract.d.ts +1 -1
  106. package/src/components/form/field-item/radio/field-radio.abstract.js +32 -36
  107. package/src/components/form/field-item/select/field-select.abstract.d.ts +1 -1
  108. package/src/components/form/field-item/select/field-select.abstract.js +19 -19
  109. package/src/components/form/field-item/span/field-span.abstract.js +5 -5
  110. package/src/components/form/field-item/textarea/field-textarea.abstract.js +5 -5
  111. package/src/components/form/field-select/field-select.class.d.ts +1 -1
  112. package/src/components/form/field-select/field-select.class.js +23 -24
  113. package/src/components/form/field-select/option/option.class.js +1 -3
  114. package/src/components/form/radio-group/radio-group.class.js +6 -7
  115. package/src/components/form/radio-group/radio-option/radio-option.class.d.ts +0 -1
  116. package/src/components/form/radio-group/radio-option/radio-option.class.js +14 -15
  117. package/src/components/form/select/select.class.d.ts +1 -1
  118. package/src/components/form/select/select.class.js +19 -18
  119. package/src/components/form/td-checkbox/td-checkbox.class.js +3 -3
  120. package/src/components/form/td-checkbox-button/td-checkbox-button.class.js +3 -3
  121. package/src/components/form/td-checkbox-group/td-checkbox-group.class.js +3 -3
  122. package/src/components/form/td-form/td-form.class.js +5 -3
  123. package/src/components/form/td-form-item/td-form-item.class.js +16 -16
  124. package/src/components/form/td-input/td-input-field.class.js +8 -8
  125. package/src/components/form/td-input/td-input.class.d.ts +0 -1
  126. package/src/components/form/td-input/td-input.class.js +9 -11
  127. package/src/components/form/td-input/widget/prefix.js +1 -1
  128. package/src/components/form/td-input/widget/suffix.js +3 -3
  129. package/src/components/form/td-input/widget/td-input-wrapper.class.js +12 -11
  130. package/src/components/form/td-input/widget/td-textarea-wrapper.js +3 -3
  131. package/src/components/form/td-option/td-option.class.js +3 -3
  132. package/src/components/form/td-option-group/td-option-group.class.js +3 -3
  133. package/src/components/form/td-radio/td-radio.class.d.ts +0 -1
  134. package/src/components/form/td-radio/td-radio.class.js +50 -54
  135. package/src/components/form/td-radio-button/td-radio-button.class.d.ts +0 -1
  136. package/src/components/form/td-radio-button/td-radio-button.class.js +46 -50
  137. package/src/components/form/td-radio-group/td-radio-group.class.js +3 -4
  138. package/src/components/form/td-select/dropdown/dropdown.class.js +2 -2
  139. package/src/components/form/td-select/td-select.class.js +2 -2
  140. package/src/components/form/td-switch/td-switch.class.d.ts +1 -1
  141. package/src/components/form/td-switch/td-switch.class.js +27 -28
  142. package/src/components/form/td-switch/widget/td-switch-core.js +6 -6
  143. package/src/components/form/td-switch/widget/td-switch-left.js +3 -3
  144. package/src/components/form/td-switch/widget/td-switch-right.js +2 -2
  145. package/src/components/navigation/td-affix/td-affix.class.d.ts +3 -0
  146. package/src/components/navigation/td-affix/td-affix.class.js +22 -20
  147. package/src/components/navigation/td-anchor/td-anchor-link/td-anchor-link.class.js +1 -1
  148. package/src/components/navigation/td-anchor/td-anchor.class.js +10 -10
  149. package/src/components/navigation/td-backtop/td-backtop.class.d.ts +5 -3
  150. package/src/components/navigation/td-backtop/td-backtop.class.js +42 -34
  151. package/src/components/navigation/td-backtop/td-backtop.interface.d.ts +3 -0
  152. package/src/components/navigation/td-backtop/use-backtop.d.ts +7 -0
  153. package/src/components/navigation/td-backtop/use-backtop.js +44 -0
  154. package/src/components/navigation/td-breadcrumb/td-breadcrumb.class.js +4 -4
  155. package/src/components/navigation/td-breadcrumb-item/td-breadcrumb-item.class.js +3 -3
  156. package/src/components/navigation/td-menu/td-menu.class.js +5 -5
  157. package/src/components/navigation/td-menu/td-menu.interface.d.ts +2 -1
  158. package/src/components/navigation/td-tabs/td-tab-bar.class.js +5 -5
  159. package/src/components/navigation/td-tabs/td-tab-nav.class.js +14 -14
  160. package/src/components/navigation/td-tabs/td-tab-pane.class.js +3 -3
  161. package/src/components/navigation/td-tabs/td-tabs.class.js +22 -25
  162. package/src/components/others/collapsible-box/collapsible-box.js +2 -2
  163. package/src/components/others/collapsible-box/contents/contents.js +2 -2
  164. package/src/components/others/collapsible-box/heading/expand-heading.d.ts +1 -1
  165. package/src/components/others/collapsible-box/heading/expand-heading.js +27 -26
  166. package/src/components/others/custom-block/custom-block.d.ts +11 -0
  167. package/src/components/others/custom-block/custom-block.js +58 -0
  168. package/src/components/others/example/example-float-control.d.ts +8 -0
  169. package/src/components/others/example/example-float-control.js +63 -0
  170. package/src/components/others/example/example-showcase.d.ts +7 -0
  171. package/src/components/others/example/example-showcase.js +20 -0
  172. package/src/components/others/example/example-source-wrapper.d.ts +9 -0
  173. package/src/components/others/example/example-source-wrapper.js +30 -0
  174. package/src/components/others/example/example.d.ts +14 -0
  175. package/src/components/others/example/example.js +77 -0
  176. package/src/components/others/example/index.d.ts +5 -0
  177. package/src/components/others/example/index.js +13 -0
  178. package/src/components/others/example/op-btns.d.ts +7 -0
  179. package/src/components/others/example/op-btns.js +95 -0
  180. package/src/components/others/index.d.ts +4 -0
  181. package/src/components/others/index.js +9 -1
  182. package/src/components/others/menus/menu.d.ts +21 -0
  183. package/src/components/others/menus/menu.js +125 -0
  184. package/src/components/others/menus/menus.d.ts +15 -0
  185. package/src/components/others/menus/menus.js +101 -0
  186. package/src/components/others/td-divider/td-divider.class.js +8 -8
  187. package/src/hooks/index.d.ts +3 -0
  188. package/src/hooks/index.js +6 -0
  189. package/src/hooks/use-cursor.d.ts +1 -0
  190. package/src/hooks/use-cursor.js +56 -0
  191. package/src/hooks/use-escape-keydown.d.ts +4 -0
  192. package/src/hooks/use-escape-keydown.js +31 -0
  193. package/src/hooks/use-forward-ref.d.ts +13 -0
  194. package/src/hooks/use-forward-ref.js +27 -0
  195. package/src/index.d.ts +1 -0
  196. package/src/index.js +1 -0
  197. package/src/ui/ui.abstract.d.ts +1 -1
  198. package/src/ui/ui.abstract.js +3 -3
  199. package/src/ui/ui.interface.d.ts +3 -3
  200. package/src/components/feedback/dialog/dialog.class.d.ts +0 -7
  201. package/src/components/feedback/dialog/dialog.class.js +0 -21
  202. package/src/components/feedback/dialog/dialog.interface.d.ts +0 -4
  203. package/src/components/feedback/dialog/dialog.interface.js +0 -2
  204. package/src/components/feedback/message-box/message-box.d.ts +0 -9
  205. package/src/components/feedback/message-box/message-box.interface.d.ts +0 -4
  206. package/src/components/feedback/message-box/message-box.interface.js +0 -2
  207. package/src/components/feedback/message-box/message-box.js +0 -33
  208. package/src/components/feedback/overlay/container/body/body.d.ts +0 -7
  209. package/src/components/feedback/overlay/container/body/body.js +0 -17
  210. package/src/components/feedback/overlay/container/container.d.ts +0 -15
  211. package/src/components/feedback/overlay/container/container.js +0 -37
  212. package/src/components/feedback/overlay/container/footer/cancel-button/cancel-button.d.ts +0 -8
  213. package/src/components/feedback/overlay/container/footer/cancel-button/cancel-button.js +0 -31
  214. package/src/components/feedback/overlay/container/footer/confirm-button/confirm-button.d.ts +0 -9
  215. package/src/components/feedback/overlay/container/footer/confirm-button/confirm-button.js +0 -31
  216. package/src/components/feedback/overlay/container/footer/footer.d.ts +0 -10
  217. package/src/components/feedback/overlay/container/footer/footer.js +0 -47
  218. package/src/components/feedback/overlay/container/header/close-button/close-button.d.ts +0 -11
  219. package/src/components/feedback/overlay/container/header/close-button/close-button.js +0 -33
  220. package/src/components/feedback/overlay/container/header/header.d.ts +0 -12
  221. package/src/components/feedback/overlay/container/header/header.js +0 -25
  222. package/src/components/feedback/overlay/container/header/title/title.d.ts +0 -9
  223. package/src/components/feedback/overlay/container/header/title/title.js +0 -19
  224. package/src/components/feedback/overlay/overlay.abstract.d.ts +0 -13
  225. package/src/components/feedback/overlay/overlay.abstract.js +0 -59
@@ -1,17 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TdPopperContent = void 0;
4
+ const utils_1 = require("@type-dom/utils");
4
5
  const ui_abstract_1 = require("../../../../ui/ui.abstract");
5
6
  const td_focus_trap_class_1 = require("../../td-focus-trap/td-focus-trap.class");
7
+ const content_const_1 = require("./content.const");
8
+ const td_form_const_1 = require("../../../form/td-form/td-form.const");
9
+ const td_popper_const_1 = require("../td-popper.const");
6
10
  class TdPopperContent extends ui_abstract_1.UI {
7
11
  constructor(params = {}) {
8
12
  super(params);
9
13
  this.className = 'TdPopperContent';
10
- this.ctrl.addAttrName('td-popper-content');
11
- this.ctrl.addAttrObj({
14
+ this.attr.addName('td-popper-content');
15
+ this.attr.addObj({
12
16
  tabindex: -1
13
17
  });
14
- this.ctrl.addStyleObj({
18
+ this.style.addObj({
15
19
  // padding: '10px',
16
20
  // backgroundColor: $bgColors.default,
17
21
  // borderRadius: $borderRadius.base,
@@ -19,7 +23,24 @@ class TdPopperContent extends ui_abstract_1.UI {
19
23
  });
20
24
  this.focusTrap = new td_focus_trap_class_1.TdFocusTrap();
21
25
  this.addChild(this.focusTrap);
22
- this.props = this.setParams(params);
26
+ if (params.contentStyle) { // todo
27
+ this.style.addObj(params.contentStyle);
28
+ }
29
+ this.buildProps(content_const_1.popperContentProps);
30
+ this.props = this.useParams(params);
31
+ }
32
+ setup() {
33
+ const formItemContext = this.inject(td_form_const_1.formItemContextKey, undefined);
34
+ const arrowOffset = 0;
35
+ this.provide(td_popper_const_1.POPPER_CONTENT_INJECTION_KEY, {
36
+ // arrowStyle,
37
+ // arrowRef,
38
+ arrowOffset,
39
+ });
40
+ if (formItemContext) {
41
+ // disallow auto-id from inside popper content
42
+ this.provide(td_form_const_1.formItemContextKey, Object.assign(Object.assign({}, formItemContext), { addInputId: utils_1.NOOP, removeInputId: utils_1.NOOP }));
43
+ }
23
44
  }
24
45
  }
25
46
  exports.TdPopperContent = TdPopperContent;
@@ -0,0 +1,3 @@
1
+ import { IPopperCoreConfigProps, ITdPopperContentConfig } from './content.interface';
2
+ export declare const popperCoreConfigProps: IPopperCoreConfigProps;
3
+ export declare const popperContentProps: ITdPopperContentConfig;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.popperContentProps = exports.popperCoreConfigProps = void 0;
4
+ exports.popperCoreConfigProps = {
5
+ boundariesPadding: 0,
6
+ // fallbackPlacements: undefined,
7
+ gpuAcceleration: true,
8
+ /**
9
+ * @description offset of the Tooltip
10
+ */
11
+ offset: 12,
12
+ /**
13
+ * @description position of Tooltip
14
+ */
15
+ placement: 'bottom',
16
+ /**
17
+ * @description [popper.js](https://popper.js.org/docs/v2/) parameters
18
+ */
19
+ // popperOptions: () => ({}),
20
+ strategy: 'absolute',
21
+ };
22
+ exports.popperContentProps = Object.assign(Object.assign({}, exports.popperCoreConfigProps), {
23
+ // style: {
24
+ // type: definePropType<StyleValue>([String, Array, Object]),
25
+ // },
26
+ // className: {
27
+ // type: definePropType<ClassType>([String, Array, Object]),
28
+ // },
29
+ effect: 'dark', enterable: true, focusOnShow: false, trapping: false, stopPopperMouseEvent: true });
@@ -1,4 +1,5 @@
1
1
  import { IUI, IUIConfig } from '../../../../ui/ui.interface';
2
+ import { IStyle } from '@type-dom/css-type';
2
3
  export interface ITdPopperContent extends IUI {
3
4
  className: 'TdPopperContent';
4
5
  }
@@ -22,6 +23,7 @@ export interface IPopperCoreConfigProps extends IUIConfig {
22
23
  }
23
24
  export interface ITdPopperContentConfig extends IPopperCoreConfigProps {
24
25
  id?: string;
26
+ contentStyle?: IStyle;
25
27
  effect?: string;
26
28
  visible?: boolean;
27
29
  enterable?: boolean;
@@ -34,4 +36,11 @@ export interface ITdPopperContentConfig extends IPopperCoreConfigProps {
34
36
  ariaLabel?: string;
35
37
  virtualTriggering?: boolean;
36
38
  zIndex?: number;
39
+ emits?: {
40
+ mouseenter?: (evt: MouseEvent) => void;
41
+ mouseleave?: (evt: MouseEvent) => void;
42
+ focus?: (evt: FocusEvent) => void;
43
+ blur?: (evt: FocusEvent) => void;
44
+ close?: () => void;
45
+ };
37
46
  }
@@ -3,5 +3,5 @@ import { ITdPopper, ITdPopperConfig } from './td-popper.interface';
3
3
  export declare class TdPopper extends UI<undefined> implements ITdPopper {
4
4
  className: 'TdPopper';
5
5
  props: ITdPopperConfig;
6
- constructor(params?: ITdPopperConfig);
6
+ constructor(params: ITdPopperConfig);
7
7
  }
@@ -1,12 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TdPopper = void 0;
4
+ const framework_1 = require("@type-dom/framework");
4
5
  const ui_abstract_1 = require("../../../ui/ui.abstract");
6
+ const td_popper_const_1 = require("./td-popper.const");
5
7
  class TdPopper extends ui_abstract_1.UI {
6
- constructor(params = {}) {
8
+ constructor(params) {
7
9
  super(params, 'fragment');
8
10
  this.className = 'TdPopper';
9
- this.props = this.setParams(params);
11
+ const triggerRef = (0, framework_1.createProxy)(null);
12
+ const popperInstanceRef = (0, framework_1.createProxy)(null);
13
+ const contentRef = (0, framework_1.createProxy)(null);
14
+ const referenceRef = (0, framework_1.createProxy)(null);
15
+ if (!params.role) {
16
+ params.role = 'tooltip';
17
+ }
18
+ this.props = this.useParams(params);
19
+ const role = this.props.role;
20
+ const popperProviders = {
21
+ /**
22
+ * @description trigger element
23
+ */
24
+ triggerRef,
25
+ /**
26
+ * @description popperjs instance
27
+ */
28
+ popperInstanceRef,
29
+ /**
30
+ * @description popper content element
31
+ */
32
+ contentRef,
33
+ /**
34
+ * @description popper reference element
35
+ */
36
+ referenceRef,
37
+ /**
38
+ * @description role determines how aria attributes are distributed
39
+ */
40
+ role,
41
+ };
42
+ this.provide(td_popper_const_1.POPPER_INJECTION_KEY, popperProviders);
10
43
  }
11
44
  }
12
45
  exports.TdPopper = TdPopper;
@@ -0,0 +1,21 @@
1
+ import { InjectionKey } from '@type-dom/framework';
2
+ import { IRoleTypes } from './td-popper.interface';
3
+ /**
4
+ * triggerRef indicates the element that triggers popper
5
+ * contentRef indicates the element of popper content
6
+ * referenceRef indicates the element that popper content relative with
7
+ */
8
+ export type TdPopperInjectionContext = {
9
+ triggerRef: any;
10
+ contentRef: any;
11
+ popperInstanceRef: any;
12
+ referenceRef: any;
13
+ role: IRoleTypes;
14
+ };
15
+ export declare const POPPER_INJECTION_KEY: InjectionKey<TdPopperInjectionContext>;
16
+ export type ElPopperContentInjectionContext = {
17
+ arrowRef: any;
18
+ arrowOffset: any;
19
+ arrowStyle: any;
20
+ };
21
+ export declare const POPPER_CONTENT_INJECTION_KEY: InjectionKey<ElPopperContentInjectionContext>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POPPER_CONTENT_INJECTION_KEY = exports.POPPER_INJECTION_KEY = void 0;
4
+ exports.POPPER_INJECTION_KEY = Symbol('popper');
5
+ exports.POPPER_CONTENT_INJECTION_KEY = Symbol('popperContent');
@@ -3,5 +3,16 @@ import { ITdPopperTrigger, ITdPopperTriggerConfig } from './trigger.interface';
3
3
  export declare class TdPopperTrigger extends UI implements ITdPopperTrigger {
4
4
  className: 'TdPopperTrigger';
5
5
  props: ITdPopperTriggerConfig;
6
+ private role;
7
+ triggerRef?: HTMLElement;
8
+ virtualTriggerAriaStopWatch?: () => void;
6
9
  constructor(params?: ITdPopperTriggerConfig);
10
+ get ariaHaspopup(): any;
11
+ get ariaControls(): string | undefined;
12
+ get ariaDescribedby(): string | undefined;
13
+ get ariaExpanded(): string | undefined;
14
+ setup(): void;
15
+ beforeDestroy(): void;
16
+ setVirtualRef(el: HTMLElement): void;
17
+ setTriggerRef(el: HTMLElement, prevEl?: HTMLElement): void;
7
18
  }
@@ -1,12 +1,107 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TdPopperTrigger = void 0;
4
+ const utils_1 = require("@type-dom/utils");
4
5
  const ui_abstract_1 = require("../../../../ui/ui.abstract");
6
+ const use_forward_ref_1 = require("../../../../hooks/use-forward-ref");
7
+ const td_only_child_class_1 = require("../../td-only-child/td-only-child.class");
8
+ const content_const_1 = require("../content/content.const");
9
+ const td_popper_const_1 = require("../td-popper.const");
10
+ const trigger_const_1 = require("./trigger.const");
5
11
  class TdPopperTrigger extends ui_abstract_1.UI {
6
12
  constructor(params = {}) {
7
13
  super(params);
8
14
  this.className = 'TdPopperTrigger';
9
- this.props = this.setParams(params);
15
+ if (!params.virtualTriggering) {
16
+ this.addChild(new td_only_child_class_1.TdOnlyChild());
17
+ }
18
+ this.buildProps(content_const_1.popperContentProps);
19
+ this.props = this.useParams(params);
20
+ }
21
+ get ariaHaspopup() {
22
+ if (this.role && this.role !== 'tooltip') {
23
+ return this.role;
24
+ }
25
+ return undefined;
26
+ }
27
+ get ariaControls() {
28
+ return this.ariaHaspopup ? this.props.id : undefined;
29
+ }
30
+ get ariaDescribedby() {
31
+ if (this.role && this.role === 'tooltip') {
32
+ return this.props.open && this.props.id ? this.props.id : undefined;
33
+ }
34
+ return undefined;
35
+ }
36
+ get ariaExpanded() {
37
+ return this.ariaHaspopup.value ? `${this.props.open}` : undefined;
38
+ }
39
+ setup() {
40
+ const { role, triggerRef } = this.inject(td_popper_const_1.POPPER_INJECTION_KEY, undefined);
41
+ this.role = role;
42
+ this.triggerRef = triggerRef;
43
+ (0, use_forward_ref_1.useForwardRef)(triggerRef);
44
+ }
45
+ beforeDestroy() {
46
+ var _a;
47
+ (_a = this.virtualTriggerAriaStopWatch) === null || _a === void 0 ? void 0 : _a.call(this);
48
+ this.virtualTriggerAriaStopWatch = undefined;
49
+ if (this.triggerRef && (0, utils_1.isElement)(this.triggerRef)) {
50
+ const el = this.triggerRef;
51
+ trigger_const_1.TRIGGER_ELE_EVENTS.forEach((eventName) => {
52
+ const handler = this.props[eventName];
53
+ if (handler) {
54
+ // todo eventName onClick
55
+ el.removeEventListener(eventName.slice(2).toLowerCase(), handler);
56
+ }
57
+ });
58
+ this.triggerRef = undefined;
59
+ }
60
+ }
61
+ setVirtualRef(el) {
62
+ if (el) {
63
+ this.props.virtualRef = el;
64
+ this.triggerRef = el;
65
+ }
66
+ }
67
+ setTriggerRef(el, prevEl) {
68
+ var _a;
69
+ (_a = this.virtualTriggerAriaStopWatch) === null || _a === void 0 ? void 0 : _a.call(this);
70
+ this.virtualTriggerAriaStopWatch = undefined;
71
+ if ((0, utils_1.isElement)(el)) {
72
+ trigger_const_1.TRIGGER_ELE_EVENTS.forEach((eventName) => {
73
+ var _a;
74
+ const handler = this.props[eventName];
75
+ if (handler) {
76
+ el.addEventListener(eventName.slice(2).toLowerCase(), handler);
77
+ (_a = prevEl === null || prevEl === void 0 ? void 0 : prevEl.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(prevEl, eventName.slice(2).toLowerCase(), handler);
78
+ }
79
+ });
80
+ // this.virtualTriggerAriaStopWatch = this.watch(
81
+ // [ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded],
82
+ // (watches) => {
83
+ // ;[
84
+ // 'aria-controls',
85
+ // 'aria-describedby',
86
+ // 'aria-haspopup',
87
+ // 'aria-expanded',
88
+ // ].forEach((key, idx) => {
89
+ // isNil(watches[idx])
90
+ // ? el.removeAttribute(key)
91
+ // : el.setAttribute(key, watches[idx]!)
92
+ // })
93
+ // },
94
+ // { immediate: true }
95
+ // )
96
+ }
97
+ if ((0, utils_1.isElement)(prevEl)) {
98
+ [
99
+ 'aria-controls',
100
+ 'aria-describedby',
101
+ 'aria-haspopup',
102
+ 'aria-expanded',
103
+ ].forEach((key) => prevEl.removeAttribute(key));
104
+ }
10
105
  }
11
106
  }
12
107
  exports.TdPopperTrigger = TdPopperTrigger;
@@ -0,0 +1 @@
1
+ export declare const TRIGGER_ELE_EVENTS: readonly ["onMouseenter", "onMouseleave", "onClick", "onKeydown", "onFocus", "onBlur", "onContextmenu"];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRIGGER_ELE_EVENTS = void 0;
4
+ exports.TRIGGER_ELE_EVENTS = [
5
+ 'onMouseenter',
6
+ 'onMouseleave',
7
+ 'onClick',
8
+ 'onKeydown',
9
+ 'onFocus',
10
+ 'onBlur',
11
+ 'onContextmenu',
12
+ ];
@@ -4,6 +4,7 @@ export interface ITdPopperTrigger extends IUI {
4
4
  }
5
5
  type IEvent = (event: Event) => void;
6
6
  export interface ITdPopperTriggerConfig extends IUIConfig {
7
+ virtualRef?: HTMLElement;
7
8
  virtualTriggering?: boolean;
8
9
  onMouseenter?: IEvent;
9
10
  onMouseleave?: IEvent;
@@ -6,7 +6,7 @@ class TdTooltipContent extends ui_abstract_1.UI {
6
6
  constructor(params = {}) {
7
7
  super(params);
8
8
  this.className = 'TdTooltipContent';
9
- this.props = this.setParams(params);
9
+ this.props = this.useParams(params);
10
10
  }
11
11
  }
12
12
  exports.TdTooltipContent = TdTooltipContent;
@@ -18,7 +18,7 @@ class TdTooltip extends ui_abstract_1.UI {
18
18
  this.addChild(new td_popper_class_1.TdPopper({
19
19
  slot: [this.trigger, this.content]
20
20
  }));
21
- this.props = this.setParams(params);
21
+ this.props = this.useParams(params);
22
22
  }
23
23
  }
24
24
  exports.TdTooltip = TdTooltip;
@@ -6,7 +6,7 @@ class TdTooltipTrigger extends ui_abstract_1.UI {
6
6
  constructor(params = {}) {
7
7
  super(params);
8
8
  this.className = 'TdTooltipTrigger';
9
- this.props = this.setParams(params);
9
+ this.props = this.useParams(params);
10
10
  }
11
11
  }
12
12
  exports.TdTooltipTrigger = TdTooltipTrigger;
@@ -7,7 +7,7 @@ class CheckboxGroup extends framework_1.TypeDiv {
7
7
  constructor() {
8
8
  super();
9
9
  this.className = 'CheckboxGroup';
10
- this.ctrl.addAttrName('checkbox-group');
10
+ this.attr.addName('checkbox-group');
11
11
  this.childNodes = [];
12
12
  this.value = [];
13
13
  }
@@ -17,7 +17,7 @@ class CheckboxGroup extends framework_1.TypeDiv {
17
17
  const random = Math.random();
18
18
  options.forEach((opt) => {
19
19
  const optObj = new checkbox_option_class_1.CheckboxOption();
20
- optObj.input.ctrl.addAttrObj({
20
+ optObj.input.attr.addObj({
21
21
  name: 'checkbox' + random,
22
22
  label: opt.label,
23
23
  value: opt.value,
@@ -37,21 +37,20 @@ class CheckboxGroup extends framework_1.TypeDiv {
37
37
  // console.error('value is ', value);
38
38
  this.value = value.split(',');
39
39
  this.childNodes.forEach((optObj) => {
40
- var _a;
41
- if (this.value.indexOf(String((_a = optObj.input.props.attrObj) === null || _a === void 0 ? void 0 : _a.value)) !== -1) {
42
- optObj.input.ctrl.setAttrObj({
40
+ if (this.value.indexOf(String(optObj.input.attr.get('value'))) !== -1) {
41
+ optObj.input.attr.setObj({
43
42
  checked: true
44
43
  });
45
44
  }
46
45
  else {
47
- optObj.input.ctrl.removeAttribute('checked');
46
+ optObj.input.attr.remove('checked');
48
47
  }
49
48
  });
50
49
  }
51
50
  else {
52
51
  // console.error('value is ', value);
53
52
  this.childNodes.forEach((optObj) => {
54
- optObj.input.ctrl.removeAttribute('checked');
53
+ optObj.input.attr.remove('checked');
55
54
  });
56
55
  }
57
56
  }
@@ -8,5 +8,5 @@ export declare class CheckboxOption extends TypeSpan implements ICheckboxOption
8
8
  childNodes: [Input, TextNode];
9
9
  textNode: TextNode;
10
10
  constructor();
11
- initEvents(): void;
11
+ setup(): void;
12
12
  }
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CheckboxOption = void 0;
4
- const rxjs_1 = require("rxjs");
5
4
  const framework_1 = require("@type-dom/framework");
6
5
  class CheckboxOption extends framework_1.TypeSpan {
7
6
  constructor() {
8
7
  super();
9
8
  this.className = 'CheckboxOption';
10
9
  this.input = new framework_1.Input({ parent: this });
11
- this.input.ctrl.addAttrObj({
10
+ this.input.attr.addObj({
12
11
  type: 'checkbox'
13
12
  // name: optionSetting.name,
14
13
  // label: opt.label,
@@ -18,27 +17,29 @@ class CheckboxOption extends framework_1.TypeSpan {
18
17
  this.textNode = new framework_1.TextNode();
19
18
  this.childNodes = [this.input, this.textNode];
20
19
  }
21
- initEvents() {
22
- this.subscriptions.push((0, rxjs_1.fromEvent)(this.input.dom, 'click').subscribe(() => {
23
- var _a, _b, _c;
24
- console.log('this.input.dom click . ');
25
- console.log('this.input.dom.value is ', this.input.dom.value);
26
- const flag = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.value.findIndex((item) => item === this.input.dom.value);
27
- if (this.input.dom.checked) {
28
- if (flag === -1) {
29
- (_b = this.parent) === null || _b === void 0 ? void 0 : _b.value.push(this.input.dom.value);
30
- this.input.ctrl.setAttrObj({
31
- checked: true
32
- });
20
+ setup() {
21
+ this.input.addEvents({
22
+ click: () => {
23
+ var _a, _b, _c, _d;
24
+ console.log('this.input.dom click . ');
25
+ console.log('this.input.dom.value is ', this.input.dom.value);
26
+ const flag = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.value.findIndex((item) => item === this.input.dom.value);
27
+ if (this.input.dom.checked) {
28
+ if (flag === -1) {
29
+ (_b = this.parent) === null || _b === void 0 ? void 0 : _b.value.push(this.input.dom.value);
30
+ this.input.attr.setObj({
31
+ checked: true
32
+ });
33
+ }
33
34
  }
34
- }
35
- else {
36
- this.input.ctrl.removeAttribute('checked');
37
- if (flag && flag !== -1) {
38
- (_c = this.parent) === null || _c === void 0 ? void 0 : _c.value.splice(flag, 1);
35
+ else {
36
+ this.input.attr.remove('checked');
37
+ if (flag && flag !== -1) {
38
+ ((_c = this.parent) === null || _c === void 0 ? void 0 : _c.value) && ((_d = this.parent) === null || _d === void 0 ? void 0 : _d.value.splice(flag, 1));
39
+ }
39
40
  }
40
41
  }
41
- }));
42
+ });
42
43
  }
43
44
  }
44
45
  exports.CheckboxOption = CheckboxOption;
@@ -18,5 +18,5 @@ export declare abstract class PropertyCascade extends FieldItem {
18
18
  set fieldSetting(value: IOptionSetting | undefined);
19
19
  resetCascadeConfigResultValue(value: string | number | boolean): void;
20
20
  resetCascadeConfig(optionSetting: IOptionSetting): void;
21
- initEvents(): void;
21
+ setup(): void;
22
22
  }
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PropertyCascade = void 0;
4
- const rxjs_1 = require("rxjs");
5
4
  const framework_1 = require("@type-dom/framework");
6
5
  const field_select_class_1 = require("../../../form/field-select/field-select.class");
7
6
  const field_item_abstract_1 = require("../field-item.abstract");
@@ -13,10 +12,10 @@ const field_item_style_1 = require("../field-item.style");
13
12
  class PropertyCascade extends field_item_abstract_1.FieldItem {
14
13
  constructor(labelText = '二级级联') {
15
14
  super(labelText);
16
- this.ctrl.addAttrName('cascade-property');
15
+ this.attr.addName('cascade-property');
17
16
  this.cascadeDiv = new framework_1.Div();
18
- this.cascadeDiv.ctrl.addAttrName('cascade');
19
- this.cascadeDiv.ctrl.addStyleObj({
17
+ this.cascadeDiv.attr.addName('cascade');
18
+ this.cascadeDiv.style.addObj({
20
19
  height: '100%',
21
20
  lineHeight: '32px',
22
21
  textAlign: 'center',
@@ -35,16 +34,16 @@ class PropertyCascade extends field_item_abstract_1.FieldItem {
35
34
  });
36
35
  // 单独的方法实现
37
36
  this.firstStageSelectObj = new field_select_class_1.FieldSelect();
38
- this.firstStageSelectObj.ctrl.addAttrName('first-stage-select');
39
- this.firstStageSelectObj.ctrl.setStyleObj(Object.assign({}, field_item_style_1.itemContentStyle, {
37
+ this.firstStageSelectObj.attr.addName('first-stage-select');
38
+ this.firstStageSelectObj.style.setObj(Object.assign({}, field_item_style_1.itemContentStyle, {
40
39
  width: '100%',
41
40
  margin: '5px 0'
42
41
  // borderRadius: '4px 0 0 4px',
43
42
  // borderRight: 'none',
44
43
  }));
45
44
  this.secondStageSelectObj = new field_select_class_1.FieldSelect();
46
- this.secondStageSelectObj.ctrl.addAttrName('second-stage-select');
47
- this.secondStageSelectObj.ctrl.setStyleObj(Object.assign({}, field_item_style_1.itemContentStyle, {
45
+ this.secondStageSelectObj.attr.addName('second-stage-select');
46
+ this.secondStageSelectObj.style.setObj(Object.assign({}, field_item_style_1.itemContentStyle, {
48
47
  width: '100%'
49
48
  }));
50
49
  this.cascadeDiv.childNodes = [
@@ -55,7 +54,7 @@ class PropertyCascade extends field_item_abstract_1.FieldItem {
55
54
  }
56
55
  get fieldSetting() {
57
56
  var _a;
58
- const fieldSetting = (_a = this.settings) === null || _a === void 0 ? void 0 : _a.fieldSetting;
57
+ const fieldSetting = (_a = this.props) === null || _a === void 0 ? void 0 : _a.fieldSetting;
59
58
  if (fieldSetting) {
60
59
  const optionSetting = {
61
60
  name: fieldSetting.name,
@@ -104,7 +103,7 @@ class PropertyCascade extends field_item_abstract_1.FieldItem {
104
103
  // TypeFormDesigner.webDocument.setAttribute('field-config', JSON.stringify(value));
105
104
  if (this.settings === undefined) {
106
105
  if (value !== undefined) {
107
- this.setSetting('fieldSetting', value);
106
+ this.setProp('fieldSetting', value);
108
107
  }
109
108
  }
110
109
  else {
@@ -112,7 +111,7 @@ class PropertyCascade extends field_item_abstract_1.FieldItem {
112
111
  delete this.settings.fieldSetting;
113
112
  }
114
113
  else {
115
- this.setSetting('fieldSetting', value);
114
+ this.setProp('fieldSetting', value);
116
115
  }
117
116
  }
118
117
  }
@@ -151,40 +150,46 @@ class PropertyCascade extends field_item_abstract_1.FieldItem {
151
150
  // this.secondStageSelectObj.setSelectedValue(secondStageValue);
152
151
  }
153
152
  }
154
- initEvents() {
155
- this.subscriptions.push((0, rxjs_1.fromEvent)(this.firstStageSelectObj.dom, 'change').subscribe(() => {
156
- var _a, _b;
157
- console.log('this.firstStageSelectObj.dom change . ');
158
- console.log('this.firstStageSelectObj.dom.value is ', this.firstStageSelectObj.dom.value);
159
- const selectedOption = (_b = (_a = this.cascadeConfig) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.find((opt) => String(opt.value) === this.firstStageSelectObj.dom.value);
160
- if (!this.cascadeConfig) {
161
- throw Error('无法获取cascadeConfig');
162
- }
163
- // todo 没有改变值 ?????
164
- if (selectedOption) {
165
- this.resetCascadeConfigResultValue(selectedOption.value);
166
- }
167
- else {
168
- this.secondStageSelectObj.resetOptions([
169
- {
170
- label: '请先选择上级',
171
- value: 0
172
- }
173
- ], 0);
174
- return;
153
+ setup() {
154
+ this.firstStageSelectObj.addEvents({
155
+ change: () => {
156
+ var _a, _b;
157
+ console.log('this.firstStageSelectObj.dom change . ');
158
+ console.log('this.firstStageSelectObj.dom.value is ', this.firstStageSelectObj.dom.value);
159
+ const selectedOption = (_b = (_a = this.cascadeConfig) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.find((opt) => String(opt.value) === this.firstStageSelectObj.dom.value);
160
+ if (!this.cascadeConfig) {
161
+ throw Error('无法获取cascadeConfig');
162
+ }
163
+ // todo 没有改变值 ?????
164
+ if (selectedOption) {
165
+ this.resetCascadeConfigResultValue(selectedOption.value);
166
+ }
167
+ else {
168
+ this.secondStageSelectObj.resetOptions([
169
+ {
170
+ label: '请先选择上级',
171
+ value: 0
172
+ }
173
+ ], 0);
174
+ return;
175
+ }
176
+ if (selectedOption && selectedOption.options) {
177
+ console.log('this.cascadeConfig is ', this.cascadeConfig);
178
+ console.log('selectedOption is ', selectedOption);
179
+ this.secondStageSelectObj.resetOptions(selectedOption.options, 0);
180
+ }
175
181
  }
176
- if (selectedOption && selectedOption.options) {
177
- console.log('this.cascadeConfig is ', this.cascadeConfig);
178
- console.log('selectedOption is ', selectedOption);
179
- this.secondStageSelectObj.resetOptions(selectedOption.options, 0);
182
+ });
183
+ this.secondStageSelectObj.addEvents({
184
+ click: () => {
185
+ console.log('this.secondStageSelectObj.dom change . ');
186
+ this.reset(this.secondStageSelectObj.dom.value);
187
+ },
188
+ change: () => {
189
+ console.log('this.secondStageSelectObj.dom change . ');
190
+ this.reset(this.secondStageSelectObj.dom.value);
180
191
  }
181
- }), (0, rxjs_1.fromEvent)(this.secondStageSelectObj.dom, 'click').subscribe(() => {
182
- console.log('this.secondStageSelectObj.dom change . ');
183
- this.reset(this.secondStageSelectObj.dom.value);
184
- }), (0, rxjs_1.fromEvent)(this.secondStageSelectObj.dom, 'change').subscribe(() => {
185
- console.log('this.secondStageSelectObj.dom change . ');
186
- this.reset(this.secondStageSelectObj.dom.value);
187
- }));
192
+ });
188
193
  }
189
194
  }
190
195
  exports.PropertyCascade = PropertyCascade;