
/* eslint-disable react/jsx-no-useless-fragment */
import type { Meta, StoryObj } from '@storybook/react';

import {{COMPONENT_CLASS_NAME}} from './index';
import { configProps } from './mock';

const meta: Meta<typeof {{COMPONENT_CLASS_NAME}}> = {
  title: '{{COMPONENT_CLASS_NAME}}',
  component: {{COMPONENT_CLASS_NAME}},
  excludeStories: /.*Data$/
};

export default meta;
type Story = StoryObj<typeof {{COMPONENT_CLASS_NAME}}>;

if (!window.PCore) {
  window.PCore = {} as any;
}

const countrylistData = {
  data: [
    {
      Name: 'United States of America',
      ShortName: 'USA'
    },
    {
      Name: 'Canada',
      ShortName: 'CAN'
    },
    {
      Name: 'Mexico',
      ShortName: 'MEX'
    }
  ]
};

window.PCore.getDataPageUtils = () => {
  return {
    getData: () => {
      return new Promise(resolve => {
        resolve(countrylistData);
      });
    },
    getDataAsync: () => {
      return new Promise(resolve => {
        resolve(countrylistData);
      });
    }
  } as any;
};

export const Base{{COMPONENT_CLASS_NAME}}: Story = (args: any) => {

  const props = {
    getPConnect: () => {
      return {
        getValue: (value: any) => {
          return value;
        },
        getContextName: () => {
          return 'app/primary_1';
        },
        getLocalizedValue: (value: any) => {
          return value;
        },
        getActionsApi: () => {
          return {
            updateFieldValue: () => {
              /* nothing */
            },
            triggerFieldChange: () => {
              /* nothing */
            }
          };
        },
        ignoreSuggestion: () => {
          /* nothing */
        },
        acceptSuggestion: () => {
          /* nothing */
        },
        setInheritedProps: () => {
          /* nothing */
        },
        resolveConfigProps: () => {
          /* nothing */
        }
      };
    }
  };

  return (
    <>
      <{{COMPONENT_CLASS_NAME}} {...props} {...args} />
    </>
  );
};

Base{{COMPONENT_CLASS_NAME}}.args = {

};
