yuyeon 0.1.0-rc.20 → 0.1.0-rc.21
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/dist/style.css +1 -1
- package/dist/yuyeon.js +1692 -1629
- package/dist/yuyeon.umd.cjs +7 -7
- package/lib/components/index.mjs +1 -0
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/panel/YDividePanel.scss +1 -1
- package/lib/components/table/YDataTableRow.mjs +5 -2
- package/lib/components/table/YDataTableRow.mjs.map +1 -1
- package/lib/components/table/composibles/header.mjs.map +1 -1
- package/lib/components/text-interpolation/YTi.mjs +46 -0
- package/lib/components/text-interpolation/YTi.mjs.map +1 -0
- package/lib/components/text-interpolation/index.mjs +2 -0
- package/lib/components/text-interpolation/index.mjs.map +1 -0
- package/lib/util/parser.mjs +31 -0
- package/lib/util/parser.mjs.map +1 -0
- package/lib/util/string.mjs +30 -0
- package/lib/util/string.mjs.map +1 -1
- package/package.json +2 -1
- package/types/components/index.d.ts +1 -0
- package/types/components/text-interpolation/YTi.d.ts +20 -0
- package/types/components/text-interpolation/index.d.ts +1 -0
- package/types/shims.d.ts +2 -1
- package/types/util/parser.d.ts +4 -0
- package/types/util/string.d.ts +4 -0
package/lib/components/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './app';\nexport * from './button';\nexport * from './input';\nexport * from './field-input';\nexport * from './textarea';\nexport * from './form';\nexport * from './progress-bar';\nexport * from './card';\nexport * from './chip';\nexport * from './switch';\nexport * from './layer';\nexport * from './dialog';\nexport * from './snackbar';\nexport * from './tooltip';\nexport * from './transitions';\nexport * from './panel';\nexport * from './tree-view';\nexport * from './list';\nexport * from './icons';\nexport * from './table';\nexport * from './menu';\nexport * from './checkbox';\nexport * from './pagination';\nexport * from './loading';\nexport * from './dropdown';\nexport * from './select';\nexport * from './tab';\nexport * from './alert';\nexport * from './divider';\nexport * from './date-picker';\nexport * from './icon';\nexport * from './badge';\nexport * from './text-ellipsis';\nexport * from './ip-field';\nexport * from './hover';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './app';\nexport * from './button';\nexport * from './input';\nexport * from './field-input';\nexport * from './textarea';\nexport * from './form';\nexport * from './progress-bar';\nexport * from './card';\nexport * from './chip';\nexport * from './switch';\nexport * from './layer';\nexport * from './dialog';\nexport * from './snackbar';\nexport * from './tooltip';\nexport * from './transitions';\nexport * from './panel';\nexport * from './tree-view';\nexport * from './list';\nexport * from './icons';\nexport * from './table';\nexport * from './menu';\nexport * from './checkbox';\nexport * from './pagination';\nexport * from './loading';\nexport * from './dropdown';\nexport * from './select';\nexport * from './tab';\nexport * from './alert';\nexport * from './divider';\nexport * from './date-picker';\nexport * from './icon';\nexport * from './badge';\nexport * from './text-ellipsis';\nexport * from './ip-field';\nexport * from './hover';\nexport * from './text-interpolation';\n"],"mappings":""}
|
|
@@ -33,6 +33,7 @@ export const YDataTableRow = defineComponent({
|
|
|
33
33
|
const {
|
|
34
34
|
columns
|
|
35
35
|
} = useHeader();
|
|
36
|
+
const selected = computed(() => props.item && isSelected(props.item));
|
|
36
37
|
function arrayClasses(classes) {
|
|
37
38
|
const ret = [];
|
|
38
39
|
if (typeof classes === 'string') {
|
|
@@ -47,7 +48,9 @@ export const YDataTableRow = defineComponent({
|
|
|
47
48
|
}
|
|
48
49
|
useRender(() => {
|
|
49
50
|
return _createVNode("tr", {
|
|
50
|
-
"class": ['y-data-table__row'
|
|
51
|
+
"class": ['y-data-table__row', {
|
|
52
|
+
'y-data-table__row--selected': selected.value
|
|
53
|
+
}],
|
|
51
54
|
"onClick": props.onClick,
|
|
52
55
|
"onContextmenu": props.onContextmenu,
|
|
53
56
|
"onDblclick": props.onDblclick
|
|
@@ -59,7 +62,7 @@ export const YDataTableRow = defineComponent({
|
|
|
59
62
|
internalItem: props.item,
|
|
60
63
|
columns: columns.value,
|
|
61
64
|
value: getPropertyFromItem(item.columns, column.key),
|
|
62
|
-
selected:
|
|
65
|
+
selected: selected.value,
|
|
63
66
|
toggleSelect
|
|
64
67
|
};
|
|
65
68
|
const classes = computed(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDataTableRow.mjs","names":["computed","defineComponent","useRender","getPropertyFromItem","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onClick","Function","onContextmenu","onDblclick","onHover","YDataTableRow","name","props","item","Object","cellProps","setup","_ref","emit","slots","isSelected","toggleSelect","columns","arrayClasses","classes","ret","push","Array","isArray","forEach","c","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","selected","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, ref } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { getPropertyFromItem } from '../../util/common';\nimport { propsFactory, bindClasses } from '../../util/vue-component';\nimport { YIconCheckbox } from '../icons';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { CellProps, DataTableItem } from './types';\n\nexport const pressYDataTableRowProps = propsFactory(\n {\n index: Number as PropType<number>,\n onClick: Function as PropType<(...args: any[]) => void>,\n onContextmenu: Function as PropType<(...args: any[]) => void>,\n onDblclick: Function as PropType<(...args: any[]) => void>,\n onHover: Function as PropType<(...args: any[]) => void>,\n },\n 'YDataTableRow',\n);\n\nexport const YDataTableRow = defineComponent({\n name: 'YDataTableRow',\n props: {\n item: Object as PropType<DataTableItem>,\n cellProps: [Object, Function] as PropType<CellProps>,\n ...pressYDataTableRowProps(),\n },\n setup(props, { emit, slots }) {\n const { isSelected, toggleSelect } = useSelection();\n const { columns } = useHeader();\n\n function arrayClasses(classes: string | string[]) {\n const ret: string[] = [];\n if (typeof classes === 'string') {\n ret.push(classes);\n }\n if (Array.isArray(classes)) {\n classes.forEach((c) => {\n if (typeof c === 'string') ret.push(c);\n });\n }\n return ret;\n }\n\n useRender(() => {\n return (\n <tr\n class={['y-data-table__row']}\n onClick={props.onClick as any}\n onContextmenu={props.onContextmenu as any}\n onDblclick={props.onDblclick as any}\n >\n {props.item &&\n columns.value.map((column, colIndex) => {\n const item = props.item!;\n const slotProps = {\n index: props.index!,\n item: props.item!.raw,\n internalItem: props.item!,\n columns: columns.value,\n value: getPropertyFromItem(item.columns, column.key),\n selected: computed(() => isSelected(item)).value,\n toggleSelect,\n };\n\n const classes = computed(() => {\n const ret: string[] = [];\n if (typeof column.classes === 'function') {\n const result = column.classes.call(null, slotProps.item, slotProps.index, column);\n if (result) {\n ret.push(...arrayClasses(result));\n }\n } else if (column.classes) {\n ret.push(...arrayClasses(column.classes))\n }\n \n return ret;\n });\n\n const cellProps =\n typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n column,\n internalItem: slotProps.internalItem,\n item: slotProps.item,\n value: slotProps.value,\n selected: slotProps.selected,\n })\n : props.cellProps;\n\n return (\n <YDataTableCell\n align={column.align}\n fixed={\n column.fixed\n ? column.lastFixed\n ? 'last'\n : 'lead'\n : undefined\n }\n fixedOffset={column.fixedOffset}\n width={column.width}\n maxWidth={column.maxWidth}\n class={[\n 'y-data-table-data',\n {\n 'y-data-table-data--select':\n column.key === 'data-table-select',\n },\n ...classes.value\n ]}\n {...cellProps}\n >\n {{\n default: () => {\n const slotName = `item.${column.key}`;\n\n if (slots[slotName]) {\n return slots[slotName]?.(slotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['item.data-table-select']?.(slotProps) ?? (\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n toggleSelect(item);\n },\n }}\n ></YIconCheckbox>\n )\n );\n }\n\n return slotProps.value;\n },\n }}\n </YDataTableCell>\n );\n })}\n </tr>\n );\n });\n },\n});\n\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\n"],"mappings":";AAAA,SAAmBA,QAAQ,EAAEC,eAAe,QAAa,KAAK;AAAC,SAEtDC,SAAS;AAAA,SACTC,mBAAmB;AAAA,SACnBC,YAAY;AAAA,SACZC,aAAa;AAAA,SACbC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,YAAY;AAGrB,OAAO,MAAMC,uBAAuB,GAAGL,YAAY,CACjD;EACEM,KAAK,EAAEC,MAA0B;EACjCC,OAAO,EAAEC,QAA8C;EACvDC,aAAa,EAAED,QAA8C;EAC7DE,UAAU,EAAEF,QAA8C;EAC1DG,OAAO,EAAEH;AACX,CAAC,EACD,eACF,CAAC;AAED,OAAO,MAAMI,aAAa,GAAGhB,eAAe,CAAC;EAC3CiB,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAEC,MAAiC;IACvCC,SAAS,EAAE,CAACD,MAAM,EAAER,QAAQ,CAAwB;IACpD,GAAGJ,uBAAuB,CAAC;EAC7B,CAAC;EACDc,KAAKA,CAACJ,KAAK,EAAAK,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC1B,MAAM;MAAEG,UAAU;MAAEC;IAAa,CAAC,GAAGpB,YAAY,CAAC,CAAC;IACnD,MAAM;MAAEqB;IAAQ,CAAC,GAAGtB,SAAS,CAAC,CAAC;IAE/B,SAASuB,YAAYA,CAACC,OAA0B,EAAE;MAChD,MAAMC,GAAa,GAAG,EAAE;MACxB,IAAI,OAAOD,OAAO,KAAK,QAAQ,EAAE;QAC/BC,GAAG,CAACC,IAAI,CAACF,OAAO,CAAC;MACnB;MACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;QAC1BA,OAAO,CAACK,OAAO,CAAEC,CAAC,IAAK;UACrB,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAEL,GAAG,CAACC,IAAI,CAACI,CAAC,CAAC;QACxC,CAAC,CAAC;MACJ;MACA,OAAOL,GAAG;IACZ;IAEA9B,SAAS,CAAC,MAAM;MACd,OAAAoC,YAAA;QAAA,SAEW,CAAC,mBAAmB,CAAC;QAAA,WACnBnB,KAAK,CAACP,OAAO;QAAA,iBACPO,KAAK,CAACL,aAAa;QAAA,cACtBK,KAAK,CAACJ;MAAU,IAE3BI,KAAK,CAACC,IAAI,IACTS,OAAO,CAACU,KAAK,CAACC,GAAG,CAAC,CAACC,MAAM,EAAEC,QAAQ,KAAK;QACtC,MAAMtB,IAAI,GAAGD,KAAK,CAACC,IAAK;QACxB,MAAMuB,SAAS,GAAG;UAChBjC,KAAK,EAAES,KAAK,CAACT,KAAM;UACnBU,IAAI,EAAED,KAAK,CAACC,IAAI,CAAEwB,GAAG;UACrBC,YAAY,EAAE1B,KAAK,CAACC,IAAK;UACzBS,OAAO,EAAEA,OAAO,CAACU,KAAK;UACtBA,KAAK,EAAEpC,mBAAmB,CAACiB,IAAI,CAACS,OAAO,EAAEY,MAAM,CAACK,GAAG,CAAC;UACpDC,QAAQ,EAAE/C,QAAQ,CAAC,MAAM2B,UAAU,CAACP,IAAI,CAAC,CAAC,CAACmB,KAAK;UAChDX;QACF,CAAC;QAED,MAAMG,OAAO,GAAG/B,QAAQ,CAAC,MAAM;UAC7B,MAAMgC,GAAa,GAAG,EAAE;UACxB,IAAI,OAAOS,MAAM,CAACV,OAAO,KAAK,UAAU,EAAE;YACxC,MAAMiB,MAAM,GAAGP,MAAM,CAACV,OAAO,CAACkB,IAAI,CAAC,IAAI,EAAEN,SAAS,CAACvB,IAAI,EAAEuB,SAAS,CAACjC,KAAK,EAAE+B,MAAM,CAAC;YACjF,IAAIO,MAAM,EAAE;cACVhB,GAAG,CAACC,IAAI,CAAC,GAAGH,YAAY,CAACkB,MAAM,CAAC,CAAC;YACnC;UACF,CAAC,MAAM,IAAIP,MAAM,CAACV,OAAO,EAAE;YACzBC,GAAG,CAACC,IAAI,CAAC,GAAGH,YAAY,CAACW,MAAM,CAACV,OAAO,CAAC,CAAC;UAC3C;UAEA,OAAOC,GAAG;QACZ,CAAC,CAAC;QAEF,MAAMV,SAAS,GACb,OAAOH,KAAK,CAACG,SAAS,KAAK,UAAU,GACjCH,KAAK,CAACG,SAAS,CAAC;UACdZ,KAAK,EAAEiC,SAAS,CAACjC,KAAK;UACtB+B,MAAM;UACNI,YAAY,EAAEF,SAAS,CAACE,YAAY;UACpCzB,IAAI,EAAEuB,SAAS,CAACvB,IAAI;UACpBmB,KAAK,EAAEI,SAAS,CAACJ,KAAK;UACtBQ,QAAQ,EAAEJ,SAAS,CAACI;QACtB,CAAC,CAAC,GACF5B,KAAK,CAACG,SAAS;QAErB,OAAAgB,YAAA,CAAAhC,cAAA,EAAA4C,WAAA;UAAA,SAEWT,MAAM,CAACU,KAAK;UAAA,SAEjBV,MAAM,CAACW,KAAK,GACRX,MAAM,CAACY,SAAS,GACd,MAAM,GACN,MAAM,GACRC,SAAS;UAAA,eAEFb,MAAM,CAACc,WAAW;UAAA,SACxBd,MAAM,CAACe,KAAK;UAAA,YACTf,MAAM,CAACgB,QAAQ;UAAA,SAClB,CACL,mBAAmB,EACnB;YACE,2BAA2B,EACzBhB,MAAM,CAACK,GAAG,KAAK;UACnB,CAAC,EACD,GAAGf,OAAO,CAACQ,KAAK;QACjB,GACGjB,SAAS;UAGXoC,OAAO,EAAEA,CAAA,KAAM;YACb,MAAMC,QAAQ,GAAI,QAAOlB,MAAM,CAACK,GAAI,EAAC;YAErC,IAAIpB,KAAK,CAACiC,QAAQ,CAAC,EAAE;cACnB,OAAOjC,KAAK,CAACiC,QAAQ,CAAC,GAAGhB,SAAS,CAAC;YACrC;YAEA,IAAIF,MAAM,CAACK,GAAG,KAAK,mBAAmB,EAAE;cACtC,OACEpB,KAAK,CAAC,wBAAwB,CAAC,GAAGiB,SAAS,CAAC,IAAAL,YAAA,CAAAjC,aAAA,EAAA6C,WAAA;gBAAA,WAE/BvB,UAAU,CAACP,IAAI,CAAC;gBAAA,YACf,CAACA,IAAI,CAACwC;cAAU;gBAExBhD,OAAO,EAAGiD,CAAa,IAAK;kBAC1BA,CAAC,CAACC,eAAe,CAAC,CAAC;kBACnBlC,YAAY,CAACR,IAAI,CAAC;gBACpB;cAAC,SAGN;YAEL;YAEA,OAAOuB,SAAS,CAACJ,KAAK;UACxB;QAAC;MAIT,CAAC,CAAC;IAGV,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"YDataTableRow.mjs","names":["computed","defineComponent","useRender","getPropertyFromItem","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onClick","Function","onContextmenu","onDblclick","onHover","YDataTableRow","name","props","item","Object","cellProps","setup","_ref","emit","slots","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { PropType, computed, defineComponent, ref } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { getPropertyFromItem } from '../../util/common';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { YIconCheckbox } from '../icons';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { CellProps, DataTableItem } from './types';\n\nexport const pressYDataTableRowProps = propsFactory(\n {\n index: Number as PropType<number>,\n onClick: Function as PropType<(...args: any[]) => void>,\n onContextmenu: Function as PropType<(...args: any[]) => void>,\n onDblclick: Function as PropType<(...args: any[]) => void>,\n onHover: Function as PropType<(...args: any[]) => void>,\n },\n 'YDataTableRow',\n);\n\nexport const YDataTableRow = defineComponent({\n name: 'YDataTableRow',\n props: {\n item: Object as PropType<DataTableItem>,\n cellProps: [Object, Function] as PropType<CellProps>,\n ...pressYDataTableRowProps(),\n },\n setup(props, { emit, slots }) {\n const { isSelected, toggleSelect } = useSelection();\n const { columns } = useHeader();\n\n const selected = computed(() => props.item && isSelected(props.item));\n\n function arrayClasses(classes: string | string[]) {\n const ret: string[] = [];\n if (typeof classes === 'string') {\n ret.push(classes);\n }\n if (Array.isArray(classes)) {\n classes.forEach((c) => {\n if (typeof c === 'string') ret.push(c);\n });\n }\n return ret;\n }\n\n useRender(() => {\n return (\n <tr\n class={[\n 'y-data-table__row',\n { 'y-data-table__row--selected': selected.value },\n ]}\n onClick={props.onClick as any}\n onContextmenu={props.onContextmenu as any}\n onDblclick={props.onDblclick as any}\n >\n {props.item &&\n columns.value.map((column, colIndex) => {\n const item = props.item!;\n const slotProps = {\n index: props.index!,\n item: props.item!.raw,\n internalItem: props.item!,\n columns: columns.value,\n value: getPropertyFromItem(item.columns, column.key),\n selected: selected.value,\n toggleSelect,\n };\n\n const classes = computed(() => {\n const ret: string[] = [];\n if (typeof column.classes === 'function') {\n const result = column.classes.call(\n null,\n slotProps.item,\n slotProps.index,\n column,\n );\n if (result) {\n ret.push(...arrayClasses(result));\n }\n } else if (column.classes) {\n ret.push(...arrayClasses(column.classes));\n }\n\n return ret;\n });\n\n const cellProps =\n typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n column,\n internalItem: slotProps.internalItem,\n item: slotProps.item,\n value: slotProps.value,\n selected: slotProps.selected,\n })\n : props.cellProps;\n\n return (\n <YDataTableCell\n align={column.align}\n fixed={\n column.fixed\n ? column.lastFixed\n ? 'last'\n : 'lead'\n : undefined\n }\n fixedOffset={column.fixedOffset}\n width={column.width}\n maxWidth={column.maxWidth}\n class={[\n 'y-data-table-data',\n {\n 'y-data-table-data--select':\n column.key === 'data-table-select',\n },\n ...classes.value,\n ]}\n {...cellProps}\n >\n {{\n default: () => {\n const slotName = `item.${column.key}`;\n\n if (slots[slotName]) {\n return slots[slotName]?.(slotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['item.data-table-select']?.(slotProps) ?? (\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n toggleSelect(item);\n },\n }}\n ></YIconCheckbox>\n )\n );\n }\n\n return slotProps.value;\n },\n }}\n </YDataTableCell>\n );\n })}\n </tr>\n );\n });\n },\n});\n\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.mjs","names":["inject","provide","ref","watchEffect","getRangeArr","propsFactory","pressDataTableHeader","headers","type","Array","default","Y_DATA_TABLE_HEADER_KEY","Symbol","for","createHeader","props","options","columns","rows","length","isArray","flat","flatMap","row","index","map","column","rowIndex","rowCount","defaultHeader","text","sortable","defaultActionHeader","width","enableSelect","value","foundIndex","findIndex","_ref","key","unshift","rowspan","splice","fixedRows","fixedOffsets","fill","forEach","_ref2","i","push","fixedOffset","Number","fixed","lastFixed","seen","Set","filtered","has","add","at","data","useHeader","Error","description"],"sources":["../../../../src/components/table/composibles/header.ts"],"sourcesContent":["import {\n DeepReadonly,\n InjectionKey,\n PropType,\n Ref,\n inject,\n provide,\n ref,\n watchEffect,\n} from 'vue';\n\nimport { getRangeArr } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\nimport { DataTableHeader, InternalDataTableHeader } from '../types';\n\nexport const pressDataTableHeader = propsFactory(\n {\n headers: {\n type: Array as PropType<DataTableHeader[] | DataTableHeader[][]>,\n default: () => [],\n },\n },\n 'YDataTable--header',\n);\n\nexport const Y_DATA_TABLE_HEADER_KEY: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>;\n columns: Ref<InternalDataTableHeader[]>;\n}> = Symbol.for('yuyeon.data-table.header');\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[] | DataTableHeader[][]>;\n};\n\nexport function createHeader(\n props: HeaderProps,\n options?: {\n enableSelect?: Ref<boolean>;\n },\n) {\n const headers = ref<InternalDataTableHeader[][]>([]);\n const columns = ref<InternalDataTableHeader[]>([]);\n\n watchEffect(() => {\n const rows =\n props.headers.length > 0\n ? Array.isArray(props.headers[0])\n ? (props.headers as DataTableHeader[][])\n : [props.headers as DataTableHeader[]]\n : [];\n const flat = rows.flatMap((row, index) =>\n row.map((column) => ({ column, rowIndex: index })),\n );\n const rowCount = rows.length;\n const defaultHeader = { text: '', sortable: false };\n const defaultActionHeader = { ...defaultHeader, width: 48 };\n\n if (options?.enableSelect?.value) {\n const foundIndex = flat.findIndex(\n ({ column }) => column.key === 'data-table-select',\n );\n if (foundIndex < 0) {\n flat.unshift({\n column: {\n ...defaultActionHeader,\n key: 'data-table-select',\n rowspan: rowCount,\n },\n rowIndex: 0,\n });\n } else {\n flat.splice(foundIndex, 1, {\n column: {\n ...defaultActionHeader,\n ...flat[foundIndex].column,\n },\n rowIndex: flat[foundIndex].rowIndex,\n });\n }\n }\n\n const fixedRows: InternalDataTableHeader[][] = getRangeArr(rowCount).map(\n () => [],\n );\n const fixedOffsets = getRangeArr(rowCount).fill(0);\n\n flat.forEach(({ column, rowIndex }) => {\n const { key } = column;\n for (\n let i = rowIndex;\n i <= rowIndex + (column.rowspan ?? 1) - 1;\n i += 1\n ) {\n fixedRows[i].push({\n ...column,\n key,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!key,\n });\n fixedOffsets[i] += Number(column.width ?? 0);\n }\n });\n\n fixedRows.forEach((row) => {\n for (let i = row.length; (i -= 1); i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true;\n return;\n }\n }\n });\n\n const seen = new Set();\n headers.value = fixedRows.map((row) => {\n const filtered = [];\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key);\n filtered.push(column);\n }\n }\n return filtered;\n });\n\n columns.value = fixedRows.at(-1) ?? [];\n });\n\n const data = { headers, columns };\n\n provide(Y_DATA_TABLE_HEADER_KEY, data);\n\n return data;\n}\n\nexport function useHeader() {\n const data = inject(Y_DATA_TABLE_HEADER_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_HEADER_KEY.description}`);\n }\n return data;\n}\n"],"mappings":"AAAA,SAKEA,MAAM,EACNC,OAAO,EACPC,GAAG,EACHC,WAAW,QACN,KAAK;AAAC,SAEJC,WAAW;AAAA,SACXC,YAAY;AAGrB,OAAO,MAAMC,oBAAoB,GAAGD,YAAY,CAC9C;EACEE,OAAO,EAAE;IACPC,IAAI,EAAEC,
|
|
1
|
+
{"version":3,"file":"header.mjs","names":["inject","provide","ref","watchEffect","getRangeArr","propsFactory","pressDataTableHeader","headers","type","Array","default","Y_DATA_TABLE_HEADER_KEY","Symbol","for","createHeader","props","options","columns","rows","length","isArray","flat","flatMap","row","index","map","column","rowIndex","rowCount","defaultHeader","text","sortable","defaultActionHeader","width","enableSelect","value","foundIndex","findIndex","_ref","key","unshift","rowspan","splice","fixedRows","fixedOffsets","fill","forEach","_ref2","i","push","fixedOffset","Number","fixed","lastFixed","seen","Set","filtered","has","add","at","data","useHeader","Error","description"],"sources":["../../../../src/components/table/composibles/header.ts"],"sourcesContent":["import {\n DeepReadonly,\n InjectionKey,\n PropType,\n Ref,\n inject,\n provide,\n ref,\n watchEffect,\n} from 'vue';\n\nimport { getRangeArr } from '../../../util/common';\nimport { propsFactory } from '../../../util/vue-component';\nimport { DataTableHeader, InternalDataTableHeader } from '../types';\n\nexport const pressDataTableHeader = propsFactory(\n {\n headers: {\n type: Array as PropType<(DataTableHeader[] | DataTableHeader[][])>,\n default: () => [],\n },\n },\n 'YDataTable--header',\n);\n\nexport const Y_DATA_TABLE_HEADER_KEY: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>;\n columns: Ref<InternalDataTableHeader[]>;\n}> = Symbol.for('yuyeon.data-table.header');\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[] | DataTableHeader[][]>;\n};\n\nexport function createHeader(\n props: HeaderProps,\n options?: {\n enableSelect?: Ref<boolean>;\n },\n) {\n const headers = ref<InternalDataTableHeader[][]>([]);\n const columns = ref<InternalDataTableHeader[]>([]);\n\n watchEffect(() => {\n const rows =\n props.headers.length > 0\n ? Array.isArray(props.headers[0])\n ? (props.headers as DataTableHeader[][])\n : [props.headers as DataTableHeader[]]\n : [];\n const flat = rows.flatMap((row, index) =>\n row.map((column) => ({ column, rowIndex: index })),\n );\n const rowCount = rows.length;\n const defaultHeader = { text: '', sortable: false };\n const defaultActionHeader = { ...defaultHeader, width: 48 };\n\n if (options?.enableSelect?.value) {\n const foundIndex = flat.findIndex(\n ({ column }) => column.key === 'data-table-select',\n );\n if (foundIndex < 0) {\n flat.unshift({\n column: {\n ...defaultActionHeader,\n key: 'data-table-select',\n rowspan: rowCount,\n },\n rowIndex: 0,\n });\n } else {\n flat.splice(foundIndex, 1, {\n column: {\n ...defaultActionHeader,\n ...flat[foundIndex].column,\n },\n rowIndex: flat[foundIndex].rowIndex,\n });\n }\n }\n\n const fixedRows: InternalDataTableHeader[][] = getRangeArr(rowCount).map(\n () => [],\n );\n const fixedOffsets = getRangeArr(rowCount).fill(0);\n\n flat.forEach(({ column, rowIndex }) => {\n const { key } = column;\n for (\n let i = rowIndex;\n i <= rowIndex + (column.rowspan ?? 1) - 1;\n i += 1\n ) {\n fixedRows[i].push({\n ...column,\n key,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!key,\n });\n fixedOffsets[i] += Number(column.width ?? 0);\n }\n });\n\n fixedRows.forEach((row) => {\n for (let i = row.length; (i -= 1); i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true;\n return;\n }\n }\n });\n\n const seen = new Set();\n headers.value = fixedRows.map((row) => {\n const filtered = [];\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key);\n filtered.push(column);\n }\n }\n return filtered;\n });\n\n columns.value = fixedRows.at(-1) ?? [];\n });\n\n const data = { headers, columns };\n\n provide(Y_DATA_TABLE_HEADER_KEY, data);\n\n return data;\n}\n\nexport function useHeader() {\n const data = inject(Y_DATA_TABLE_HEADER_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_HEADER_KEY.description}`);\n }\n return data;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createVNode as _createVNode } from "vue";
|
|
2
|
+
import { computed, defineComponent } from 'vue';
|
|
3
|
+
import { useRender } from "../../composables/component.mjs";
|
|
4
|
+
import { getObjectValueByPath } from "../../util/common.mjs";
|
|
5
|
+
import { simpleBraceParse } from "../../util/string.mjs";
|
|
6
|
+
export const YTi = defineComponent({
|
|
7
|
+
name: 'YTi',
|
|
8
|
+
props: {
|
|
9
|
+
text: String,
|
|
10
|
+
item: Object,
|
|
11
|
+
tag: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: 'span'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
setup(props, _ref) {
|
|
17
|
+
let {
|
|
18
|
+
slots
|
|
19
|
+
} = _ref;
|
|
20
|
+
const parsed = computed(() => {
|
|
21
|
+
return simpleBraceParse(props.text ?? '');
|
|
22
|
+
});
|
|
23
|
+
function getValue(key) {
|
|
24
|
+
return getObjectValueByPath(props.item, key);
|
|
25
|
+
}
|
|
26
|
+
useRender(() => {
|
|
27
|
+
const ElTag = props.tag;
|
|
28
|
+
return _createVNode(ElTag, null, {
|
|
29
|
+
default: () => [slots.default ? slots.default?.({
|
|
30
|
+
nodes: parsed.value
|
|
31
|
+
}) : parsed.value.map(frag => {
|
|
32
|
+
if (frag.type === 'text') {
|
|
33
|
+
return frag.content;
|
|
34
|
+
}
|
|
35
|
+
if (frag.type === 'variable') {
|
|
36
|
+
return slots?.[frag.content] ? slots[frag.content]?.({
|
|
37
|
+
key: frag.content,
|
|
38
|
+
value: getValue(frag.content)
|
|
39
|
+
}) : getValue(frag.content);
|
|
40
|
+
}
|
|
41
|
+
})]
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=YTi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YTi.mjs","names":["computed","defineComponent","useRender","getObjectValueByPath","simpleBraceParse","YTi","name","props","text","String","item","Object","tag","type","default","setup","_ref","slots","parsed","getValue","key","ElTag","_createVNode","nodes","value","map","frag","content"],"sources":["../../../src/components/text-interpolation/YTi.tsx"],"sourcesContent":["import { PropType, computed, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { getObjectValueByPath } from '../../util/common';\nimport { simpleBraceParse } from '../../util/string';\n\nexport const YTi = defineComponent({\n name: 'YTi',\n props: {\n text: String,\n item: Object,\n tag: {\n type: String as PropType<keyof HTMLElementTagNameMap>,\n default: 'span',\n },\n },\n setup(props, { slots }) {\n const parsed = computed(() => {\n return simpleBraceParse(props.text ?? '');\n });\n\n function getValue(key: string) {\n return getObjectValueByPath(props.item, key);\n }\n\n useRender(() => {\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\n return (\n <ElTag>\n {slots.default\n ? slots.default?.({ nodes: parsed.value })\n : parsed.value.map((frag) => {\n if (frag.type === 'text') {\n return frag.content;\n }\n if (frag.type === 'variable') {\n return slots?.[frag.content]\n ? slots[frag.content]?.({\n key: frag.content,\n value: getValue(frag.content),\n })\n : getValue(frag.content);\n }\n })}\n </ElTag>\n );\n });\n },\n});\n\nexport type YTi = InstanceType<typeof YTi>;\n"],"mappings":";AAAA,SAAmBA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAEjDC,SAAS;AAAA,SACTC,oBAAoB;AAAA,SACpBC,gBAAgB;AAEzB,OAAO,MAAMC,GAAG,GAAGJ,eAAe,CAAC;EACjCK,IAAI,EAAE,KAAK;EACXC,KAAK,EAAE;IACLC,IAAI,EAAEC,MAAM;IACZC,IAAI,EAAEC,MAAM;IACZC,GAAG,EAAE;MACHC,IAAI,EAAEJ,MAA+C;MACrDK,OAAO,EAAE;IACX;EACF,CAAC;EACDC,KAAKA,CAACR,KAAK,EAAAS,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,MAAM,GAAGlB,QAAQ,CAAC,MAAM;MAC5B,OAAOI,gBAAgB,CAACG,KAAK,CAACC,IAAI,IAAI,EAAE,CAAC;IAC3C,CAAC,CAAC;IAEF,SAASW,QAAQA,CAACC,GAAW,EAAE;MAC7B,OAAOjB,oBAAoB,CAACI,KAAK,CAACG,IAAI,EAAEU,GAAG,CAAC;IAC9C;IAEAlB,SAAS,CAAC,MAAM;MACd,MAAMmB,KAAK,GAAGd,KAAK,CAACK,GAAkC;MACtD,OAAAU,YAAA,CAAAD,KAAA;QAAAP,OAAA,EAAAA,CAAA,MAEKG,KAAK,CAACH,OAAO,GACVG,KAAK,CAACH,OAAO,GAAG;UAAES,KAAK,EAAEL,MAAM,CAACM;QAAM,CAAC,CAAC,GACxCN,MAAM,CAACM,KAAK,CAACC,GAAG,CAAEC,IAAI,IAAK;UACzB,IAAIA,IAAI,CAACb,IAAI,KAAK,MAAM,EAAE;YACxB,OAAOa,IAAI,CAACC,OAAO;UACrB;UACA,IAAID,IAAI,CAACb,IAAI,KAAK,UAAU,EAAE;YAC5B,OAAOI,KAAK,GAAGS,IAAI,CAACC,OAAO,CAAC,GACxBV,KAAK,CAACS,IAAI,CAACC,OAAO,CAAC,GAAG;cACpBP,GAAG,EAAEM,IAAI,CAACC,OAAO;cACjBH,KAAK,EAAEL,QAAQ,CAACO,IAAI,CAACC,OAAO;YAC9B,CAAC,CAAC,GACFR,QAAQ,CAACO,IAAI,CAACC,OAAO,CAAC;UAC5B;QACF,CAAC,CAAC;MAAA;IAGZ,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/text-interpolation/index.ts"],"sourcesContent":["export * from './YTi';\r\n"],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function simpleBraceParse(input) {
|
|
2
|
+
const pattern = /\{([^{}]+)\}/g;
|
|
3
|
+
const results = [];
|
|
4
|
+
let match;
|
|
5
|
+
let pointer = 0;
|
|
6
|
+
while ((match = pattern.exec(input)) !== null) {
|
|
7
|
+
const variable = match[1];
|
|
8
|
+
const start = match.index;
|
|
9
|
+
const end = pattern.lastIndex;
|
|
10
|
+
if (start > 0) {
|
|
11
|
+
const prevText = input.substring(pointer, start);
|
|
12
|
+
results.push({
|
|
13
|
+
type: 'text',
|
|
14
|
+
content: prevText
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
if (variable.trim()) {
|
|
18
|
+
results.push({
|
|
19
|
+
type: 'variable',
|
|
20
|
+
content: variable.trim()
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
pointer = end;
|
|
24
|
+
}
|
|
25
|
+
results.push({
|
|
26
|
+
type: 'text',
|
|
27
|
+
content: input.substring(pointer, input.length)
|
|
28
|
+
});
|
|
29
|
+
return results;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=parser.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.mjs","names":["simpleBraceParse","input","pattern","results","match","pointer","exec","variable","start","index","end","lastIndex","prevText","substring","push","type","content","trim","length"],"sources":["../../src/util/parser.ts"],"sourcesContent":["export function simpleBraceParse(input: string) {\r\n const pattern = /\\{([^{}]+)\\}/g;\r\n const results = [];\r\n let match;\r\n let pointer = 0;\r\n\r\n while ((match = pattern.exec(input)) !== null) {\r\n const variable = match[1];\r\n const start = match.index;\r\n const end = pattern.lastIndex;\r\n if (start > 0) {\r\n const prevText = input.substring(pointer, start);\r\n results.push({\r\n type: 'text',\r\n content: prevText,\r\n });\r\n }\r\n if (variable.trim()) {\r\n results.push({\r\n type: 'variable',\r\n content: variable.trim(),\r\n });\r\n }\r\n\r\n pointer = end;\r\n }\r\n\r\n results.push({\r\n type: 'text',\r\n content: input.substring(pointer, input.length),\r\n });\r\n\r\n return results;\r\n}\r\n"],"mappings":"AAAA,OAAO,SAASA,gBAAgBA,CAACC,KAAa,EAAE;EAC9C,MAAMC,OAAO,GAAG,eAAe;EAC/B,MAAMC,OAAO,GAAG,EAAE;EAClB,IAAIC,KAAK;EACT,IAAIC,OAAO,GAAG,CAAC;EAEf,OAAO,CAACD,KAAK,GAAGF,OAAO,CAACI,IAAI,CAACL,KAAK,CAAC,MAAM,IAAI,EAAE;IAC7C,MAAMM,QAAQ,GAAGH,KAAK,CAAC,CAAC,CAAC;IACzB,MAAMI,KAAK,GAAGJ,KAAK,CAACK,KAAK;IACzB,MAAMC,GAAG,GAAGR,OAAO,CAACS,SAAS;IAC7B,IAAIH,KAAK,GAAG,CAAC,EAAE;MACb,MAAMI,QAAQ,GAAGX,KAAK,CAACY,SAAS,CAACR,OAAO,EAAEG,KAAK,CAAC;MAChDL,OAAO,CAACW,IAAI,CAAC;QACXC,IAAI,EAAE,MAAM;QACZC,OAAO,EAAEJ;MACX,CAAC,CAAC;IACJ;IACA,IAAIL,QAAQ,CAACU,IAAI,CAAC,CAAC,EAAE;MACnBd,OAAO,CAACW,IAAI,CAAC;QACXC,IAAI,EAAE,UAAU;QAChBC,OAAO,EAAET,QAAQ,CAACU,IAAI,CAAC;MACzB,CAAC,CAAC;IACJ;IAEAZ,OAAO,GAAGK,GAAG;EACf;EAEAP,OAAO,CAACW,IAAI,CAAC;IACXC,IAAI,EAAE,MAAM;IACZC,OAAO,EAAEf,KAAK,CAACY,SAAS,CAACR,OAAO,EAAEJ,KAAK,CAACiB,MAAM;EAChD,CAAC,CAAC;EAEF,OAAOf,OAAO;AAChB"}
|
package/lib/util/string.mjs
CHANGED
|
@@ -36,4 +36,34 @@ export function randomCharOne(str) {
|
|
|
36
36
|
}
|
|
37
37
|
return '';
|
|
38
38
|
}
|
|
39
|
+
export function simpleBraceParse(input) {
|
|
40
|
+
const pattern = /\{([^{}]+)\}/g;
|
|
41
|
+
const results = [];
|
|
42
|
+
let match;
|
|
43
|
+
let pointer = 0;
|
|
44
|
+
while ((match = pattern.exec(input)) !== null) {
|
|
45
|
+
const variable = match[1];
|
|
46
|
+
const start = match.index;
|
|
47
|
+
const end = pattern.lastIndex;
|
|
48
|
+
if (start > 0) {
|
|
49
|
+
const prevText = input.substring(pointer, start);
|
|
50
|
+
results.push({
|
|
51
|
+
type: 'text',
|
|
52
|
+
content: prevText
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (variable.trim()) {
|
|
56
|
+
results.push({
|
|
57
|
+
type: 'variable',
|
|
58
|
+
content: variable.trim()
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
pointer = end;
|
|
62
|
+
}
|
|
63
|
+
results.push({
|
|
64
|
+
type: 'text',
|
|
65
|
+
content: input.substring(pointer, input.length)
|
|
66
|
+
});
|
|
67
|
+
return results;
|
|
68
|
+
}
|
|
39
69
|
//# sourceMappingURL=string.mjs.map
|
package/lib/util/string.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.mjs","names":["camelToPascal","str","charAt","toUpperCase","slice","toKebabCase","from","arguments","length","undefined","res","index","char","charCode","charCodeAt","toLowerCase","kebabToCamel","randomCharOne","Math","floor","random"],"sources":["../../src/util/string.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"string.mjs","names":["camelToPascal","str","charAt","toUpperCase","slice","toKebabCase","from","arguments","length","undefined","res","index","char","charCode","charCodeAt","toLowerCase","kebabToCamel","randomCharOne","Math","floor","random","simpleBraceParse","input","pattern","results","match","pointer","exec","variable","start","end","lastIndex","prevText","substring","push","type","content","trim"],"sources":["../../src/util/string.ts"],"sourcesContent":["export function camelToPascal(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function toKebabCase(str: string, from: 'camel' | 'pascal' = 'camel') {\n let res = '';\n for (let index = 0; index < str.length; index += 1) {\n const char = str[index];\n const charCode = char.charCodeAt(0);\n if (charCode >= 65 && charCode <= 90) {\n res += `${\n index === 0 && from === 'camel' ? '' : '-'\n }${char.toLowerCase()}`;\n } else {\n res += char;\n }\n }\n return res;\n}\n\nexport function kebabToCamel(str: string) {\n let res = '';\n let index = 0;\n while (index < str.length) {\n const char = str[index];\n if (char === '-') {\n index += 1;\n res += str[index].toUpperCase();\n } else {\n res += char;\n }\n index += 1;\n }\n return res;\n}\n\nexport function randomCharOne(str: string) {\n if (str) {\n return str.charAt(Math.floor(Math.random() * str.length));\n }\n return '';\n}\n\nexport function simpleBraceParse(input: string) {\n const pattern = /\\{([^{}]+)\\}/g;\n const results = [];\n let match;\n let pointer = 0;\n\n while ((match = pattern.exec(input)) !== null) {\n const variable = match[1];\n const start = match.index;\n const end = pattern.lastIndex;\n if (start > 0) {\n const prevText = input.substring(pointer, start);\n results.push({\n type: 'text',\n content: prevText,\n });\n }\n if (variable.trim()) {\n results.push({\n type: 'variable',\n content: variable.trim(),\n });\n }\n\n pointer = end;\n }\n\n results.push({\n type: 'text',\n content: input.substring(pointer, input.length),\n });\n\n return results;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yuyeon",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.21",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"UI Library",
|
|
6
6
|
"Vue"
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"module": "./lib/util/index.mjs"
|
|
43
43
|
},
|
|
44
44
|
"./components/*": "./lib/components/*/index.mjs",
|
|
45
|
+
"./shims": "./types/shims.d.ts",
|
|
45
46
|
"./types/*": "./types/*",
|
|
46
47
|
"./*": "./*"
|
|
47
48
|
},
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
|
|
3
|
+
export declare const YTi: import('vue').DefineComponent<{
|
|
4
|
+
text: StringConstructor;
|
|
5
|
+
item: ObjectConstructor;
|
|
6
|
+
tag: {
|
|
7
|
+
type: PropType<keyof HTMLElementTagNameMap>;
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
}, void, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
11
|
+
text: StringConstructor;
|
|
12
|
+
item: ObjectConstructor;
|
|
13
|
+
tag: {
|
|
14
|
+
type: PropType<keyof HTMLElementTagNameMap>;
|
|
15
|
+
default: string;
|
|
16
|
+
};
|
|
17
|
+
}>>, {
|
|
18
|
+
tag: keyof HTMLElementTagNameMap;
|
|
19
|
+
}, {}>;
|
|
20
|
+
export type YTi = InstanceType<typeof YTi>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './YTi';
|
package/types/shims.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { YAlert, YApp, YBadge, YButton, YCard, YCardBody, YCardFooter, YCardHeader, YCheckbox, YChip, YDataTable, YDataTableServer, YDateCalendar, YDatePicker, YDialog, YDividePanel, YDivider, YDropdown, YExpandHTransition, YExpandVTransition, YFieldInput, YForm, YHover, YIcon, YInput, YInputCheckbox, YIpv4Field, YLayer, YList, YListItem, YMenu, YMonthPicker, YPagination, YProgressBar, YSelect, YSnackbar, YSpinnerRing, YSwitch, YTab, YTable, YTabs, YTextarea, YTooltip, YTreeView, YTreeViewNode } from 'yuyeon/components';
|
|
1
|
+
import { YAlert, YApp, YBadge, YButton, YCard, YCardBody, YCardFooter, YCardHeader, YCheckbox, YChip, YDataTable, YDataTableServer, YDateCalendar, YDatePicker, YDialog, YDividePanel, YDivider, YDropdown, YExpandHTransition, YExpandVTransition, YFieldInput, YForm, YHover, YIcon, YInput, YInputCheckbox, YIpv4Field, YLayer, YList, YListItem, YMenu, YMonthPicker, YPagination, YProgressBar, YSelect, YSnackbar, YSpinnerRing, YSwitch, YTab, YTable, YTabs, YTextarea, YTooltip, YTreeView, YTreeViewNode, YTi } from 'yuyeon/components';
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
declare module '@vue/runtime-core' {
|
|
@@ -49,5 +49,6 @@ declare module '@vue/runtime-core' {
|
|
|
49
49
|
YBadge: typeof YBadge;
|
|
50
50
|
YIpv4Field: typeof YIpv4Field;
|
|
51
51
|
YHover: typeof YHover;
|
|
52
|
+
YTi: typeof YTi;
|
|
52
53
|
}
|
|
53
54
|
}
|
package/types/util/string.d.ts
CHANGED
|
@@ -2,3 +2,7 @@ export declare function camelToPascal(str: string): string;
|
|
|
2
2
|
export declare function toKebabCase(str: string, from?: 'camel' | 'pascal'): string;
|
|
3
3
|
export declare function kebabToCamel(str: string): string;
|
|
4
4
|
export declare function randomCharOne(str: string): string;
|
|
5
|
+
export declare function simpleBraceParse(input: string): {
|
|
6
|
+
type: string;
|
|
7
|
+
content: string;
|
|
8
|
+
}[];
|