optionFoundation.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import BaseFoundation, { DefaultAdapter } from '../base/foundation';
  2. export interface BasicOptionProps {
  3. [x: string]: any;
  4. value?: string | number;
  5. label?: string | number | unknown;
  6. children?: unknown;
  7. disabled?: boolean;
  8. showTick?: boolean;
  9. className?: string;
  10. style?: Record<string, any>;
  11. }
  12. export interface OptionDefaultAdapter extends Partial<DefaultAdapter> {
  13. notifyClick(option: BasicOptionProps): void;
  14. }
  15. export default class OptionFoundation extends BaseFoundation<OptionDefaultAdapter> {
  16. constructor(adapter: OptionDefaultAdapter) {
  17. super({ ...adapter });
  18. }
  19. // eslint-disable-next-line @typescript-eslint/no-empty-function
  20. init() {}
  21. // eslint-disable-next-line @typescript-eslint/no-empty-function
  22. destroy() {}
  23. onOptionClick(option: BasicOptionProps) {
  24. const isDisabled = this._isDisabled();
  25. if (!isDisabled) {
  26. this._adapter.notifyClick(option);
  27. }
  28. }
  29. _isDisabled() {
  30. return this.getProp('disabled');
  31. }
  32. }