@owp/core 2.5.20 → 2.5.22
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.
- package/dayjs.d.ts +4 -0
- package/dayjs.js +2 -0
- package/dist/_virtual/isBetween.js +8 -0
- package/dist/_virtual/isBetween.js.map +1 -0
- package/dist/_virtual/isBetween2.js +5 -0
- package/dist/_virtual/isBetween2.js.map +1 -0
- package/dist/components/OwpCommonCode/OwpCommonCodeQuerySelector.js +26 -26
- package/dist/components/OwpCommonCode/OwpCommonCodeQuerySelector.js.map +1 -1
- package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js +29 -29
- package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js.map +1 -1
- package/dist/components/OwpMrtTable/OwpMrtTable.js +144 -141
- package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
- package/dist/components/OwpOptionSelector/OwpOptionSelector.js +20 -20
- package/dist/components/OwpOptionSelector/OwpOptionSelector.js.map +1 -1
- package/dist/components/OwpPageContent/OwpPageContent.js +20 -19
- package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
- package/dist/components/OwpPicker/OwpDatePicker.js +216 -235
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpDateRangePicker.js +21 -21
- package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +310 -340
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpWeekDatePicker.js +28 -29
- package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpYearRangePicker.js +1 -1
- package/dist/components/OwpPicker/OwpYearRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/constants/index.js +21 -6
- package/dist/components/OwpPicker/constants/index.js.map +1 -1
- package/dist/components/OwpPicker/internal/DatePickerInput.js +5 -5
- package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -1
- package/dist/components/OwpPicker/utils/index.js +22 -0
- package/dist/components/OwpPicker/utils/index.js.map +1 -0
- package/dist/components/OwpQuerySelector/OwpQuerySelector.js +218 -205
- package/dist/components/OwpQuerySelector/OwpQuerySelector.js.map +1 -1
- package/dist/components/OwpSection/OwpSection.js +118 -111
- package/dist/components/OwpSection/OwpSection.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +59 -59
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorSelect.js +88 -85
- package/dist/components/OwpSelectorBase/OwpSelectorSelect.js.map +1 -1
- package/dist/components/OwpSelectorBase/hooks/useOwpSelectorBase.js +93 -93
- package/dist/components/OwpSelectorBase/hooks/useOwpSelectorBase.js.map +1 -1
- package/dist/components/OwpTable/OwpDataTable.js +329 -317
- package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js +77 -74
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
- package/dist/components/OwpTable/OwpTable.js +66 -219
- package/dist/components/OwpTable/OwpTable.js.map +1 -1
- package/dist/components/OwpTable/internal/OwpTableBase.js +195 -0
- package/dist/components/OwpTable/internal/OwpTableBase.js.map +1 -0
- package/dist/components/OwpTable/internal/OwpTableTotalCount.js +23 -0
- package/dist/components/OwpTable/internal/OwpTableTotalCount.js.map +1 -0
- package/dist/components/OwpTable/internal/defaultTableStyle.js +10 -10
- package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
- package/dist/components/OwpTable/utils/tableSx.js +9 -0
- package/dist/components/OwpTable/utils/tableSx.js.map +1 -0
- package/dist/components/OwpTextField/OwpTextMaskField.js +95 -86
- package/dist/components/OwpTextField/OwpTextMaskField.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +164 -179
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +10 -10
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/components/OwpYesNoSelector/OwpYesNoSelector.js.map +1 -1
- package/dist/dayjs.js +18 -0
- package/dist/dayjs.js.map +1 -0
- package/dist/features/themePreview/components/ThemePreviewCanvas.js +22 -22
- package/dist/features/themePreview/components/ThemePreviewCanvas.js.map +1 -1
- package/dist/features/themePreview/configs/table.js +4 -4
- package/dist/features/themePreview/configs/table.js.map +1 -1
- package/dist/features/themePreview/hooks/useThemePreview.js +16 -16
- package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
- package/dist/hooks/{useInitCommonCodes.js → internal/useInitCommonCodes.js} +6 -6
- package/dist/hooks/internal/useInitCommonCodes.js.map +1 -0
- package/dist/hooks/internal/useMinimumVisibleState.js +31 -0
- package/dist/hooks/internal/useMinimumVisibleState.js.map +1 -0
- package/dist/hooks/useInitApp.js +17 -14
- package/dist/hooks/useInitApp.js.map +1 -1
- package/dist/hooks.js +49 -51
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +91 -94
- package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/isBetween.js +23 -0
- package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/isBetween.js.map +1 -0
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/types/components/OwpCommonCode/OwpCommonCodeQuerySelector.d.ts +3 -3
- package/dist/types/components/OwpCommonCode/OwpCommonCodeSelector.d.ts +3 -3
- package/dist/types/components/OwpMrtTable/OwpMrtTable.d.ts +1 -0
- package/dist/types/components/OwpOptionSelector/OwpOptionSelector.d.ts +2 -2
- package/dist/types/components/OwpPicker/OwpDatePicker.d.ts +1 -1
- package/dist/types/components/OwpPicker/OwpTimePicker.d.ts +2 -2
- package/dist/types/components/OwpPicker/constants/index.d.ts +15 -0
- package/dist/types/components/OwpPicker/utils/index.d.ts +6 -0
- package/dist/types/components/OwpQuerySelector/OwpQuerySelector.d.ts +1 -1
- package/dist/types/components/OwpQuerySelector/types/types.d.ts +1 -0
- package/dist/types/components/OwpSection/OwpSection.d.ts +9 -3
- package/dist/types/components/OwpSelectorBase/hooks/useOwpSelectorBase.d.ts +1 -1
- package/dist/types/components/OwpSelectorBase/types/types.d.ts +1 -1
- package/dist/types/components/OwpTable/OwpDataTable.d.ts +5 -1
- package/dist/types/components/OwpTable/OwpFieldTable.d.ts +7 -1
- package/dist/types/components/OwpTable/OwpTable.d.ts +6 -38
- package/dist/types/components/OwpTable/internal/OwpTableBase.d.ts +34 -0
- package/dist/types/components/OwpTable/internal/OwpTableTotalCount.d.ts +9 -0
- package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +4 -2
- package/dist/types/components/OwpTable/utils/tableSx.d.ts +11 -0
- package/dist/types/components/OwpTextField/OwpTextMaskField.d.ts +3 -3
- package/dist/types/components/OwpYesNoSelector/OwpYesNoSelector.d.ts +1 -1
- package/dist/types/dayjs.d.ts +18 -0
- package/dist/types/hooks/index.d.ts +0 -1
- package/dist/types/hooks/internal/useMinimumVisibleState.d.ts +7 -0
- package/dist/types/utils/dayjsBrowser.d.ts +1 -7
- package/dist/types/utils/formatDateToYmd.d.ts +1 -1
- package/dist/utils/formatDateToYmd.js +3 -3
- package/dist/utils/formatDateToYmd.js.map +1 -1
- package/dist/utils/treeGridExportExcelUtil.js +1 -1
- package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
- package/dist/utils/zipUtil.js +3 -3
- package/dist/utils/zipUtil.js.map +1 -1
- package/package.json +3 -1
- package/dist/hooks/useInitCommonCodes.js.map +0 -1
- package/dist/utils/dayjsBrowser.js +0 -16
- package/dist/utils/dayjsBrowser.js.map +0 -1
- /package/dist/types/hooks/{useInitCommonCodes.d.ts → internal/useInitCommonCodes.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpQuerySelector.js","sources":["../../../src/components/OwpQuerySelector/OwpQuerySelector.tsx"],"sourcesContent":["import { OwpSelectorBase } from '@/components/OwpSelectorBase/OwpSelectorBase';\nimport type { OwpSelectorBaseOption } from '@/components/OwpSelectorBase/types';\nimport { mergeSelectorOptions, splitSelectorValue } from '@/components/OwpSelectorBase/utils';\nimport { STORAGE_ACCESS_TOKEN_KEY } from '@/constants/localStorageKeys';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport { useGetCurrentUser } from '@/hooks/useCurrentUser';\nimport { createJsonString } from '@/utils/createJsonString';\nimport { getApiLanguageCode } from '@/utils/language';\nimport { useQuery } from '@tanstack/react-query';\nimport clsx from 'clsx';\nimport { isArray, isFunction, isPlainObject } from 'es-toolkit/compat';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { OwpQuerySelectorProps } from './types';\n\nconst DEFAULT_RESPONSE_LIST_KEY = 'resultData';\n\n/**\n * 선택 옵션 라벨 문자열 변환\n * @param label 선택 옵션 라벨\n */\nconst getQuerySelectorOptionLabelText = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * 요청 query 객체 구성\n * @param query 원본 query\n */\nconst defaultBuildRequestQuery = (query: Record<string, unknown>) => {\n return {\n jsondata: createJsonString(query),\n };\n};\n\n/**\n * query key 추가 의존성 병합\n * @param queryKey 원본 query key\n * @param queryKeyDeps 추가 의존성\n */\nconst appendQuerySelectorQueryKeyDeps = (\n queryKey: unknown[],\n queryKeyDeps?: readonly unknown[],\n) => {\n return queryKeyDeps?.length ? [...queryKey, queryKeyDeps] : queryKey;\n};\n\n/**\n * query key 직렬화 값 정규화\n * @param value 원본 값\n */\nconst normalizeQuerySelectorKeyValue = (value: unknown): unknown => {\n if (value instanceof Date) {\n return value.toJSON();\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (isArray(value)) {\n return value.map((item) => normalizeQuerySelectorKeyValue(item));\n }\n\n if (isPlainObject(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((result, key) => {\n const normalizedValue = normalizeQuerySelectorKeyValue((value as Record<string, unknown>)[key]);\n\n if (normalizedValue === undefined) {\n return result;\n }\n\n result[key] = normalizedValue;\n\n return result;\n }, {});\n }\n\n if (isFunction(value) || typeof value === 'symbol') {\n return undefined;\n }\n\n return value;\n};\n\n/**\n * 요청 범위 key 문자열 생성\n * @param value 요청 범위 값\n */\nconst createQuerySelectorScopeKey = (value: unknown) => {\n return JSON.stringify(normalizeQuerySelectorKeyValue(value));\n};\n\n/**\n * API 요청 URL 생성\n * @param apiBaseUrl API base URL\n * @param apiUrl API path\n * @param requestQuery 요청 query\n * @param accessToken 접근 토큰\n */\nconst createQuerySelectorRequestUrl = (\n apiBaseUrl: string,\n apiUrl: string,\n requestQuery: Record<string, unknown>,\n accessToken: string,\n) => {\n const baseUrl = new URL(apiBaseUrl.endsWith('/') ? apiBaseUrl : `${apiBaseUrl}/`);\n const requestUrl = new URL(apiUrl.startsWith('/') ? apiUrl.slice(1) : apiUrl, baseUrl);\n\n Object.entries(requestQuery).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n requestUrl.searchParams.set(key, typeof value === 'string' ? value : JSON.stringify(value));\n });\n\n if (accessToken) {\n requestUrl.searchParams.set('TOKEN', accessToken);\n }\n\n requestUrl.searchParams.set('i18nextLng', getApiLanguageCode());\n\n return requestUrl.toString();\n};\n\n/**\n * 원격 선택기 응답 목록 정규화\n * @param data 응답 데이터\n * @param responseListKey 목록 키\n */\nconst getQuerySelectorResponseList = (data: unknown, responseListKey: string) => {\n if (!data || typeof data !== 'object') {\n return [];\n }\n\n const responseList = (data as Record<string, unknown>)[responseListKey];\n\n return isArray(responseList) ? (responseList as Record<string, unknown>[]) : [];\n};\n\n/**\n * 원격 아이템 value 계산\n * @param item 응답 아이템\n * @param valueKey value key\n * @param valueResolver value resolver\n */\nconst resolveQuerySelectorValue = (\n item: Record<string, unknown>,\n valueKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n) => {\n const value = valueResolver ? valueResolver(item) : `${item?.[valueKey ?? ''] ?? ''}`;\n\n return `${value ?? ''}`.trim();\n};\n\n/**\n * 원격 아이템 label 계산\n * @param item 응답 아이템\n * @param labelKey label key\n * @param labelResolver label resolver\n */\nconst resolveQuerySelectorLabel = (\n item: Record<string, unknown>,\n labelKey?: string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n const label = labelResolver ? labelResolver(item) : `${item?.[labelKey ?? ''] ?? ''}`;\n\n return `${label ?? ''}`.trim();\n};\n\n/**\n * 원격 응답 데이터를 선택 옵션으로 변환\n * @param items 응답 아이템 목록\n * @param valueKey value key\n * @param labelKey label key\n * @param valueResolver value resolver\n * @param labelResolver label resolver\n */\nconst mapQuerySelectorOptions = (\n items: Record<string, unknown>[],\n valueKey?: string,\n labelKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n return items\n .map((item) => {\n const value = resolveQuerySelectorValue(item, valueKey, valueResolver);\n\n if (!value) {\n return null;\n }\n\n return {\n label: resolveQuerySelectorLabel(item, labelKey, labelResolver),\n raw: item,\n value,\n } as OwpSelectorBaseOption<Record<string, unknown>>;\n })\n .filter((option): option is OwpSelectorBaseOption<Record<string, unknown>> => option != null);\n};\n\n/**\n * 원격 조회형 공통 선택기\n * @param props 원격 선택기 props\n */\nexport const OwpQuerySelector = ({\n apiUrl,\n asyncSearch,\n buildRequestQuery = defaultBuildRequestQuery,\n className,\n disableAllValueItem,\n filterOptions,\n multiple,\n query,\n queryKeyDeps,\n responseListKey = DEFAULT_RESPONSE_LIST_KEY,\n selectorType = 'select',\n value,\n valueKey,\n valueResolver,\n labelKey,\n labelResolver,\n onChange,\n defaultValue,\n textFieldProps,\n ...selectorBaseProps\n}: OwpQuerySelectorProps) => {\n const { env } = useOwpAppContext();\n const currentUser = useGetCurrentUser();\n const apiBaseUrl = `${env?.apiBaseUrl ?? ''}`.trim();\n const accessToken = `${currentUser?.token ?? localStorage.getItem(STORAGE_ACCESS_TOKEN_KEY) ?? ''}`.trim();\n const resolvedAsyncSearch = selectorType === 'autocomplete' ? asyncSearch : undefined;\n const isAsyncSearchEnabled = resolvedAsyncSearch != null;\n const resolvedDisableAllValueItem = isAsyncSearchEnabled ? true : disableAllValueItem;\n const minLength = resolvedAsyncSearch?.minLength ?? 1;\n const debounceMs = resolvedAsyncSearch?.debounceMs ?? 300;\n const [currentSelectionValue, setCurrentSelectionValue] = useState(value ?? defaultValue ?? '');\n const [autocompleteInputValue, setAutocompleteInputValue] = useState('');\n const [searchKeyword, setSearchKeyword] = useState('');\n const [debouncedSearchKeyword, setDebouncedSearchKeyword] = useState('');\n const normalizedQueryKeyDeps =\n queryKeyDeps?.length ? (normalizeQuerySelectorKeyValue(queryKeyDeps) as readonly unknown[]) : undefined;\n const optionsCacheScopeKey = createQuerySelectorScopeKey(\n appendQuerySelectorQueryKeyDeps(\n [apiUrl, query, responseListKey, valueKey, labelKey],\n normalizedQueryKeyDeps,\n ),\n );\n const [cachedOptionsState, setCachedOptionsState] = useState(() => ({\n options: {} as Record<string, OwpSelectorBaseOption<Record<string, unknown>>>,\n scopeKey: optionsCacheScopeKey,\n }));\n const cachedOptions = useMemo(\n () => (cachedOptionsState.scopeKey === optionsCacheScopeKey ? cachedOptionsState.options : {}),\n [cachedOptionsState.options, cachedOptionsState.scopeKey, optionsCacheScopeKey],\n );\n const selectedIds = useMemo(() => splitSelectorValue(currentSelectionValue), [currentSelectionValue]);\n const shouldFetchSearchOptions = isAsyncSearchEnabled && debouncedSearchKeyword.trim().length >= minLength;\n const createSelectorQueryKey = (...segments: unknown[]) => {\n return appendQuerySelectorQueryKeyDeps(['owp', 'query-selector', ...segments], normalizedQueryKeyDeps);\n };\n\n useEffect(() => {\n if (value === undefined) {\n return;\n }\n\n setCurrentSelectionValue(value);\n }, [value]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setCurrentSelectionValue(defaultValue ?? '');\n }, [defaultValue, value]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n const timer = window.setTimeout(() => {\n setDebouncedSearchKeyword(searchKeyword.trim());\n }, debounceMs);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [debounceMs, isAsyncSearchEnabled, searchKeyword]);\n\n const fetchOptions = async (nextQuery: Record<string, unknown>) => {\n const response = await fetch(\n createQuerySelectorRequestUrl(apiBaseUrl, apiUrl, buildRequestQuery(nextQuery), accessToken),\n );\n const data = (await response.json()) as Record<string, unknown>;\n\n if (!response.ok || data?.resultCode === 'STATUS_0') {\n throw new Error(`${data?.resultMessage ?? 'Failed to fetch selector options'}`);\n }\n\n const responseList = getQuerySelectorResponseList(data, responseListKey);\n const filteredItems = isFunction(filterOptions) ? filterOptions(responseList) : responseList;\n\n return mapQuerySelectorOptions(\n filteredItems,\n valueKey,\n labelKey,\n valueResolver,\n labelResolver,\n );\n };\n\n const baseOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(apiUrl, query, responseListKey, valueKey, labelKey),\n enabled: Boolean(apiBaseUrl) && !isAsyncSearchEnabled,\n queryFn: () => fetchOptions(query),\n });\n const searchOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'search',\n apiUrl,\n query,\n debouncedSearchKeyword,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled: Boolean(apiBaseUrl) && isAsyncSearchEnabled && shouldFetchSearchOptions,\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildKeywordQuery(debouncedSearchKeyword) ?? {}),\n }),\n });\n const allOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'all',\n apiUrl,\n query,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled:\n Boolean(apiBaseUrl) &&\n isAsyncSearchEnabled &&\n (Boolean(selectedIds.length) || (Boolean(multiple) && !resolvedDisableAllValueItem)),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildAllQuery?.() ?? {}),\n }),\n });\n const selectedOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'selected',\n apiUrl,\n query,\n selectedIds,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled: Boolean(apiBaseUrl) && isAsyncSearchEnabled && Boolean(selectedIds.length) && Boolean(resolvedAsyncSearch?.buildSelectedQuery),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildSelectedQuery?.(selectedIds) ?? {}),\n }),\n });\n\n const currentOptions = useMemo(() => {\n if (isAsyncSearchEnabled) {\n return shouldFetchSearchOptions ? (searchOptionsQuery.data ?? []) : [];\n }\n\n return baseOptionsQuery.data ?? [];\n }, [\n baseOptionsQuery.data,\n isAsyncSearchEnabled,\n searchOptionsQuery.data,\n shouldFetchSearchOptions,\n ]);\n const resolvedAllOptions = useMemo(\n () =>\n mergeSelectorOptions(\n currentOptions,\n allOptionsQuery.data,\n selectedOptionsQuery.data,\n Object.values(cachedOptions),\n ),\n [allOptionsQuery.data, cachedOptions, currentOptions, selectedOptionsQuery.data],\n );\n const optionMap = useMemo(\n () => {\n const nextOptionMap: Record<string, OwpSelectorBaseOption<Record<string, unknown>>> = {};\n\n resolvedAllOptions.forEach((option) => {\n nextOptionMap[option.value] = option;\n });\n\n return nextOptionMap;\n },\n [resolvedAllOptions],\n );\n const isLoading =\n baseOptionsQuery.isLoading ||\n searchOptionsQuery.isLoading ||\n allOptionsQuery.isLoading ||\n selectedOptionsQuery.isLoading;\n const resolvedClassName = clsx(selectorType === 'autocomplete' && '!min-w-160', className);\n const resolvedTextFieldClassName = clsx(\n selectorType === 'autocomplete' && !textFieldProps?.className && 'w-full',\n textFieldProps?.className,\n );\n\n useEffect(() => {\n if (!resolvedAllOptions.length) {\n return;\n }\n\n setCachedOptionsState((previousState) => {\n const previousCachedOptions =\n previousState.scopeKey === optionsCacheScopeKey ? previousState.options : {};\n const nextCachedOptions = { ...previousCachedOptions };\n let hasChanged = false;\n\n resolvedAllOptions.forEach((option) => {\n if (nextCachedOptions[option.value] === option) {\n return;\n }\n\n nextCachedOptions[option.value] = option;\n hasChanged = true;\n });\n\n if (!hasChanged && previousState.scopeKey === optionsCacheScopeKey) {\n return previousState;\n }\n\n return {\n options: hasChanged ? nextCachedOptions : previousCachedOptions,\n scopeKey: optionsCacheScopeKey,\n };\n });\n }, [optionsCacheScopeKey, resolvedAllOptions]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n if (multiple) {\n setAutocompleteInputValue('');\n return;\n }\n\n const selectedId = selectedIds[0];\n\n if (!selectedId) {\n setAutocompleteInputValue('');\n return;\n }\n\n setAutocompleteInputValue(getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? ''));\n }, [isAsyncSearchEnabled, multiple, optionMap, selectedIds]);\n\n return (\n <OwpSelectorBase\n {...selectorBaseProps}\n allOptions={resolvedAllOptions}\n allValueMode=\"joined\"\n autocompleteInputValue={isAsyncSearchEnabled ? autocompleteInputValue : undefined}\n className={resolvedClassName}\n defaultValue={defaultValue}\n disableAllValueItem={resolvedDisableAllValueItem}\n disableClientFilter={isAsyncSearchEnabled}\n loading={isLoading}\n multiple={multiple}\n onAutocompleteInputChange={\n isAsyncSearchEnabled\n ? (nextInputValue, reason) => {\n if (reason === 'reset') {\n return;\n }\n\n if (multiple && reason !== 'input') {\n return;\n }\n\n setAutocompleteInputValue(nextInputValue);\n setSearchKeyword(nextInputValue);\n }\n : undefined\n }\n onChange={(event) => {\n setCurrentSelectionValue(event.target.value);\n\n if (isAsyncSearchEnabled) {\n const nextSelectedIds = splitSelectorValue(event.target.value);\n\n if (multiple) {\n setAutocompleteInputValue('');\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n } else {\n const nextSelectedId = nextSelectedIds[0];\n const nextLabel = nextSelectedId\n ? getQuerySelectorOptionLabelText(optionMap[nextSelectedId]?.label ?? '')\n : '';\n\n setAutocompleteInputValue(nextLabel);\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n }\n\n onChange?.(event);\n }}\n options={currentOptions}\n selectorType={selectorType}\n textFieldProps={{\n ...textFieldProps,\n className: resolvedTextFieldClassName,\n onBlur: (event) => {\n if (isAsyncSearchEnabled) {\n if (multiple) {\n setAutocompleteInputValue('');\n } else {\n const selectedId = splitSelectorValue(currentSelectionValue)[0];\n\n setAutocompleteInputValue(\n selectedId ? getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? '') : '',\n );\n }\n\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n\n textFieldProps?.onBlur?.(event);\n },\n }}\n value={value}\n />\n );\n};\n"],"names":["DEFAULT_RESPONSE_LIST_KEY","getQuerySelectorOptionLabelText","__name","label","defaultBuildRequestQuery","query","createJsonString","appendQuerySelectorQueryKeyDeps","queryKey","queryKeyDeps","normalizeQuerySelectorKeyValue","value","isArray","item","isPlainObject","result","key","normalizedValue","isFunction","createQuerySelectorScopeKey","createQuerySelectorRequestUrl","apiBaseUrl","apiUrl","requestQuery","accessToken","baseUrl","requestUrl","getApiLanguageCode","getQuerySelectorResponseList","data","responseListKey","responseList","resolveQuerySelectorValue","valueKey","valueResolver","resolveQuerySelectorLabel","labelKey","labelResolver","mapQuerySelectorOptions","items","option","OwpQuerySelector","asyncSearch","buildRequestQuery","className","disableAllValueItem","filterOptions","multiple","selectorType","onChange","defaultValue","textFieldProps","selectorBaseProps","env","useOwpAppContext","currentUser","useGetCurrentUser","STORAGE_ACCESS_TOKEN_KEY","resolvedAsyncSearch","isAsyncSearchEnabled","resolvedDisableAllValueItem","minLength","debounceMs","currentSelectionValue","setCurrentSelectionValue","useState","autocompleteInputValue","setAutocompleteInputValue","searchKeyword","setSearchKeyword","debouncedSearchKeyword","setDebouncedSearchKeyword","normalizedQueryKeyDeps","optionsCacheScopeKey","cachedOptionsState","setCachedOptionsState","cachedOptions","useMemo","selectedIds","splitSelectorValue","shouldFetchSearchOptions","createSelectorQueryKey","segments","useEffect","timer","fetchOptions","nextQuery","response","filteredItems","baseOptionsQuery","useQuery","searchOptionsQuery","allOptionsQuery","_a","selectedOptionsQuery","currentOptions","resolvedAllOptions","mergeSelectorOptions","optionMap","nextOptionMap","isLoading","resolvedClassName","clsx","resolvedTextFieldClassName","previousState","previousCachedOptions","nextCachedOptions","hasChanged","selectedId","jsx","OwpSelectorBase","nextInputValue","reason","event","nextSelectedIds","nextSelectedId","nextLabel","_b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpQuerySelector.js","sources":["../../../src/components/OwpQuerySelector/OwpQuerySelector.tsx"],"sourcesContent":["import { OwpSelectorBase } from '@/components/OwpSelectorBase/OwpSelectorBase';\nimport type { OwpSelectorBaseOption } from '@/components/OwpSelectorBase/types';\nimport { mergeSelectorOptions, splitSelectorValue } from '@/components/OwpSelectorBase/utils';\nimport { STORAGE_ACCESS_TOKEN_KEY } from '@/constants/localStorageKeys';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport { useGetCurrentUser } from '@/hooks/useCurrentUser';\nimport { createJsonString } from '@/utils/createJsonString';\nimport { getApiLanguageCode } from '@/utils/language';\nimport { useQuery } from '@tanstack/react-query';\nimport clsx from 'clsx';\nimport { isArray, isFunction, isPlainObject } from 'es-toolkit/compat';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { OwpQuerySelectorProps } from './types';\n\nconst DEFAULT_RESPONSE_LIST_KEY = 'resultData';\n\n/**\n * 선택 옵션 라벨 문자열 변환\n * @param label 선택 옵션 라벨\n */\nconst getQuerySelectorOptionLabelText = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * 요청 query 객체 구성\n * @param query 원본 query\n */\nconst defaultBuildRequestQuery = (query: Record<string, unknown>) => {\n return {\n jsondata: createJsonString(query),\n };\n};\n\n/**\n * query key 추가 의존성 병합\n * @param queryKey 원본 query key\n * @param queryKeyDeps 추가 의존성\n */\nconst appendQuerySelectorQueryKeyDeps = (\n queryKey: unknown[],\n queryKeyDeps?: readonly unknown[],\n) => {\n return queryKeyDeps?.length ? [...queryKey, queryKeyDeps] : queryKey;\n};\n\n/**\n * query key 직렬화 값 정규화\n * @param value 원본 값\n */\nconst normalizeQuerySelectorKeyValue = (value: unknown): unknown => {\n if (value instanceof Date) {\n return value.toJSON();\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (isArray(value)) {\n return value.map((item) => normalizeQuerySelectorKeyValue(item));\n }\n\n if (isPlainObject(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((result, key) => {\n const normalizedValue = normalizeQuerySelectorKeyValue((value as Record<string, unknown>)[key]);\n\n if (normalizedValue === undefined) {\n return result;\n }\n\n result[key] = normalizedValue;\n\n return result;\n }, {});\n }\n\n if (isFunction(value) || typeof value === 'symbol') {\n return undefined;\n }\n\n return value;\n};\n\n/**\n * 요청 범위 key 문자열 생성\n * @param value 요청 범위 값\n */\nconst createQuerySelectorScopeKey = (value: unknown) => {\n return JSON.stringify(normalizeQuerySelectorKeyValue(value));\n};\n\n/**\n * API 요청 URL 생성\n * @param apiBaseUrl API base URL\n * @param apiUrl API path\n * @param requestQuery 요청 query\n * @param accessToken 접근 토큰\n */\nconst createQuerySelectorRequestUrl = (\n apiBaseUrl: string,\n apiUrl: string,\n requestQuery: Record<string, unknown>,\n accessToken: string,\n) => {\n const baseUrl = new URL(apiBaseUrl.endsWith('/') ? apiBaseUrl : `${apiBaseUrl}/`);\n const requestUrl = new URL(apiUrl.startsWith('/') ? apiUrl.slice(1) : apiUrl, baseUrl);\n\n Object.entries(requestQuery).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n requestUrl.searchParams.set(key, typeof value === 'string' ? value : JSON.stringify(value));\n });\n\n if (accessToken) {\n requestUrl.searchParams.set('TOKEN', accessToken);\n }\n\n requestUrl.searchParams.set('i18nextLng', getApiLanguageCode());\n\n return requestUrl.toString();\n};\n\n/**\n * 원격 선택기 응답 목록 정규화\n * @param data 응답 데이터\n * @param responseListKey 목록 키\n */\nconst getQuerySelectorResponseList = (data: unknown, responseListKey: string) => {\n if (!data || typeof data !== 'object') {\n return [];\n }\n\n const responseList = (data as Record<string, unknown>)[responseListKey];\n\n return isArray(responseList) ? (responseList as Record<string, unknown>[]) : [];\n};\n\n/**\n * 원격 아이템 value 계산\n * @param item 응답 아이템\n * @param valueKey value key\n * @param valueResolver value resolver\n */\nconst resolveQuerySelectorValue = (\n item: Record<string, unknown>,\n valueKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n) => {\n const value = valueResolver ? valueResolver(item) : `${item?.[valueKey ?? ''] ?? ''}`;\n\n return `${value ?? ''}`.trim();\n};\n\n/**\n * 원격 아이템 label 계산\n * @param item 응답 아이템\n * @param labelKey label key\n * @param labelResolver label resolver\n */\nconst resolveQuerySelectorLabel = (\n item: Record<string, unknown>,\n labelKey?: string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n const label = labelResolver ? labelResolver(item) : `${item?.[labelKey ?? ''] ?? ''}`;\n\n return `${label ?? ''}`.trim();\n};\n\n/**\n * 원격 응답 데이터를 선택 옵션으로 변환\n * @param items 응답 아이템 목록\n * @param valueKey value key\n * @param labelKey label key\n * @param valueResolver value resolver\n * @param labelResolver label resolver\n */\nconst mapQuerySelectorOptions = (\n items: Record<string, unknown>[],\n valueKey?: string,\n labelKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n return items\n .map((item) => {\n const value = resolveQuerySelectorValue(item, valueKey, valueResolver);\n\n if (!value) {\n return null;\n }\n\n return {\n label: resolveQuerySelectorLabel(item, labelKey, labelResolver),\n raw: item,\n value,\n } as OwpSelectorBaseOption<Record<string, unknown>>;\n })\n .filter((option): option is OwpSelectorBaseOption<Record<string, unknown>> => option != null);\n};\n\n/**\n * 원격 조회형 공통 선택기\n * @param props 원격 선택기 props\n */\nexport const OwpQuerySelector = ({\n apiUrl,\n asyncSearch,\n buildRequestQuery = defaultBuildRequestQuery,\n className,\n filterOptions,\n forceEmptyOptions = false,\n multiple,\n query,\n queryKeyDeps,\n responseListKey = DEFAULT_RESPONSE_LIST_KEY,\n selectorType = 'select',\n value,\n valueKey,\n valueResolver,\n labelKey,\n labelResolver,\n onChange,\n defaultValue,\n showAllOption = true,\n textFieldProps,\n ...selectorBaseProps\n}: OwpQuerySelectorProps) => {\n const { env } = useOwpAppContext();\n const currentUser = useGetCurrentUser();\n const apiBaseUrl = `${env?.apiBaseUrl ?? ''}`.trim();\n const accessToken = `${currentUser?.token ?? localStorage.getItem(STORAGE_ACCESS_TOKEN_KEY) ?? ''}`.trim();\n const resolvedAsyncSearch = selectorType === 'autocomplete' ? asyncSearch : undefined;\n const isAsyncSearchEnabled = resolvedAsyncSearch != null;\n const resolvedShowAllOption = forceEmptyOptions ? false : isAsyncSearchEnabled ? false : showAllOption;\n const minLength = resolvedAsyncSearch?.minLength ?? 1;\n const debounceMs = resolvedAsyncSearch?.debounceMs ?? 300;\n const [currentSelectionValue, setCurrentSelectionValue] = useState(value ?? defaultValue ?? '');\n const [autocompleteInputValue, setAutocompleteInputValue] = useState('');\n const [searchKeyword, setSearchKeyword] = useState('');\n const [debouncedSearchKeyword, setDebouncedSearchKeyword] = useState('');\n const normalizedQueryKeyDeps =\n queryKeyDeps?.length ? (normalizeQuerySelectorKeyValue(queryKeyDeps) as readonly unknown[]) : undefined;\n const optionsCacheScopeKey = createQuerySelectorScopeKey(\n appendQuerySelectorQueryKeyDeps(\n [apiUrl, query, responseListKey, valueKey, labelKey],\n normalizedQueryKeyDeps,\n ),\n );\n const [cachedOptionsState, setCachedOptionsState] = useState(() => ({\n options: {} as Record<string, OwpSelectorBaseOption<Record<string, unknown>>>,\n scopeKey: optionsCacheScopeKey,\n }));\n const cachedOptions = useMemo(\n () => (cachedOptionsState.scopeKey === optionsCacheScopeKey ? cachedOptionsState.options : {}),\n [cachedOptionsState.options, cachedOptionsState.scopeKey, optionsCacheScopeKey],\n );\n const selectedIds = useMemo(() => splitSelectorValue(currentSelectionValue), [currentSelectionValue]);\n const resolvedSelectedIds = useMemo(\n () => (forceEmptyOptions ? [] : selectedIds),\n [forceEmptyOptions, selectedIds],\n );\n const shouldFetchSearchOptions =\n !forceEmptyOptions && isAsyncSearchEnabled && debouncedSearchKeyword.trim().length >= minLength;\n const createSelectorQueryKey = (...segments: unknown[]) => {\n return appendQuerySelectorQueryKeyDeps(['owp', 'query-selector', ...segments], normalizedQueryKeyDeps);\n };\n\n useEffect(() => {\n if (value === undefined) {\n return;\n }\n\n setCurrentSelectionValue(value);\n }, [value]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setCurrentSelectionValue(defaultValue ?? '');\n }, [defaultValue, value]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n const timer = window.setTimeout(() => {\n setDebouncedSearchKeyword(searchKeyword.trim());\n }, debounceMs);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [debounceMs, isAsyncSearchEnabled, searchKeyword]);\n\n const fetchOptions = async (nextQuery: Record<string, unknown>) => {\n const response = await fetch(\n createQuerySelectorRequestUrl(apiBaseUrl, apiUrl, buildRequestQuery(nextQuery), accessToken),\n );\n const data = (await response.json()) as Record<string, unknown>;\n\n if (!response.ok || data?.resultCode === 'STATUS_0') {\n throw new Error(`${data?.resultMessage ?? 'Failed to fetch selector options'}`);\n }\n\n const responseList = getQuerySelectorResponseList(data, responseListKey);\n const filteredItems = isFunction(filterOptions) ? filterOptions(responseList) : responseList;\n\n return mapQuerySelectorOptions(\n filteredItems,\n valueKey,\n labelKey,\n valueResolver,\n labelResolver,\n );\n };\n\n const baseOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(apiUrl, query, responseListKey, valueKey, labelKey),\n enabled: Boolean(apiBaseUrl) && !forceEmptyOptions && !isAsyncSearchEnabled,\n queryFn: () => fetchOptions(query),\n });\n const searchOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'search',\n apiUrl,\n query,\n debouncedSearchKeyword,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled:\n Boolean(apiBaseUrl) &&\n !forceEmptyOptions &&\n isAsyncSearchEnabled &&\n shouldFetchSearchOptions,\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildKeywordQuery(debouncedSearchKeyword) ?? {}),\n }),\n });\n const allOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'all',\n apiUrl,\n query,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled:\n Boolean(apiBaseUrl) &&\n !forceEmptyOptions &&\n isAsyncSearchEnabled &&\n (Boolean(resolvedSelectedIds.length) || (Boolean(multiple) && resolvedShowAllOption)),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildAllQuery?.() ?? {}),\n }),\n });\n const selectedOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'selected',\n apiUrl,\n query,\n resolvedSelectedIds,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled:\n Boolean(apiBaseUrl) &&\n !forceEmptyOptions &&\n isAsyncSearchEnabled &&\n Boolean(resolvedSelectedIds.length) &&\n Boolean(resolvedAsyncSearch?.buildSelectedQuery),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildSelectedQuery?.(resolvedSelectedIds) ?? {}),\n }),\n });\n\n const currentOptions = useMemo(() => {\n if (forceEmptyOptions) {\n return [];\n }\n\n if (isAsyncSearchEnabled) {\n return shouldFetchSearchOptions ? (searchOptionsQuery.data ?? []) : [];\n }\n\n return baseOptionsQuery.data ?? [];\n }, [\n baseOptionsQuery.data,\n forceEmptyOptions,\n isAsyncSearchEnabled,\n searchOptionsQuery.data,\n shouldFetchSearchOptions,\n ]);\n const resolvedAllOptions = useMemo(\n () => {\n if (forceEmptyOptions) {\n return [];\n }\n\n return mergeSelectorOptions(\n currentOptions,\n allOptionsQuery.data,\n selectedOptionsQuery.data,\n Object.values(cachedOptions),\n );\n },\n [\n allOptionsQuery.data,\n cachedOptions,\n currentOptions,\n forceEmptyOptions,\n selectedOptionsQuery.data,\n ],\n );\n const optionMap = useMemo(\n () => {\n const nextOptionMap: Record<string, OwpSelectorBaseOption<Record<string, unknown>>> = {};\n\n resolvedAllOptions.forEach((option) => {\n nextOptionMap[option.value] = option;\n });\n\n return nextOptionMap;\n },\n [resolvedAllOptions],\n );\n const isLoading =\n !forceEmptyOptions &&\n (baseOptionsQuery.isLoading ||\n searchOptionsQuery.isLoading ||\n allOptionsQuery.isLoading ||\n selectedOptionsQuery.isLoading);\n const resolvedClassName = clsx(selectorType === 'autocomplete' && '!min-w-160', className);\n const resolvedTextFieldClassName = clsx(\n selectorType === 'autocomplete' && !textFieldProps?.className && 'w-full',\n textFieldProps?.className,\n );\n\n useEffect(() => {\n if (!resolvedAllOptions.length) {\n return;\n }\n\n setCachedOptionsState((previousState) => {\n const previousCachedOptions =\n previousState.scopeKey === optionsCacheScopeKey ? previousState.options : {};\n const nextCachedOptions = { ...previousCachedOptions };\n let hasChanged = false;\n\n resolvedAllOptions.forEach((option) => {\n if (nextCachedOptions[option.value] === option) {\n return;\n }\n\n nextCachedOptions[option.value] = option;\n hasChanged = true;\n });\n\n if (!hasChanged && previousState.scopeKey === optionsCacheScopeKey) {\n return previousState;\n }\n\n return {\n options: hasChanged ? nextCachedOptions : previousCachedOptions,\n scopeKey: optionsCacheScopeKey,\n };\n });\n }, [optionsCacheScopeKey, resolvedAllOptions]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n if (multiple) {\n setAutocompleteInputValue('');\n return;\n }\n\n const selectedId = resolvedSelectedIds[0];\n\n if (!selectedId) {\n setAutocompleteInputValue('');\n return;\n }\n\n setAutocompleteInputValue(getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? ''));\n }, [isAsyncSearchEnabled, multiple, optionMap, resolvedSelectedIds]);\n\n useEffect(() => {\n if (!forceEmptyOptions || !isAsyncSearchEnabled) {\n return;\n }\n\n setAutocompleteInputValue('');\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }, [forceEmptyOptions, isAsyncSearchEnabled]);\n\n return (\n <OwpSelectorBase\n {...selectorBaseProps}\n allOptions={resolvedAllOptions}\n allValueMode=\"joined\"\n autocompleteInputValue={\n isAsyncSearchEnabled ? (forceEmptyOptions ? '' : autocompleteInputValue) : undefined\n }\n className={resolvedClassName}\n defaultValue={forceEmptyOptions ? '' : defaultValue}\n disableClientFilter={isAsyncSearchEnabled}\n loading={isLoading}\n multiple={multiple}\n onAutocompleteInputChange={\n isAsyncSearchEnabled\n ? (nextInputValue, reason) => {\n if (reason === 'reset') {\n return;\n }\n\n if (multiple && reason !== 'input') {\n return;\n }\n\n if (forceEmptyOptions) {\n return;\n }\n\n setAutocompleteInputValue(nextInputValue);\n setSearchKeyword(nextInputValue);\n }\n : undefined\n }\n onChange={(event) => {\n setCurrentSelectionValue(event.target.value);\n\n if (isAsyncSearchEnabled) {\n const nextSelectedIds = forceEmptyOptions ? [] : splitSelectorValue(event.target.value);\n\n if (multiple) {\n setAutocompleteInputValue('');\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n } else {\n const nextSelectedId = nextSelectedIds[0];\n const nextLabel = nextSelectedId\n ? getQuerySelectorOptionLabelText(optionMap[nextSelectedId]?.label ?? '')\n : '';\n\n setAutocompleteInputValue(nextLabel);\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n }\n\n onChange?.(event);\n }}\n options={currentOptions}\n selectorType={selectorType}\n showAllOption={resolvedShowAllOption}\n textFieldProps={{\n ...textFieldProps,\n className: resolvedTextFieldClassName,\n onBlur: (event) => {\n if (isAsyncSearchEnabled) {\n if (multiple) {\n setAutocompleteInputValue('');\n } else {\n const selectedId = forceEmptyOptions\n ? undefined\n : splitSelectorValue(currentSelectionValue)[0];\n\n setAutocompleteInputValue(\n selectedId ? getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? '') : '',\n );\n }\n\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n\n textFieldProps?.onBlur?.(event);\n },\n }}\n value={forceEmptyOptions ? '' : value}\n />\n );\n};\n"],"names":["DEFAULT_RESPONSE_LIST_KEY","getQuerySelectorOptionLabelText","__name","label","defaultBuildRequestQuery","query","createJsonString","appendQuerySelectorQueryKeyDeps","queryKey","queryKeyDeps","normalizeQuerySelectorKeyValue","value","isArray","item","isPlainObject","result","key","normalizedValue","isFunction","createQuerySelectorScopeKey","createQuerySelectorRequestUrl","apiBaseUrl","apiUrl","requestQuery","accessToken","baseUrl","requestUrl","getApiLanguageCode","getQuerySelectorResponseList","data","responseListKey","responseList","resolveQuerySelectorValue","valueKey","valueResolver","resolveQuerySelectorLabel","labelKey","labelResolver","mapQuerySelectorOptions","items","option","OwpQuerySelector","asyncSearch","buildRequestQuery","className","filterOptions","forceEmptyOptions","multiple","selectorType","onChange","defaultValue","showAllOption","textFieldProps","selectorBaseProps","env","useOwpAppContext","currentUser","useGetCurrentUser","STORAGE_ACCESS_TOKEN_KEY","resolvedAsyncSearch","isAsyncSearchEnabled","resolvedShowAllOption","minLength","debounceMs","currentSelectionValue","setCurrentSelectionValue","useState","autocompleteInputValue","setAutocompleteInputValue","searchKeyword","setSearchKeyword","debouncedSearchKeyword","setDebouncedSearchKeyword","normalizedQueryKeyDeps","optionsCacheScopeKey","cachedOptionsState","setCachedOptionsState","cachedOptions","useMemo","selectedIds","splitSelectorValue","resolvedSelectedIds","shouldFetchSearchOptions","createSelectorQueryKey","segments","useEffect","timer","fetchOptions","nextQuery","response","filteredItems","baseOptionsQuery","useQuery","searchOptionsQuery","allOptionsQuery","_a","selectedOptionsQuery","currentOptions","resolvedAllOptions","mergeSelectorOptions","optionMap","nextOptionMap","isLoading","resolvedClassName","clsx","resolvedTextFieldClassName","previousState","previousCachedOptions","nextCachedOptions","hasChanged","selectedId","jsx","OwpSelectorBase","nextInputValue","reason","event","nextSelectedIds","nextSelectedId","nextLabel","_b"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
var
|
|
2
|
-
var t = (
|
|
3
|
-
import { jsxs as
|
|
4
|
-
import
|
|
5
|
-
import { CircularProgress as
|
|
6
|
-
import { useHeaderWrapState as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
const
|
|
10
|
-
switch (
|
|
1
|
+
var H = Object.defineProperty;
|
|
2
|
+
var t = (l, r) => H(l, "name", { value: r, configurable: !0 });
|
|
3
|
+
import { jsxs as n, jsx as e } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
|
+
import V from "../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Fitbit.js";
|
|
5
|
+
import { CircularProgress as W, Divider as _ } from "@mui/material";
|
|
6
|
+
import { useHeaderWrapState as z } from "../../hooks/useHeaderWrapState.js";
|
|
7
|
+
import { useMinimumVisibleState as F } from "../../hooks/internal/useMinimumVisibleState.js";
|
|
8
|
+
import { clsx as s } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
9
|
+
const g = /* @__PURE__ */ t((l) => {
|
|
10
|
+
switch (l) {
|
|
11
11
|
case "inherit":
|
|
12
12
|
return "1em";
|
|
13
13
|
case "small":
|
|
@@ -19,120 +19,127 @@ const h = /* @__PURE__ */ t((m) => {
|
|
|
19
19
|
default:
|
|
20
20
|
return 24;
|
|
21
21
|
}
|
|
22
|
-
}, "getTitleIconSize"),
|
|
23
|
-
className:
|
|
24
|
-
title:
|
|
22
|
+
}, "getTitleIconSize"), J = /* @__PURE__ */ t(({
|
|
23
|
+
className: l,
|
|
24
|
+
title: r,
|
|
25
25
|
disableTitleIcon: u,
|
|
26
|
-
headerProps:
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
headerProps: m,
|
|
27
|
+
titleContainerClassName: x,
|
|
28
|
+
titleIconClassName: d,
|
|
29
|
+
titleTextClassName: p,
|
|
30
|
+
actions: f,
|
|
29
31
|
leftSlot: a,
|
|
30
|
-
centerSlot:
|
|
32
|
+
centerSlot: i,
|
|
31
33
|
children: N,
|
|
32
|
-
iconSize:
|
|
33
|
-
loading:
|
|
34
|
+
iconSize: o,
|
|
35
|
+
loading: y,
|
|
36
|
+
showDivider: h = !1
|
|
34
37
|
}) => {
|
|
35
|
-
const w =
|
|
36
|
-
s,
|
|
37
|
-
a,
|
|
38
|
+
const w = r != null && r !== "", j = !!(a || i), v = F(y), { containerRef: R, titleRef: b, slotsRef: k, actionsRef: O, isWrapped: c } = z([
|
|
38
39
|
r,
|
|
39
|
-
|
|
40
|
+
a,
|
|
41
|
+
i,
|
|
42
|
+
f,
|
|
40
43
|
u,
|
|
44
|
+
o,
|
|
45
|
+
v,
|
|
46
|
+
x,
|
|
41
47
|
d,
|
|
42
|
-
|
|
43
|
-
]),
|
|
44
|
-
return /* @__PURE__ */
|
|
45
|
-
|
|
46
|
-
/* @__PURE__ */
|
|
47
|
-
|
|
48
|
+
p
|
|
49
|
+
]), B = !!(w || f || a || i);
|
|
50
|
+
return /* @__PURE__ */ n("div", { className: s("OwpSection-root flex h-full w-full flex-col", l), children: [
|
|
51
|
+
B && /* @__PURE__ */ n("div", { className: s("OwpSection-header min-h-36 w-full", !h && "mb-12"), children: [
|
|
52
|
+
/* @__PURE__ */ n(
|
|
53
|
+
"div",
|
|
48
54
|
{
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
55
|
+
ref: R,
|
|
56
|
+
...m,
|
|
57
|
+
className: s(
|
|
58
|
+
"min-h-36 w-full",
|
|
59
|
+
c ? "flex flex-col gap-8" : "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-8 gap-y-8",
|
|
60
|
+
m == null ? void 0 : m.className
|
|
61
|
+
),
|
|
62
|
+
children: [
|
|
63
|
+
w && /* @__PURE__ */ n(
|
|
64
|
+
"div",
|
|
65
|
+
{
|
|
66
|
+
ref: b,
|
|
67
|
+
className: s(
|
|
68
|
+
"flex shrink-0 items-center gap-8 whitespace-nowrap",
|
|
69
|
+
c ? "order-1 self-start" : "col-start-1",
|
|
70
|
+
x
|
|
71
|
+
),
|
|
72
|
+
children: [
|
|
73
|
+
!u && (v ? /* @__PURE__ */ e(
|
|
74
|
+
W,
|
|
75
|
+
{
|
|
76
|
+
className: s("shrink-0", d),
|
|
77
|
+
size: g(o),
|
|
78
|
+
sx: { color: "secondary.main" }
|
|
79
|
+
}
|
|
80
|
+
) : /* @__PURE__ */ e(
|
|
81
|
+
V,
|
|
82
|
+
{
|
|
83
|
+
className: s("shrink-0", d),
|
|
84
|
+
sx: { fontSize: g(o), color: "secondary.main" }
|
|
85
|
+
}
|
|
86
|
+
)),
|
|
87
|
+
/* @__PURE__ */ e(
|
|
88
|
+
"div",
|
|
89
|
+
{
|
|
90
|
+
className: s(
|
|
91
|
+
"shrink-0 whitespace-nowrap text-2xl font-medium",
|
|
92
|
+
p
|
|
93
|
+
),
|
|
94
|
+
children: r
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
j && /* @__PURE__ */ e(
|
|
101
|
+
"div",
|
|
102
|
+
{
|
|
103
|
+
ref: k,
|
|
104
|
+
className: s(
|
|
105
|
+
"flex max-w-full",
|
|
106
|
+
c ? "order-2 self-end justify-end" : "col-start-2 justify-self-center"
|
|
107
|
+
),
|
|
108
|
+
children: /* @__PURE__ */ n(
|
|
109
|
+
"div",
|
|
86
110
|
{
|
|
87
|
-
className:
|
|
88
|
-
|
|
111
|
+
className: s(
|
|
112
|
+
"flex max-w-full items-center gap-8",
|
|
113
|
+
c ? "flex-wrap justify-end" : "flex-nowrap justify-center"
|
|
114
|
+
),
|
|
115
|
+
children: [
|
|
116
|
+
a && /* @__PURE__ */ e("div", { className: "max-w-full", children: a }),
|
|
117
|
+
i && /* @__PURE__ */ e("div", { className: "max-w-full", children: i })
|
|
118
|
+
]
|
|
89
119
|
}
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
),
|
|
110
|
-
children: [
|
|
111
|
-
a && /* @__PURE__ */ e("div", { className: "max-w-full", children: a }),
|
|
112
|
-
r && /* @__PURE__ */ e("div", { className: "max-w-full", children: r })
|
|
113
|
-
]
|
|
114
|
-
}
|
|
115
|
-
)
|
|
116
|
-
}
|
|
117
|
-
),
|
|
118
|
-
c && /* @__PURE__ */ e(
|
|
119
|
-
"div",
|
|
120
|
-
{
|
|
121
|
-
ref: j,
|
|
122
|
-
className: i(
|
|
123
|
-
"flex max-w-full justify-end",
|
|
124
|
-
n ? "order-3 self-end" : "col-start-3 justify-self-end"
|
|
125
|
-
),
|
|
126
|
-
children: /* @__PURE__ */ e("div", { className: "flex max-w-full flex-wrap items-center gap-8", children: c })
|
|
127
|
-
}
|
|
128
|
-
)
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
) })),
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
),
|
|
123
|
+
f && /* @__PURE__ */ e(
|
|
124
|
+
"div",
|
|
125
|
+
{
|
|
126
|
+
ref: O,
|
|
127
|
+
className: s(
|
|
128
|
+
"flex max-w-full justify-end",
|
|
129
|
+
c ? "order-3 self-end" : "col-start-3 justify-self-end"
|
|
130
|
+
),
|
|
131
|
+
children: /* @__PURE__ */ e("div", { className: "flex max-w-full flex-wrap items-center gap-8", children: f })
|
|
132
|
+
}
|
|
133
|
+
)
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
),
|
|
137
|
+
h && /* @__PURE__ */ e(_, { className: "my-12" })
|
|
138
|
+
] }),
|
|
132
139
|
/* @__PURE__ */ e("div", { className: "OwpSection-body flex min-h-0 flex-1 flex-col", children: N })
|
|
133
140
|
] });
|
|
134
141
|
}, "OwpSection");
|
|
135
142
|
export {
|
|
136
|
-
|
|
143
|
+
J as OwpSection
|
|
137
144
|
};
|
|
138
145
|
//# sourceMappingURL=OwpSection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpSection.js","sources":["../../../src/components/OwpSection/OwpSection.tsx"],"sourcesContent":["import FitbitIcon from '@mui/icons-material/Fitbit';\nimport { CircularProgress, Divider, type IconProps } from '@mui/material';\nimport { useHeaderWrapState } from '@/hooks/useHeaderWrapState';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, ReactNode } from 'react';\
|
|
1
|
+
{"version":3,"file":"OwpSection.js","sources":["../../../src/components/OwpSection/OwpSection.tsx"],"sourcesContent":["import FitbitIcon from '@mui/icons-material/Fitbit';\nimport { CircularProgress, Divider, type IconProps } from '@mui/material';\nimport { useHeaderWrapState } from '@/hooks/useHeaderWrapState';\nimport { useMinimumVisibleState } from '@/hooks/internal/useMinimumVisibleState';\nimport clsx from 'clsx';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\n/**\n * 제목 아이콘 크기\n * @param iconSize MUI 아이콘 크기\n */\nconst getTitleIconSize = (iconSize?: IconProps['fontSize']) => {\n switch (iconSize) {\n case 'inherit':\n return '1em';\n case 'small':\n return '1.25rem';\n case 'large':\n return '2.1875rem';\n case 'medium':\n return '1.5rem';\n default:\n return 24;\n }\n};\n\ninterface OwpSectionProps {\n className?: string;\n headerProps?: HTMLAttributes<HTMLDivElement>;\n titleContainerClassName?: string;\n titleIconClassName?: string;\n titleTextClassName?: string;\n disableTitleIcon?: boolean;\n title?: ReactNode;\n actions?: ReactNode;\n leftSlot?: ReactNode;\n centerSlot?: ReactNode;\n children?: ReactNode;\n iconSize?: IconProps['fontSize'];\n loading?: boolean;\n showDivider?: boolean;\n}\n\n/**\n * OwpSection 컴포넌트\n * @param className CSS 클래스명\n * @param title 제목\n * @param disableTitleIcon disableTitleIcon 값\n * @param headerProps headerProps props\n * @param titleContainerClassName 제목 영역 CSS 클래스명\n * @param titleIconClassName 제목 아이콘 CSS 클래스명\n * @param titleTextClassName 제목 텍스트 CSS 클래스명\n * @param leftSlot leftSlot 값\n * @param centerSlot centerSlot 값\n * @param actions 액션 영역\n * @param loading 로딩 상태\n * @param showDivider 구분선 표시 여부\n */\nconst OwpSection = ({\n className,\n title,\n disableTitleIcon,\n headerProps,\n titleContainerClassName,\n titleIconClassName,\n titleTextClassName,\n actions,\n leftSlot,\n centerSlot,\n children,\n iconSize,\n loading,\n showDivider = false,\n}: OwpSectionProps) => {\n const hasTitle = title !== undefined && title !== null && title !== '';\n const hasSlots = Boolean(leftSlot || centerSlot);\n const isLoadingVisible = useMinimumVisibleState(loading);\n const { containerRef, titleRef, slotsRef, actionsRef, isWrapped } = useHeaderWrapState([\n title,\n leftSlot,\n centerSlot,\n actions,\n disableTitleIcon,\n iconSize,\n isLoadingVisible,\n titleContainerClassName,\n titleIconClassName,\n titleTextClassName,\n ]);\n const shouldRenderHeader = Boolean(hasTitle || actions || leftSlot || centerSlot);\n\n return (\n <div className={clsx('OwpSection-root flex h-full w-full flex-col', className)}>\n {shouldRenderHeader && (\n <div className={clsx('OwpSection-header min-h-36 w-full', !showDivider && 'mb-12')}>\n <div\n ref={containerRef}\n {...headerProps}\n className={clsx(\n 'min-h-36 w-full',\n isWrapped\n ? 'flex flex-col gap-8'\n : 'grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-8 gap-y-8',\n headerProps?.className,\n )}\n >\n {hasTitle && (\n <div\n ref={titleRef}\n className={clsx(\n 'flex shrink-0 items-center gap-8 whitespace-nowrap',\n isWrapped ? 'order-1 self-start' : 'col-start-1',\n titleContainerClassName,\n )}\n >\n {!disableTitleIcon &&\n (isLoadingVisible ? (\n <CircularProgress\n className={clsx('shrink-0', titleIconClassName)}\n size={getTitleIconSize(iconSize)}\n sx={{ color: 'secondary.main' }}\n />\n ) : (\n <FitbitIcon\n className={clsx('shrink-0', titleIconClassName)}\n sx={{ fontSize: getTitleIconSize(iconSize), color: 'secondary.main' }}\n />\n ))}\n <div\n className={clsx(\n 'shrink-0 whitespace-nowrap text-2xl font-medium',\n titleTextClassName,\n )}\n >\n {title}\n </div>\n </div>\n )}\n {hasSlots && (\n <div\n ref={slotsRef}\n className={clsx(\n 'flex max-w-full',\n isWrapped ? 'order-2 self-end justify-end' : 'col-start-2 justify-self-center',\n )}\n >\n <div\n className={clsx(\n 'flex max-w-full items-center gap-8',\n isWrapped ? 'flex-wrap justify-end' : 'flex-nowrap justify-center',\n )}\n >\n {leftSlot && <div className=\"max-w-full\">{leftSlot}</div>}\n {centerSlot && <div className=\"max-w-full\">{centerSlot}</div>}\n </div>\n </div>\n )}\n {actions && (\n <div\n ref={actionsRef}\n className={clsx(\n 'flex max-w-full justify-end',\n isWrapped ? 'order-3 self-end' : 'col-start-3 justify-self-end',\n )}\n >\n <div className=\"flex max-w-full flex-wrap items-center gap-8\">{actions}</div>\n </div>\n )}\n </div>\n {showDivider && <Divider className=\"my-12\" />}\n </div>\n )}\n <div className=\"OwpSection-body flex min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n );\n};\n\nexport { OwpSection };\n"],"names":["getTitleIconSize","__name","iconSize","OwpSection","className","title","disableTitleIcon","headerProps","titleContainerClassName","titleIconClassName","titleTextClassName","actions","leftSlot","centerSlot","children","loading","showDivider","hasTitle","hasSlots","isLoadingVisible","useMinimumVisibleState","containerRef","titleRef","slotsRef","actionsRef","isWrapped","useHeaderWrapState","shouldRenderHeader","clsx","jsxs","jsx","CircularProgress","FitbitIcon","Divider"],"mappings":"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"}
|