יחידה:ארגז חול/עלי
מראה
ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:ארגז חול/עלי/תיעוד
--------------------------------------------------------------------------------
-- This module implements {{משתמש:עלי/תבנית:הדגמה}}
--------------------------------------------------------------------------------
require('Module:No globals')
-- Box class
local Box = {}
function Box.new(frame, args)
args = args or {}
local borderColor = args.borderColor or '#A2A9B1'
local backgroundColor = args.backgroundColor or '#FBFBFB'
local separatorColor = args.separatorColor or args.borderColor or '#1E90FF'
local iconSize = args.iconSize or '45px'
local iconLink = args.iconLink or ''
local root = mw.html.create('div')
root
:addClass('box__container')
:css('display', 'grid')
:css('grid-auto-flow', 'column')
:css('grid-template-rows', 'auto auto')
:css('grid-auto-columns', 'auto 7.5em')
:css('background-color', backgroundColor)
:css('border', '0.063em ' .. borderColor .. ' solid')
:css('border-radius', '1em 1em 1em 0')
:css('border-right', '0.625em ' .. borderColor .. ' solid')
local boxHeader = root:tag('div')
boxHeader
:addClass('box__header')
:css('display', 'flex')
:css('align-items', 'center')
if args.icon then
local boxIcon = boxHeader:tag('div')
boxIcon
:addClass('box__icon')
:css('padding', '0.063em')
:css('padding-left', '0.313em')
:wikitext('[[קובץ:' .. args.icon .. '|' .. iconSize .. '|קישור=' .. iconLink .. ']]')
end
local boxTitle = boxHeader:tag('div')
boxTitle
:addClass('box__title')
:css('flex', '1')
:css('padding', '0.625em')
:css('padding-left', '0.313em')
:wikitext(args.title)
if args.description then
boxHeader
:css('border-bottom', '0.063em ' .. separatorColor .. ' solid')
local boxFooter = root:tag('div')
boxFooter
:addClass('box__footer')
:css('font-size', '90%')
:css('padding', '0 0.625em')
:wikitext(args.description)
end
if args.buttons then
local boxSpacer = root:tag('div')
boxSpacer
:addClass('box__spacer')
local boxCorner = root:tag('div')
boxCorner
:addClass('box__corner')
:css('display', 'flex')
:css('align-items', 'flex-end')
:css('justify-content', 'center')
:css('border-color', borderColor)
:css('border-width', '0.063em 0.188em 0 0')
:css('border-style', 'solid')
:css('border-top-right-radius', '1.875em 1.875em')
:css('border-bottom-right-radius', '0.063em 0.063em')
:css('text-align', 'center')
:css('font-size', '90%')
:css('padding', '0.125em 0.625em')
:css('white-space', 'no-wrap')
local boxButtons = boxCorner:tag('div')
boxButtons
:addClass('box__buttons')
:wikitext(args.buttons)
end
return tostring(root)
end
-- Exports
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
-- translate arguments
local translatedArgs = {};
for k,v in pairs(args) do
if mw.ustring.match(k, '[א-ת]') ~=nil then
-- title basic details
local enKey = mw.ustring.gsub( k, 'כותרת', 'title' )
enKey = mw.ustring.gsub( enKey, 'הסבר', 'description' )
enKey = mw.ustring.gsub( enKey, 'קישור תמונה', 'iconLink' )
enKey = mw.ustring.gsub( enKey, 'גודל', 'iconSize' )
enKey = mw.ustring.gsub( enKey, 'תמונה', 'icon' )
enKey = mw.ustring.gsub( enKey, 'צבע מפריד', 'separatorColor' )
enKey = mw.ustring.gsub( enKey, 'צבע רקע', 'backgroundColor' )
enKey = mw.ustring.gsub( enKey, 'צבע', 'borderColor' )
enKey = mw.ustring.gsub( enKey, 'כפתורים', 'buttons' )
enKey = mw.ustring.gsub( enKey, 'מחלקה', 'class' )
translatedArgs[enKey] = v
else
translatedArgs[k] = v
end
end
return Box.new(frame, translatedArgs)
end
return p