Skip to content
This repository was archived by the owner on Mar 17, 2024. It is now read-only.

Commit 8c4c472

Browse files
committed
BREAKING CHANGE: DropdownButton and DropdownMenuItem title now is ref
fix: typo MutliDropdownController to MultiDropdownController build: v0.7.2
1 parent 72d0121 commit 8c4c472

10 files changed

+39
-39
lines changed

CHANGELOG.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 0.7.0
22

3-
### feat: MutliDropdownButton
3+
### feat: MultiDropdownButton
44

55
Usage:
66

@@ -14,7 +14,7 @@ const IndexedText {
1414
}
1515

1616

17-
const multiDropdownController = new MutliDropdownFieldController<IndexedText>(
17+
const multiDropdownController = new MultiDropdownFieldController<IndexedText>(
1818
{ keyofValue: 'id' }
1919
)
2020
```

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ const IndexedText {
218218
}
219219

220220

221-
const multiDropdownController = new MutliDropdownFieldController<IndexedText>(
221+
const multiDropdownController = new MultiDropdownFieldController<IndexedText>(
222222
{ keyofValue: 'id' }
223223
)
224224
```

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@xsoulspace/vue_flutter_tailwind",
33
"description": "Vue3 styled like Flutter with Tailwind CSS",
4-
"version": "0.7.1",
4+
"version": "0.7.2",
55
"private": false,
66
"author": {
77
"name": "Anton Malofeev",

src/abstract/DropdownFieldController.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ interface DropdownButtonAbstractI<TValue> {
1616

1717
export interface MultiDropdownButtonI<
1818
TValue,
19-
TKeyValue extends MutliDropdownSelectedItemI<TValue>
19+
TKeyValue extends MultiDropdownSelectedItemI<TValue>
2020
> extends DropdownButtonAbstractI<TValue> {
21-
controller: MutliDropdownFieldController<TValue, TKeyValue>
21+
controller: MultiDropdownFieldController<TValue, TKeyValue>
2222
onCreateNew?: Maybe<
2323
({ editingText }: { editingText: string }) => Promise<void>
2424
>
@@ -44,35 +44,35 @@ export interface DropdownFieldControllerI<I>
4444
value?: Maybe<I>
4545
}
4646

47-
export interface MutliDropdownFieldControllerI<TValue>
47+
export interface MultiDropdownFieldControllerI<TValue>
4848
extends DropdownFieldControllerAbstractI {
4949
value?: Maybe<TValue>[]
5050
keyofValue: keyof TValue
5151
}
5252
/**
5353
* This class provides a way to create selected items from
54-
* outside for`{MutliDropdownFieldController.value}`
54+
* outside for`{MultiDropdownFieldController.value}`
5555
*/
56-
export type MutliDropdownSelectedItemI<TValue> = {
56+
export type MultiDropdownSelectedItemI<TValue> = {
5757
key: TValue[keyof TValue] | string
5858
value: TValue
5959
}
6060
/**
61-
* This is typeguard for MutliDropdownSelectedItemI interface
61+
* This is typeguard for MultiDropdownSelectedItemI interface
6262
*/
63-
export const isMutliDropdownSelectedItem = <
63+
export const isMultiDropdownSelectedItem = <
6464
TValue,
65-
TKeyValue extends MutliDropdownSelectedItemI<TValue>
65+
TKeyValue extends MultiDropdownSelectedItemI<TValue>
6666
>(
6767
arg: Record<string, unknown>
6868
): arg is TKeyValue => {
6969
return 'key' in arg && 'value' in arg
7070
}
7171
/**
7272
* This class provides a way to create selected items from
73-
* `{ItemBuilder}` for``{MutliDropdown}``
73+
* `{ItemBuilder}` for``{MultiDropdown}``
7474
*/
75-
export interface MutliDropdownSelectedValueI<TValue> {
75+
export interface MultiDropdownSelectedValueI<TValue> {
7676
selected: boolean
7777
value: TValue
7878
}
@@ -135,9 +135,9 @@ export class DropdownFieldController<
135135
type TKeyValueIndex = number
136136

137137
// TODO: add properties
138-
export class MutliDropdownFieldController<
138+
export class MultiDropdownFieldController<
139139
TValue,
140-
TKeyValue extends MutliDropdownSelectedItemI<TValue> = MutliDropdownSelectedItemI<TValue>
140+
TKeyValue extends MultiDropdownSelectedItemI<TValue> = MultiDropdownSelectedItemI<TValue>
141141
> extends DropdownFieldControllerAbstract {
142142
private _reactVal: {
143143
val: Maybe<TKeyValue>[]
@@ -151,7 +151,7 @@ export class MutliDropdownFieldController<
151151
maxLines,
152152
maxLength,
153153
keyofValue,
154-
}: MutliDropdownFieldControllerI<TValue>) {
154+
}: MultiDropdownFieldControllerI<TValue>) {
155155
super({
156156
maxLength,
157157
maxLines,
@@ -167,11 +167,11 @@ export class MutliDropdownFieldController<
167167
toKeyValues({ values }: { values: Maybe<TValue>[] }): Maybe<TKeyValue>[] {
168168
return values.filter(isNotNull).map((value) => {
169169
const key = value[this.keyofValue]
170-
const keyValue: MutliDropdownSelectedItemI<TValue> = {
170+
const keyValue: MultiDropdownSelectedItemI<TValue> = {
171171
key,
172172
value,
173173
}
174-
if (isMutliDropdownSelectedItem<TValue, TKeyValue>(keyValue)) {
174+
if (isMultiDropdownSelectedItem<TValue, TKeyValue>(keyValue)) {
175175
return keyValue
176176
}
177177
return

src/abstract/DropdownMenuItem.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { Component } from 'vue'
1+
import { Component, Ref } from 'vue'
22
import { Maybe } from './BasicTypes'
33

44
// The key must be assigned to let compare items automatically
55
export type DropdownMenuItemConstructor<I> = {
66
widget: Component
77
value?: Maybe<I>
88
key: string
9-
title: string
9+
title: Ref<string>
1010
}

src/components/DropdownButton.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export const DropdownButton = <
4343
items.find((el) => el.key == controller.key.value)
4444
)
4545
// init
46-
textFieldController.text.value = selectedItem.value?.title ?? ''
46+
textFieldController.text.value = selectedItem.value?.title.value ?? ''
4747
const isMenuOpened = ref(false)
4848

4949
const itemsDropdown = defineComponent({
@@ -91,7 +91,7 @@ export const DropdownButton = <
9191
if (item == null) return Container({})
9292
controller.value = item.value
9393
controller.key.value = item.key
94-
textFieldController.text.value = item.title
94+
textFieldController.text.value = item.title.value
9595
isMenuOpened.value = false
9696
if (onChanged && item.value) {
9797
onChanged(item.value, oldValue)

src/components/DropdownMenuItem.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, defineComponent, h } from 'vue'
1+
import { Component, defineComponent, h, Ref } from 'vue'
22
import { Alignment } from '../abstract/Alignment'
33
import { Maybe } from '../abstract/BasicTypes'
44
import { DropdownMenuItemConstructor } from '../abstract/DropdownMenuItem'
@@ -11,7 +11,7 @@ interface DropdownMenuItemI<I> {
1111
key: string
1212
onTap?: Maybe<CallableFunction>
1313
value: Maybe<I>
14-
title: string
14+
title: Ref<string>
1515
}
1616

1717
export const DropdownMenuItem = <I extends unknown>({

src/components/MutliDropdownButton.tsx renamed to src/components/MultiDropdownButton.tsx

+9-9
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { BoxDecoration } from '../abstract/BoxDecoration'
44
import { BoxShadow } from '../abstract/BoxShadow'
55
import { Colors } from '../abstract/Colors'
66
import {
7-
isMutliDropdownSelectedItem,
7+
isMultiDropdownSelectedItem,
88
MultiDropdownButtonI,
9-
MutliDropdownSelectedItemI,
10-
MutliDropdownSelectedValueI,
9+
MultiDropdownSelectedItemI,
10+
MultiDropdownSelectedValueI,
1111
} from '../abstract/DropdownFieldController'
1212
import { DropdownMenuItemConstructor } from '../abstract/DropdownMenuItem'
1313
import { EdgeInsets, EdgeInsetsStep } from '../abstract/EdgeInsets'
@@ -46,7 +46,7 @@ import { Wrap } from './Wrap'
4646
* }
4747
*
4848
*
49-
* const multiDropdownController = new MutliDropdownFieldController<IndexedText>(
49+
* const multiDropdownController = new MultiDropdownFieldController<IndexedText>(
5050
* { keyofValue: 'id' }
5151
* )
5252
* ```
@@ -81,7 +81,7 @@ export const MultiDropdownButton = <
8181
| boolean
8282
| { [prop: string]: any }
8383
| { [prop: number]: any },
84-
TKeyValue extends MutliDropdownSelectedItemI<TValue>
84+
TKeyValue extends MultiDropdownSelectedItemI<TValue>
8585
>({
8686
items,
8787
elevation,
@@ -129,18 +129,18 @@ export const MultiDropdownButton = <
129129
item,
130130
key,
131131
}: {
132-
item: MutliDropdownSelectedValueI<DropdownMenuItemConstructor<TValue>>
132+
item: MultiDropdownSelectedValueI<DropdownMenuItemConstructor<TValue>>
133133
key: TKeyValue['key'] | string
134134
}) => {
135135
const val = item.value.value
136136
if (val != null) {
137-
const selectedItem: MutliDropdownSelectedItemI<TValue> = {
137+
const selectedItem: MultiDropdownSelectedItemI<TValue> = {
138138
key,
139139
value: val,
140140
}
141141

142142
const selectedItemIndex = controller.valueIndexesByKeyMap.get(key)
143-
if (isMutliDropdownSelectedItem<TValue, TKeyValue>(selectedItem)) {
143+
if (isMultiDropdownSelectedItem<TValue, TKeyValue>(selectedItem)) {
144144
if (selectedItemIndex != null && selectedItemIndex >= 0) {
145145
controller.keyValue.splice(selectedItemIndex, 1, selectedItem)
146146
} else {
@@ -170,7 +170,7 @@ export const MultiDropdownButton = <
170170
},
171171
setup() {
172172
const effectiveItems = computed<
173-
MutliDropdownSelectedValueI<DropdownMenuItemConstructor<TValue>>[]
173+
MultiDropdownSelectedValueI<DropdownMenuItemConstructor<TValue>>[]
174174
>(() =>
175175
items
176176
.filter((el) => {

src/components/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export * from './ListViewItem'
2828
export * from './Margin'
2929
export * from './Material'
3030
export * from './MouseRegion'
31-
export * from './MutliDropdownButton'
31+
export * from './MultiDropdownButton'
3232
export * from './Navigation'
3333
export * from './Opacity'
3434
export * from './Padding'

src/example/App.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {
2626
ListView,
2727
MainAxisAlignment,
2828
MouseRegion,
29-
MutliDropdownFieldController,
29+
MultiDropdownFieldController,
3030
Padding,
3131
Row,
3232
Scaffold,
@@ -111,7 +111,7 @@ export const WrapperApp = () => {
111111
}),
112112
value: el,
113113
key: el.id.toString(),
114-
title: el.text,
114+
title: ref(el.text),
115115
})
116116
),
117117
controller: dropdownFieldController,
@@ -181,7 +181,7 @@ export const WrapperApp = () => {
181181
})
182182
),
183183
})
184-
const multiDropdownController = new MutliDropdownFieldController<IndexedText>(
184+
const multiDropdownController = new MultiDropdownFieldController<IndexedText>(
185185
{ keyofValue: 'id' }
186186
)
187187
watch(
@@ -223,7 +223,7 @@ export const WrapperApp = () => {
223223
}),
224224
value: el,
225225
key: el.id.toString(),
226-
title: el.text,
226+
title: ref(el.text),
227227
})
228228
),
229229
}),

0 commit comments

Comments
 (0)