@vaadin/hilla-react-crud 25.2.0-alpha4 → 25.2.0-alpha6
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/header-filter.js.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +6 -6
- package/util.js +1 -1
- package/util.js.map +1 -1
package/header-filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-filter.js","sourceRoot":"","sources":["src/header-filter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { _enum, type EnumModel } from '@vaadin/hilla-lit-form';\nimport { DatePicker } from '@vaadin/react-components/DatePicker.js';\nimport type { GridColumnProps } from '@vaadin/react-components/GridColumn.js';\nimport { Item } from '@vaadin/react-components/Item.js';\nimport { ListBox } from '@vaadin/react-components/ListBox.js';\nimport { NumberField } from '@vaadin/react-components/NumberField.js';\nimport { Select, type SelectElement } from '@vaadin/react-components/Select.js';\nimport { TextField, type TextFieldElement } from '@vaadin/react-components/TextField.js';\nimport { TimePicker } from '@vaadin/react-components/TimePicker.js';\nimport {\n type ComponentType,\n type JSX,\n type ReactElement,\n type RefObject,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { ColumnContext, CustomColumnContext } from './autogrid-column-context.js';\nimport { useDatePickerI18n } from './locale.js';\nimport type FilterUnion from './types/com/vaadin/hilla/crud/filter/FilterUnion.js';\nimport Matcher from './types/com/vaadin/hilla/crud/filter/PropertyStringFilter/Matcher.js';\nimport type PropertyStringFilter from './types/com/vaadin/hilla/crud/filter/PropertyStringFilter.js';\nimport { convertToTitleCase } from './util';\n\ntype ExtractComponentTypeProps<T extends ComponentType<any>> = T extends ComponentType<infer U> ? U : never;\n\nexport type HeaderRendererProps = ExtractComponentTypeProps<\n NonNullable<Required<GridColumnProps<unknown>>['headerRenderer']>\n>;\n\nexport type HeaderFilterRendererProps = HeaderRendererProps & {\n /**\n * Allows to set custom filters for the column.\n * This is used by the header filter components.\n * @param filter - The filter to set in the filter list.\n */\n setFilter(filter: FilterUnion): void;\n};\n\nexport type HeaderFilterProps = Readonly<{\n /**\n * If true, the column can be sorted. This is useful to disable sorting for\n * properties that are not sortable in the backend, or that require excessive processing.\n */\n sortable?: boolean;\n /**\n * If true, the column can be filtered. This is useful to disable filtering for\n * properties that are not sortable in the backend, or that require excessive processing.\n */\n filterable?: boolean;\n /**\n * Placeholder text for the filter input.\n * Only applies to string, number and date/time value filters.\n */\n filterPlaceholder?: string;\n /**\n * Debounce time for the filter input in milliseconds.\n * Only applies to string value filters and number value filters.\n */\n filterDebounceTime?: number;\n /**\n * Minimum length for the filter input.\n * Only applies to string value filters.\n */\n filterMinLength?: number;\n\n /**\n * Custom renderer for the filter in the header.\n */\n headerFilterRenderer?: ComponentType<HeaderFilterRendererProps>;\n}>;\n\nfunction useFilterState(initialMatcher: Matcher) {\n const context = useContext(ColumnContext)!;\n const [matcher, setMatcher] = useState(initialMatcher);\n const [filterValue, setFilterValue] = useState('');\n\n function updateFilter(newMatcher: Matcher, newFilterValue: string) {\n setFilterValue(newFilterValue);\n setMatcher(newMatcher);\n\n const filter: PropertyStringFilter = {\n propertyId: context.propertyInfo.name,\n filterValue: newFilterValue,\n matcher: newMatcher,\n '@type': 'propertyString',\n };\n context.setColumnFilter(filter, context.filterKey);\n }\n\n return { matcher, filterValue, updateFilter };\n}\n\n// Workaround for https://github.com/vaadin/react-components/issues/148\nfunction useSelectInitWorkaround(selectRef: RefObject<SelectElement | null>) {\n useEffect(() => {\n setTimeout(() => {\n if (selectRef.current) {\n selectRef.current.requestContentUpdate();\n }\n }, 1);\n }, []);\n}\n\n// extracted component (and type) to avoid code duplication\ntype ComparationSelectionProps = Readonly<{\n value: Matcher;\n onMatcherChanged(matcher: Matcher): void;\n isDateTimeType?: boolean;\n}>;\n\nfunction ComparationSelection({ onMatcherChanged, value, isDateTimeType }: ComparationSelectionProps): ReactElement {\n const select = useRef<SelectElement>(null);\n\n useSelectInitWorkaround(select);\n\n return (\n <Select\n theme=\"small\"\n className=\"auto-grid-comparation-selection\"\n ref={select}\n value={value}\n onValueChanged={({ detail }) => {\n onMatcherChanged(detail.value as Matcher);\n }}\n renderer={() => (\n <ListBox>\n <Item value={Matcher.GREATER_THAN} {...{ label: '>' }}>\n {isDateTimeType ? '> After' : '> Greater than'}\n </Item>\n <Item value={Matcher.LESS_THAN} {...{ label: '<' }}>\n {isDateTimeType ? '< Before' : '< Less than'}\n </Item>\n <Item value={Matcher.EQUALS} {...{ label: '=' }}>\n = Equals\n </Item>\n </ListBox>\n )}\n ></Select>\n );\n}\n\nexport function StringHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const { filterPlaceholder, filterDebounceTime, filterMinLength } = context.customColumnOptions ?? {};\n const { updateFilter } = useFilterState(Matcher.CONTAINS);\n const [inputValue, setInputValue] = useState('');\n\n useEffect(() => {\n if (filterMinLength && inputValue && inputValue.length < filterMinLength) {\n updateFilter(Matcher.CONTAINS, '');\n return () => {};\n }\n\n const delayInputTimeoutId = setTimeout(() => {\n updateFilter(Matcher.CONTAINS, inputValue);\n }, filterDebounceTime ?? 200);\n return () => clearTimeout(delayInputTimeoutId);\n }, [inputValue]);\n\n return (\n <div className=\"auto-grid-string-filter\">\n <TextField\n theme=\"small\"\n placeholder={filterPlaceholder ?? 'Filter...'}\n onInput={(e: any) => {\n const fieldValue = ((e as InputEvent).target as TextFieldElement).value;\n setInputValue(fieldValue);\n }}\n ></TextField>\n </div>\n );\n}\n\nexport function NumberHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const { filterPlaceholder, filterDebounceTime } = context.customColumnOptions ?? {};\n const [inputValue, setInputValue] = useState('');\n const { matcher, filterValue, updateFilter } = useFilterState(Matcher.GREATER_THAN);\n const select = useRef<SelectElement>(null);\n\n useSelectInitWorkaround(select);\n\n useEffect(() => {\n const delayInputTimeoutId = setTimeout(() => {\n updateFilter(matcher, inputValue);\n }, filterDebounceTime ?? 200);\n return () => clearTimeout(delayInputTimeoutId);\n }, [inputValue]);\n\n return (\n <div className=\"auto-grid-number-filter\">\n <ComparationSelection value={matcher} onMatcherChanged={(m) => updateFilter(m, filterValue)} />\n <NumberField\n theme=\"small\"\n placeholder={filterPlaceholder ?? 'Filter...'}\n onInput={(e) => {\n const fieldValue = ((e as InputEvent).target as TextFieldElement).value;\n setInputValue(fieldValue);\n }}\n />\n </div>\n );\n}\n\nexport function EnumHeaderFilter(): ReactElement {\n const { filterValue, updateFilter } = useFilterState(Matcher.EQUALS);\n const context = useContext(ColumnContext)!;\n const model = context.propertyInfo.model as EnumModel;\n const options = [\n {\n value: '',\n label: '',\n },\n ...Object.keys(model[_enum]).map((value) => ({\n label: convertToTitleCase(value),\n value,\n })),\n ];\n return (\n <div className=\"auto-grid-enum-filter\">\n <Select\n theme=\"small\"\n items={options}\n value={filterValue}\n onValueChanged={(e) => {\n const newFilterValue = e.detail.value;\n updateFilter(Matcher.EQUALS, newFilterValue);\n }}\n />\n </div>\n );\n}\n\nexport function BooleanHeaderFilter(): ReactElement {\n const { filterValue, updateFilter } = useFilterState(Matcher.EQUALS);\n const select = useRef<SelectElement>(null);\n\n useSelectInitWorkaround(select);\n\n return (\n <div className=\"auto-grid-boolean-filter\">\n <Select\n theme=\"small\"\n ref={select}\n onValueChanged={(e) => {\n const newFilterValue = e.detail.value;\n updateFilter(Matcher.EQUALS, newFilterValue);\n }}\n renderer={() => (\n <ListBox>\n <Item value={''} {...{ label: '' }}></Item>\n <Item value={'True'} {...{ label: 'Yes' }}>\n Yes\n </Item>\n <Item value={'False'} {...{ label: 'No' }}>\n No\n </Item>\n </ListBox>\n )}\n value={filterValue}\n ></Select>\n </div>\n );\n}\n\nexport function DateHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const i18n = useDatePickerI18n();\n const { matcher, filterValue, updateFilter } = useFilterState(Matcher.GREATER_THAN);\n const [invalid, setInvalid] = useState(false);\n\n return (\n <div className=\"auto-grid-date-filter\">\n <ComparationSelection\n value={matcher}\n onMatcherChanged={(m) => updateFilter(m, filterValue)}\n isDateTimeType={true}\n />\n <DatePicker\n theme=\"small\"\n value={filterValue}\n placeholder={context.customColumnOptions?.filterPlaceholder ?? 'Filter...'}\n i18n={i18n}\n onInvalidChanged={({ detail: { value } }) => {\n setInvalid(value);\n }}\n onValueChanged={({ detail: { value } }) => {\n if (!(invalid || value === filterValue)) {\n updateFilter(matcher, value);\n }\n }}\n />\n </div>\n );\n}\n\nexport function TimeHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const { matcher, filterValue, updateFilter } = useFilterState(Matcher.GREATER_THAN);\n const [invalid, setInvalid] = useState(false);\n\n return (\n <div className=\"auto-grid-time-filter\">\n <ComparationSelection\n value={matcher}\n onMatcherChanged={(m) => updateFilter(m, filterValue)}\n isDateTimeType={true}\n />\n <TimePicker\n theme=\"small\"\n value={filterValue}\n placeholder={context.customColumnOptions?.filterPlaceholder ?? 'Filter...'}\n onInvalidChanged={({ detail: { value } }) => {\n setInvalid(value);\n }}\n onValueChanged={({ detail: { value } }) => {\n if (!(invalid || value === filterValue)) {\n updateFilter(matcher, value);\n }\n }}\n />\n </div>\n );\n}\n\nexport function NoHeaderFilter(): ReactElement {\n return <></>;\n}\n\nexport function HeaderFilterWrapper({ original }: HeaderRendererProps): JSX.Element | null {\n const context = useContext(ColumnContext);\n const customContext = useContext(CustomColumnContext);\n const { setColumnFilter, headerFilterRenderer: HeaderFilterRenderer, filterKey } = (context ?? customContext)!;\n\n function setFilter(filter: FilterUnion) {\n setColumnFilter(filter, filterKey);\n }\n\n return <HeaderFilterRenderer original={original} setFilter={setFilter} />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"header-filter.js","sourceRoot":"","sources":["src/header-filter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { _enum, type EnumModel } from '@vaadin/hilla-lit-form';\nimport { DatePicker } from '@vaadin/react-components/DatePicker.js';\nimport type { GridColumnProps } from '@vaadin/react-components/GridColumn.js';\nimport { Item } from '@vaadin/react-components/Item.js';\nimport { ListBox } from '@vaadin/react-components/ListBox.js';\nimport { NumberField } from '@vaadin/react-components/NumberField.js';\nimport { Select, type SelectElement } from '@vaadin/react-components/Select.js';\nimport { TextField, type TextFieldElement } from '@vaadin/react-components/TextField.js';\nimport { TimePicker } from '@vaadin/react-components/TimePicker.js';\nimport {\n type ComponentType,\n type JSX,\n type ReactElement,\n type RefObject,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { ColumnContext, CustomColumnContext } from './autogrid-column-context.js';\nimport { useDatePickerI18n } from './locale.js';\nimport type FilterUnion from './types/com/vaadin/hilla/crud/filter/FilterUnion.js';\nimport Matcher from './types/com/vaadin/hilla/crud/filter/PropertyStringFilter/Matcher.js';\nimport type PropertyStringFilter from './types/com/vaadin/hilla/crud/filter/PropertyStringFilter.js';\nimport { convertToTitleCase } from './util';\n\ntype ExtractComponentTypeProps<T extends ComponentType<any>> = T extends ComponentType<infer U> ? U : never;\n\nexport type HeaderRendererProps = ExtractComponentTypeProps<\n NonNullable<Required<GridColumnProps<unknown>>['headerRenderer']>\n>;\n\nexport type HeaderFilterRendererProps = HeaderRendererProps & {\n /**\n * Allows to set custom filters for the column.\n * This is used by the header filter components.\n * @param filter - The filter to set in the filter list.\n */\n setFilter(filter: FilterUnion): void;\n};\n\nexport type HeaderFilterProps = Readonly<{\n /**\n * If true, the column can be sorted. This is useful to disable sorting for\n * properties that are not sortable in the backend, or that require excessive processing.\n */\n sortable?: boolean;\n /**\n * If true, the column can be filtered. This is useful to disable filtering for\n * properties that are not sortable in the backend, or that require excessive processing.\n */\n filterable?: boolean;\n /**\n * Placeholder text for the filter input.\n * Only applies to string, number and date/time value filters.\n */\n filterPlaceholder?: string;\n /**\n * Debounce time for the filter input in milliseconds.\n * Only applies to string value filters and number value filters.\n */\n filterDebounceTime?: number;\n /**\n * Minimum length for the filter input.\n * Only applies to string value filters.\n */\n filterMinLength?: number;\n\n /**\n * Custom renderer for the filter in the header.\n */\n headerFilterRenderer?: ComponentType<HeaderFilterRendererProps>;\n}>;\n\nfunction useFilterState(initialMatcher: Matcher) {\n const context = useContext(ColumnContext)!;\n const [matcher, setMatcher] = useState(initialMatcher);\n const [filterValue, setFilterValue] = useState('');\n\n function updateFilter(newMatcher: Matcher, newFilterValue: string) {\n setFilterValue(newFilterValue);\n setMatcher(newMatcher);\n\n const filter: PropertyStringFilter = {\n propertyId: context.propertyInfo.name,\n filterValue: newFilterValue,\n matcher: newMatcher,\n '@type': 'propertyString',\n };\n context.setColumnFilter(filter, context.filterKey);\n }\n\n return { matcher, filterValue, updateFilter };\n}\n\n// Workaround for https://github.com/vaadin/react-components/issues/148\nfunction useSelectInitWorkaround(selectRef: RefObject<SelectElement | null>) {\n useEffect(() => {\n setTimeout(() => {\n if (selectRef.current) {\n selectRef.current.requestContentUpdate();\n }\n }, 1);\n }, []);\n}\n\n// extracted component (and type) to avoid code duplication\ntype ComparationSelectionProps = Readonly<{\n value: Matcher;\n onMatcherChanged(matcher: Matcher): void;\n isDateTimeType?: boolean;\n}>;\n\nfunction ComparationSelection({ onMatcherChanged, value, isDateTimeType }: ComparationSelectionProps): ReactElement {\n const select = useRef<SelectElement>(null);\n\n useSelectInitWorkaround(select);\n\n return (\n <Select\n theme=\"small\"\n className=\"auto-grid-comparation-selection\"\n ref={select}\n value={value}\n onValueChanged={({ detail }) => {\n onMatcherChanged(detail.value as Matcher);\n }}\n renderer={() => (\n <ListBox>\n <Item value={Matcher.GREATER_THAN} {...{ label: '>' }}>\n {isDateTimeType ? '> After' : '> Greater than'}\n </Item>\n <Item value={Matcher.LESS_THAN} {...{ label: '<' }}>\n {isDateTimeType ? '< Before' : '< Less than'}\n </Item>\n <Item value={Matcher.EQUALS} {...{ label: '=' }}>\n = Equals\n </Item>\n </ListBox>\n )}\n ></Select>\n );\n}\n\nexport function StringHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const { filterPlaceholder, filterDebounceTime, filterMinLength } = context.customColumnOptions ?? {};\n const { updateFilter } = useFilterState(Matcher.CONTAINS);\n const [inputValue, setInputValue] = useState('');\n\n useEffect(() => {\n if (filterMinLength && inputValue && inputValue.length < filterMinLength) {\n updateFilter(Matcher.CONTAINS, '');\n return () => {};\n }\n\n const delayInputTimeoutId = setTimeout(() => {\n updateFilter(Matcher.CONTAINS, inputValue);\n }, filterDebounceTime ?? 200);\n return () => clearTimeout(delayInputTimeoutId);\n }, [inputValue]);\n\n return (\n <div className=\"auto-grid-string-filter\">\n <TextField\n theme=\"small\"\n placeholder={filterPlaceholder ?? 'Filter...'}\n onInput={(e: any) => {\n const fieldValue = ((e as InputEvent).target as TextFieldElement).value;\n setInputValue(fieldValue);\n }}\n ></TextField>\n </div>\n );\n}\n\nexport function NumberHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const { filterPlaceholder, filterDebounceTime } = context.customColumnOptions ?? {};\n const [inputValue, setInputValue] = useState('');\n const { matcher, filterValue, updateFilter } = useFilterState(Matcher.GREATER_THAN);\n const select = useRef<SelectElement>(null);\n\n useSelectInitWorkaround(select);\n\n useEffect(() => {\n const delayInputTimeoutId = setTimeout(() => {\n updateFilter(matcher, inputValue);\n }, filterDebounceTime ?? 200);\n return () => clearTimeout(delayInputTimeoutId);\n }, [inputValue]);\n\n return (\n <div className=\"auto-grid-number-filter\">\n <ComparationSelection value={matcher} onMatcherChanged={(m) => updateFilter(m, filterValue)} />\n <NumberField\n theme=\"small\"\n placeholder={filterPlaceholder ?? 'Filter...'}\n onInput={(e) => {\n const fieldValue = (e.target as TextFieldElement).value;\n setInputValue(fieldValue);\n }}\n />\n </div>\n );\n}\n\nexport function EnumHeaderFilter(): ReactElement {\n const { filterValue, updateFilter } = useFilterState(Matcher.EQUALS);\n const context = useContext(ColumnContext)!;\n const model = context.propertyInfo.model as EnumModel;\n const options = [\n {\n value: '',\n label: '',\n },\n ...Object.keys(model[_enum]).map((value) => ({\n label: convertToTitleCase(value),\n value,\n })),\n ];\n return (\n <div className=\"auto-grid-enum-filter\">\n <Select\n theme=\"small\"\n items={options}\n value={filterValue}\n onValueChanged={(e) => {\n const newFilterValue = e.detail.value;\n updateFilter(Matcher.EQUALS, newFilterValue);\n }}\n />\n </div>\n );\n}\n\nexport function BooleanHeaderFilter(): ReactElement {\n const { filterValue, updateFilter } = useFilterState(Matcher.EQUALS);\n const select = useRef<SelectElement>(null);\n\n useSelectInitWorkaround(select);\n\n return (\n <div className=\"auto-grid-boolean-filter\">\n <Select\n theme=\"small\"\n ref={select}\n onValueChanged={(e) => {\n const newFilterValue = e.detail.value;\n updateFilter(Matcher.EQUALS, newFilterValue);\n }}\n renderer={() => (\n <ListBox>\n <Item value={''} {...{ label: '' }}></Item>\n <Item value={'True'} {...{ label: 'Yes' }}>\n Yes\n </Item>\n <Item value={'False'} {...{ label: 'No' }}>\n No\n </Item>\n </ListBox>\n )}\n value={filterValue}\n ></Select>\n </div>\n );\n}\n\nexport function DateHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const i18n = useDatePickerI18n();\n const { matcher, filterValue, updateFilter } = useFilterState(Matcher.GREATER_THAN);\n const [invalid, setInvalid] = useState(false);\n\n return (\n <div className=\"auto-grid-date-filter\">\n <ComparationSelection\n value={matcher}\n onMatcherChanged={(m) => updateFilter(m, filterValue)}\n isDateTimeType={true}\n />\n <DatePicker\n theme=\"small\"\n value={filterValue}\n placeholder={context.customColumnOptions?.filterPlaceholder ?? 'Filter...'}\n i18n={i18n}\n onInvalidChanged={({ detail: { value } }) => {\n setInvalid(value);\n }}\n onValueChanged={({ detail: { value } }) => {\n if (!(invalid || value === filterValue)) {\n updateFilter(matcher, value);\n }\n }}\n />\n </div>\n );\n}\n\nexport function TimeHeaderFilter(): ReactElement {\n const context = useContext(ColumnContext)!;\n const { matcher, filterValue, updateFilter } = useFilterState(Matcher.GREATER_THAN);\n const [invalid, setInvalid] = useState(false);\n\n return (\n <div className=\"auto-grid-time-filter\">\n <ComparationSelection\n value={matcher}\n onMatcherChanged={(m) => updateFilter(m, filterValue)}\n isDateTimeType={true}\n />\n <TimePicker\n theme=\"small\"\n value={filterValue}\n placeholder={context.customColumnOptions?.filterPlaceholder ?? 'Filter...'}\n onInvalidChanged={({ detail: { value } }) => {\n setInvalid(value);\n }}\n onValueChanged={({ detail: { value } }) => {\n if (!(invalid || value === filterValue)) {\n updateFilter(matcher, value);\n }\n }}\n />\n </div>\n );\n}\n\nexport function NoHeaderFilter(): ReactElement {\n return <></>;\n}\n\nexport function HeaderFilterWrapper({ original }: HeaderRendererProps): JSX.Element | null {\n const context = useContext(ColumnContext);\n const customContext = useContext(CustomColumnContext);\n const { setColumnFilter, headerFilterRenderer: HeaderFilterRenderer, filterKey } = (context ?? customContext)!;\n\n function setFilter(filter: FilterUnion) {\n setColumnFilter(filter, filterKey);\n }\n\n return <HeaderFilterRenderer original={original} setFilter={setFilter} />;\n}\n"]}
|
package/index.js
CHANGED
|
@@ -6,7 +6,7 @@ export { useDataProvider, useGridDataProvider, useComboBoxDataProvider } from '.
|
|
|
6
6
|
vaadinObj.registrations ??= [];
|
|
7
7
|
vaadinObj.registrations.push({
|
|
8
8
|
is: feature ? `@vaadin/hilla-react-crud/${feature}` : '@vaadin/hilla-react-crud',
|
|
9
|
-
version: '25.2.0-
|
|
9
|
+
version: '25.2.0-alpha6',
|
|
10
10
|
});
|
|
11
11
|
})();
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AAEtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAInG,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,EAAE;IACnD,SAAS,CAAC,aAAa,KAAK,EAAE,CAAC;IAC/B,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;QAC3B,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC,CAAC,0BAA0B;QAChF,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,EAAE,CAAC","sourcesContent":["export * from './autogrid-feature.js';\nexport type * from './crud.js';\nexport * from './autoform-feature.js';\nexport * from './autocrud-feature.js';\nexport { useDataProvider, useGridDataProvider, useComboBoxDataProvider } from './data-provider.js';\n\n// @ts-expect-error: esbuild injection\n// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n((feature, vaadinObj = (globalThis.Vaadin ??= {})) => {\n vaadinObj.registrations ??= [];\n vaadinObj.registrations.push({\n is: feature ? `@vaadin/hilla-react-crud/${feature}` : '@vaadin/hilla-react-crud',\n version: '25.2.0-
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AAEtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAInG,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,EAAE;IACnD,SAAS,CAAC,aAAa,KAAK,EAAE,CAAC;IAC/B,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;QAC3B,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC,CAAC,0BAA0B;QAChF,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,EAAE,CAAC","sourcesContent":["export * from './autogrid-feature.js';\nexport type * from './crud.js';\nexport * from './autoform-feature.js';\nexport * from './autocrud-feature.js';\nexport { useDataProvider, useGridDataProvider, useComboBoxDataProvider } from './data-provider.js';\n\n// @ts-expect-error: esbuild injection\n// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n((feature, vaadinObj = (globalThis.Vaadin ??= {})) => {\n vaadinObj.registrations ??= [];\n vaadinObj.registrations.push({\n is: feature ? `@vaadin/hilla-react-crud/${feature}` : '@vaadin/hilla-react-crud',\n version: '25.2.0-alpha6',\n });\n})();\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/hilla-react-crud",
|
|
3
|
-
"version": "25.2.0-
|
|
3
|
+
"version": "25.2.0-alpha6",
|
|
4
4
|
"description": "Hilla CRUD utils for React",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.js",
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@vaadin/hilla-frontend": "25.2.0-
|
|
58
|
-
"@vaadin/hilla-lit-form": "25.2.0-
|
|
59
|
-
"@vaadin/hilla-react-form": "25.2.0-
|
|
60
|
-
"@vaadin/vaadin-lumo-styles": "25.2.0-
|
|
61
|
-
"@vaadin/react-components": "25.2.0-
|
|
57
|
+
"@vaadin/hilla-frontend": "25.2.0-alpha6",
|
|
58
|
+
"@vaadin/hilla-lit-form": "25.2.0-alpha6",
|
|
59
|
+
"@vaadin/hilla-react-form": "25.2.0-alpha6",
|
|
60
|
+
"@vaadin/vaadin-lumo-styles": "25.2.0-alpha9",
|
|
61
|
+
"@vaadin/react-components": "25.2.0-alpha9",
|
|
62
62
|
"type-fest": "4.35.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
package/util.js
CHANGED
|
@@ -24,7 +24,7 @@ function useFeatureRegistration(feature) {
|
|
|
24
24
|
vaadinObj.registrations ??= [];
|
|
25
25
|
vaadinObj.registrations.push({
|
|
26
26
|
is: feature ? `@vaadin/hilla-react-crud/${feature}` : '@vaadin/hilla-react-crud',
|
|
27
|
-
version: '25.2.0-
|
|
27
|
+
version: '25.2.0-alpha6',
|
|
28
28
|
});
|
|
29
29
|
})(feature);
|
|
30
30
|
}
|
package/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type CSSProperties, forwardRef } from 'react';\nimport type FilterUnion from './types/com/vaadin/hilla/crud/filter/FilterUnion.js';\n\nexport type ComponentStyleProps = Readonly<{\n id?: string;\n style?: CSSProperties;\n className?: string;\n}>;\n\nexport function convertToTitleCase(inputString: string): string {\n // Convert underscores to spaces\n const stringWithSpaces = inputString.replace(/_/gu, ' ');\n\n // Convert to title case\n const words = stringWithSpaces.split(' ');\n const titleCaseWords = words.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase());\n\n // Join the title case words with spaces\n return titleCaseWords.join(' ');\n}\n\nexport function registerStylesheet(stylesheet: CSSStyleSheet): void {\n const css = Array.from(stylesheet.cssRules)\n .map((rule) => rule.cssText)\n .join('\\n');\n\n const styleTag = document.createElement('style');\n styleTag.textContent = css;\n document.head.prepend(styleTag);\n}\n\nconst registeredFeatures = new Set<string>();\nfunction useFeatureRegistration(feature: string): void {\n if (registeredFeatures.has(feature)) {\n return;\n }\n\n registeredFeatures.add(feature);\n // @ts-expect-error: esbuild injection\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n ((feature, vaadinObj = (globalThis.Vaadin ??= {})) => {\n vaadinObj.registrations ??= [];\n vaadinObj.registrations.push({\n is: feature ? `@vaadin/hilla-react-crud/${feature}` : '@vaadin/hilla-react-crud',\n version: '25.2.0-
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type CSSProperties, forwardRef } from 'react';\nimport type FilterUnion from './types/com/vaadin/hilla/crud/filter/FilterUnion.js';\n\nexport type ComponentStyleProps = Readonly<{\n id?: string;\n style?: CSSProperties;\n className?: string;\n}>;\n\nexport function convertToTitleCase(inputString: string): string {\n // Convert underscores to spaces\n const stringWithSpaces = inputString.replace(/_/gu, ' ');\n\n // Convert to title case\n const words = stringWithSpaces.split(' ');\n const titleCaseWords = words.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase());\n\n // Join the title case words with spaces\n return titleCaseWords.join(' ');\n}\n\nexport function registerStylesheet(stylesheet: CSSStyleSheet): void {\n const css = Array.from(stylesheet.cssRules)\n .map((rule) => rule.cssText)\n .join('\\n');\n\n const styleTag = document.createElement('style');\n styleTag.textContent = css;\n document.head.prepend(styleTag);\n}\n\nconst registeredFeatures = new Set<string>();\nfunction useFeatureRegistration(feature: string): void {\n if (registeredFeatures.has(feature)) {\n return;\n }\n\n registeredFeatures.add(feature);\n // @ts-expect-error: esbuild injection\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n ((feature, vaadinObj = (globalThis.Vaadin ??= {})) => {\n vaadinObj.registrations ??= [];\n vaadinObj.registrations.push({\n is: feature ? `@vaadin/hilla-react-crud/${feature}` : '@vaadin/hilla-react-crud',\n version: '25.2.0-alpha6',\n });\n})(feature);\n}\n\nexport function featureRegistration<C extends (...args: any[]) => any>(Component: C, feature: string): C {\n return forwardRef<unknown, React.JSX.LibraryManagedAttributes<C, NonNullable<unknown>>>((props, ref) => {\n useFeatureRegistration(feature);\n return <Component {...(props as any)} ref={ref} />;\n }) as unknown as C;\n}\n\nexport function isFilterEmpty(filter: FilterUnion): boolean {\n if (filter['@type'] === 'and' || filter['@type'] === 'or') {\n if (filter.children.length === 0) {\n return true;\n }\n return filter.children.every((child) => isFilterEmpty(child as FilterUnion));\n }\n if ('filterValue' in filter) {\n return filter.filterValue === '';\n }\n throw new Error(`Unknown filter type: ${'@type' in filter ? filter['@type'] : JSON.stringify(filter)} `);\n}\n"]}
|